softcover 0.0.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (716) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.pull_requests/1371777843 +0 -0
  4. data/.pull_requests/1371928784 +0 -0
  5. data/.pull_requests/1372807241 +0 -0
  6. data/.pull_requests/1374784202 +0 -0
  7. data/.pull_requests/1375325174 +0 -0
  8. data/.pull_requests/1375410822 +0 -0
  9. data/.pull_requests/1375469799 +0 -0
  10. data/.pull_requests/1375490251 +0 -0
  11. data/.pull_requests/1375493726 +0 -0
  12. data/.pull_requests/1375496302 +0 -0
  13. data/.pull_requests/1375496370 +0 -0
  14. data/.pull_requests/1375576640 +0 -0
  15. data/.pull_requests/1375841865 +0 -0
  16. data/.pull_requests/1376353301 +0 -0
  17. data/.pull_requests/1376358293 +0 -0
  18. data/.pull_requests/1376358392 +0 -0
  19. data/.pull_requests/1376451118 +0 -0
  20. data/.pull_requests/1376508357 +0 -0
  21. data/.pull_requests/1376513848 +0 -0
  22. data/.pull_requests/1376626000 +0 -0
  23. data/.pull_requests/1376626358 +0 -0
  24. data/.pull_requests/1376694273 +0 -0
  25. data/.pull_requests/1376696608 +0 -0
  26. data/.pull_requests/1376701133 +0 -0
  27. data/.pull_requests/1376705147 +0 -0
  28. data/.pull_requests/1377192571 +0 -0
  29. data/.pull_requests/1377195255 +0 -0
  30. data/.pull_requests/1377227817 +0 -0
  31. data/.pull_requests/1378780517 +0 -0
  32. data/.pull_requests/1379022091 +0 -0
  33. data/.pull_requests/1379023124 +0 -0
  34. data/.pull_requests/1379355960 +0 -0
  35. data/.pull_requests/1379457178 +0 -0
  36. data/.pull_requests/1379471050 +0 -0
  37. data/.pull_requests/1379630778 +0 -0
  38. data/.pull_requests/1380079375 +0 -0
  39. data/.pull_requests/1380081971 +0 -0
  40. data/.pull_requests/1380222458 +0 -0
  41. data/.pull_requests/1380229616 +0 -0
  42. data/.pull_requests/1380321946 +0 -0
  43. data/.pull_requests/1380587638 +0 -0
  44. data/.pull_requests/1380673383 +0 -0
  45. data/.pull_requests/1380675541 +0 -0
  46. data/.pull_requests/1380676529 +0 -0
  47. data/.pull_requests/1380944160 +0 -0
  48. data/.pull_requests/1381001404 +0 -0
  49. data/.pull_requests/1381001955 +0 -0
  50. data/.pull_requests/1381005206 +0 -0
  51. data/.pull_requests/1381103407 +0 -0
  52. data/.pull_requests/1381265319 +0 -0
  53. data/.pull_requests/1381276823 +0 -0
  54. data/.pull_requests/1381344368 +0 -0
  55. data/.pull_requests/1381385299 +0 -0
  56. data/.pull_requests/1381429963 +0 -0
  57. data/.pull_requests/1381532321 +0 -0
  58. data/.pull_requests/1381635684 +0 -0
  59. data/.pull_requests/1381875886 +0 -0
  60. data/.pull_requests/1382040914 +0 -0
  61. data/.pull_requests/1382056382 +0 -0
  62. data/.pull_requests/1382229425 +0 -0
  63. data/.pull_requests/1382501299 +0 -0
  64. data/.pull_requests/1382559045 +0 -0
  65. data/.pull_requests/1382569908 +0 -0
  66. data/.pull_requests/1382643470 +0 -0
  67. data/.pull_requests/1382660994 +0 -0
  68. data/.pull_requests/1382815660 +0 -0
  69. data/.pull_requests/1383162273 +0 -0
  70. data/.pull_requests/1383274302 +0 -0
  71. data/.pull_requests/1383274901 +0 -0
  72. data/.pull_requests/1383336387 +0 -0
  73. data/.pull_requests/1383420874 +0 -0
  74. data/.pull_requests/1383707748 +0 -0
  75. data/.pull_requests/1384207054 +0 -0
  76. data/.pull_requests/1384304643 +0 -0
  77. data/.rspec +1 -0
  78. data/.ruby-gemset +1 -0
  79. data/.ruby-version +1 -0
  80. data/Gemfile +12 -1
  81. data/LICENSE.txt +2 -2
  82. data/README.md +25 -8
  83. data/Rakefile +1 -0
  84. data/bin/sc +4 -0
  85. data/bin/softcover +4 -0
  86. data/lib/softcover.rb +59 -2
  87. data/lib/softcover/book.rb +190 -0
  88. data/lib/softcover/book_manifest.rb +237 -0
  89. data/lib/softcover/builder.rb +51 -0
  90. data/lib/softcover/builders/epub.rb +436 -0
  91. data/lib/softcover/builders/html.rb +214 -0
  92. data/lib/softcover/builders/mobi.rb +30 -0
  93. data/lib/softcover/builders/pdf.rb +110 -0
  94. data/lib/softcover/builders/preview.rb +34 -0
  95. data/lib/softcover/builders/utils/page.js +62 -0
  96. data/lib/softcover/cli.rb +236 -0
  97. data/lib/softcover/client.rb +113 -0
  98. data/lib/softcover/commands/auth.rb +18 -0
  99. data/lib/softcover/commands/build.rb +51 -0
  100. data/lib/softcover/commands/deployment.rb +42 -0
  101. data/lib/softcover/commands/deployment_spec.rb +21 -0
  102. data/lib/softcover/commands/epub_validator.rb +32 -0
  103. data/lib/softcover/commands/generator.rb +148 -0
  104. data/lib/softcover/commands/opener.rb +13 -0
  105. data/lib/softcover/commands/publisher.rb +106 -0
  106. data/lib/softcover/commands/server.rb +46 -0
  107. data/lib/softcover/config.rb +58 -0
  108. data/lib/softcover/formats.rb +5 -0
  109. data/lib/softcover/mathjax.rb +75 -0
  110. data/lib/softcover/output.rb +39 -0
  111. data/lib/softcover/rails/railtie.rb +9 -0
  112. data/lib/softcover/sanitizer.rb +41 -0
  113. data/lib/softcover/server/app.rb +101 -0
  114. data/lib/softcover/server/assets/bg.gif +0 -0
  115. data/lib/softcover/server/assets/icons.png +0 -0
  116. data/lib/softcover/server/assets/main.css +189 -0
  117. data/lib/softcover/server/assets/underscore-min.js +6 -0
  118. data/lib/softcover/server/assets/underscore-min.map +1 -0
  119. data/lib/softcover/server/views/book.html.erb +54 -0
  120. data/lib/softcover/server/views/main.js.erb +58 -0
  121. data/lib/softcover/template/.softcover-deploy +6 -0
  122. data/lib/softcover/template/Book.txt +9 -0
  123. data/lib/softcover/template/book.tex +21 -0
  124. data/lib/softcover/template/book.yml.erb +11 -0
  125. data/lib/softcover/template/chapters/a_chapter.md +118 -0
  126. data/lib/softcover/template/chapters/a_chapter.tex +191 -0
  127. data/lib/softcover/template/chapters/another_chapter.md +5 -0
  128. data/lib/softcover/template/chapters/another_chapter.tex +4 -0
  129. data/lib/softcover/template/chapters/preface.md +3 -0
  130. data/lib/softcover/template/chapters/preface.tex +3 -0
  131. data/lib/softcover/template/chapters/yet_another_chapter.md +3 -0
  132. data/lib/softcover/template/chapters/yet_another_chapter.tex +6 -0
  133. data/lib/softcover/template/custom.sty +16 -0
  134. data/lib/softcover/template/epub/OEBPS/styles/.gitkeep +0 -0
  135. data/lib/softcover/template/epub/OEBPS/styles/epub.css +10 -0
  136. data/lib/softcover/template/epub/OEBPS/styles/page-template.xpgt +49 -0
  137. data/lib/softcover/template/framed.sty +548 -0
  138. data/lib/softcover/template/generated_polytex/.gitkeep +0 -0
  139. data/lib/softcover/template/gitignore +32 -0
  140. data/lib/softcover/template/html/.gitkeep +0 -0
  141. data/lib/softcover/template/html/MathJax/MathJax.js +30 -0
  142. data/lib/softcover/template/html/MathJax/config/TeX-AMS-MML_SVG.js +68 -0
  143. data/lib/softcover/template/html/MathJax/config/TeX-AMS_HTML.js +59 -0
  144. data/lib/softcover/template/html/MathJax/extensions/FontWarnings.js +16 -0
  145. data/lib/softcover/template/html/MathJax/extensions/HTML-CSS/handle-floats.js +16 -0
  146. data/lib/softcover/template/html/MathJax/extensions/HelpDialog.js +16 -0
  147. data/lib/softcover/template/html/MathJax/extensions/MathEvents.js +16 -0
  148. data/lib/softcover/template/html/MathJax/extensions/MathML/content-mathml.js +16 -0
  149. data/lib/softcover/template/html/MathJax/extensions/MathMenu.js +16 -0
  150. data/lib/softcover/template/html/MathJax/extensions/MathZoom.js +16 -0
  151. data/lib/softcover/template/html/MathJax/extensions/Safe.js +16 -0
  152. data/lib/softcover/template/html/MathJax/extensions/TeX/AMScd.js +16 -0
  153. data/lib/softcover/template/html/MathJax/extensions/TeX/AMSmath.js +16 -0
  154. data/lib/softcover/template/html/MathJax/extensions/TeX/AMSsymbols.js +16 -0
  155. data/lib/softcover/template/html/MathJax/extensions/TeX/HTML.js +16 -0
  156. data/lib/softcover/template/html/MathJax/extensions/TeX/action.js +16 -0
  157. data/lib/softcover/template/html/MathJax/extensions/TeX/autobold.js +16 -0
  158. data/lib/softcover/template/html/MathJax/extensions/TeX/autoload-all.js +16 -0
  159. data/lib/softcover/template/html/MathJax/extensions/TeX/bbox.js +16 -0
  160. data/lib/softcover/template/html/MathJax/extensions/TeX/begingroup.js +16 -0
  161. data/lib/softcover/template/html/MathJax/extensions/TeX/boldsymbol.js +16 -0
  162. data/lib/softcover/template/html/MathJax/extensions/TeX/cancel.js +16 -0
  163. data/lib/softcover/template/html/MathJax/extensions/TeX/color.js +16 -0
  164. data/lib/softcover/template/html/MathJax/extensions/TeX/enclose.js +16 -0
  165. data/lib/softcover/template/html/MathJax/extensions/TeX/extpfeil.js +16 -0
  166. data/lib/softcover/template/html/MathJax/extensions/TeX/mathchoice.js +16 -0
  167. data/lib/softcover/template/html/MathJax/extensions/TeX/mhchem.js +16 -0
  168. data/lib/softcover/template/html/MathJax/extensions/TeX/newcommand.js +16 -0
  169. data/lib/softcover/template/html/MathJax/extensions/TeX/noErrors.js +16 -0
  170. data/lib/softcover/template/html/MathJax/extensions/TeX/noUndefined.js +16 -0
  171. data/lib/softcover/template/html/MathJax/extensions/TeX/unicode.js +16 -0
  172. data/lib/softcover/template/html/MathJax/extensions/TeX/verb.js +16 -0
  173. data/lib/softcover/template/html/MathJax/extensions/asciimath2jax.js +16 -0
  174. data/lib/softcover/template/html/MathJax/extensions/jsMath2jax.js +16 -0
  175. data/lib/softcover/template/html/MathJax/extensions/mml2jax.js +16 -0
  176. data/lib/softcover/template/html/MathJax/extensions/tex2jax.js +16 -0
  177. data/lib/softcover/template/html/MathJax/extensions/toMathML.js +16 -0
  178. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff +0 -0
  179. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff +0 -0
  180. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff +0 -0
  181. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff +0 -0
  182. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff +0 -0
  183. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff +0 -0
  184. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff +0 -0
  185. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff +0 -0
  186. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff +0 -0
  187. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff +0 -0
  188. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff +0 -0
  189. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff +0 -0
  190. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff +0 -0
  191. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff +0 -0
  192. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff +0 -0
  193. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff +0 -0
  194. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff +0 -0
  195. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff +0 -0
  196. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff +0 -0
  197. data/lib/softcover/template/html/MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff +0 -0
  198. data/lib/softcover/template/html/MathJax/images/CloseX-31.png +0 -0
  199. data/lib/softcover/template/html/MathJax/images/MenuArrow-15.png +0 -0
  200. data/lib/softcover/template/html/MathJax/jax/element/mml/jax.js +16 -0
  201. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/Arrows.js +16 -0
  202. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/BasicLatin.js +16 -0
  203. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/CombDiacritMarks.js +16 -0
  204. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/CombDiactForSymbols.js +16 -0
  205. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/Dingbats.js +16 -0
  206. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/GeneralPunctuation.js +16 -0
  207. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/GeometricShapes.js +16 -0
  208. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/GreekAndCoptic.js +16 -0
  209. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/Latin1Supplement.js +16 -0
  210. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/LetterlikeSymbols.js +16 -0
  211. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/MathOperators.js +16 -0
  212. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/MiscMathSymbolsA.js +16 -0
  213. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/MiscMathSymbolsB.js +16 -0
  214. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/MiscSymbolsAndArrows.js +16 -0
  215. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/MiscTechnical.js +16 -0
  216. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/SpacingModLetters.js +16 -0
  217. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/SuppMathOperators.js +16 -0
  218. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/SupplementalArrowsA.js +16 -0
  219. data/lib/softcover/template/html/MathJax/jax/element/mml/optable/SupplementalArrowsB.js +16 -0
  220. data/lib/softcover/template/html/MathJax/jax/input/AsciiMath/config.js +16 -0
  221. data/lib/softcover/template/html/MathJax/jax/input/AsciiMath/jax.js +16 -0
  222. data/lib/softcover/template/html/MathJax/jax/input/MathML/config.js +16 -0
  223. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/a.js +16 -0
  224. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/b.js +16 -0
  225. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/c.js +16 -0
  226. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/d.js +16 -0
  227. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/e.js +16 -0
  228. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/f.js +16 -0
  229. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/fr.js +16 -0
  230. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/g.js +16 -0
  231. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/h.js +16 -0
  232. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/i.js +16 -0
  233. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/j.js +16 -0
  234. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/k.js +16 -0
  235. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/l.js +16 -0
  236. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/m.js +16 -0
  237. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/n.js +16 -0
  238. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/o.js +16 -0
  239. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/opf.js +16 -0
  240. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/p.js +16 -0
  241. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/q.js +16 -0
  242. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/r.js +16 -0
  243. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/s.js +16 -0
  244. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/scr.js +16 -0
  245. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/t.js +16 -0
  246. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/u.js +16 -0
  247. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/v.js +16 -0
  248. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/w.js +16 -0
  249. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/x.js +16 -0
  250. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/y.js +16 -0
  251. data/lib/softcover/template/html/MathJax/jax/input/MathML/entities/z.js +16 -0
  252. data/lib/softcover/template/html/MathJax/jax/input/MathML/jax.js +16 -0
  253. data/lib/softcover/template/html/MathJax/jax/input/TeX/config.js +16 -0
  254. data/lib/softcover/template/html/MathJax/jax/input/TeX/jax.js +16 -0
  255. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/annotation-xml.js +16 -0
  256. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/maction.js +16 -0
  257. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/menclose.js +16 -0
  258. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/mglyph.js +16 -0
  259. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/mmultiscripts.js +16 -0
  260. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/ms.js +16 -0
  261. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/mtable.js +16 -0
  262. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/autoload/multiline.js +16 -0
  263. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/config.js +16 -0
  264. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/AlphaPresentForms.js +16 -0
  265. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/Arrows.js +16 -0
  266. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/BBBold.js +16 -0
  267. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/BoldFraktur.js +16 -0
  268. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/BoxDrawing.js +16 -0
  269. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/CombDiacritMarks.js +16 -0
  270. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/CombDiactForSymbols.js +16 -0
  271. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/ControlPictures.js +16 -0
  272. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/CurrencySymbols.js +16 -0
  273. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/Cyrillic.js +16 -0
  274. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/EnclosedAlphanum.js +16 -0
  275. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/GeneralPunctuation.js +16 -0
  276. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/GeometricShapes.js +16 -0
  277. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/GreekAndCoptic.js +16 -0
  278. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/GreekBold.js +16 -0
  279. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/GreekSSBold.js +16 -0
  280. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/IPAExtensions.js +16 -0
  281. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/Latin1Supplement.js +16 -0
  282. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/LatinExtendedA.js +16 -0
  283. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/LatinExtendedAdditional.js +16 -0
  284. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/LatinExtendedB.js +16 -0
  285. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/LatinExtendedD.js +16 -0
  286. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/LetterlikeSymbols.js +16 -0
  287. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/Main.js +16 -0
  288. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MathBold.js +16 -0
  289. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MathOperators.js +16 -0
  290. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MathSSBold.js +16 -0
  291. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MiscMathSymbolsA.js +16 -0
  292. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MiscMathSymbolsB.js +16 -0
  293. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MiscSymbols.js +16 -0
  294. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/MiscTechnical.js +16 -0
  295. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/NumberForms.js +16 -0
  296. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/PhoneticExtensions.js +16 -0
  297. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/SpacingModLetters.js +16 -0
  298. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/SuperAndSubscripts.js +16 -0
  299. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Bold/SuppMathOperators.js +16 -0
  300. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/AlphaPresentForms.js +16 -0
  301. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/BasicLatin.js +16 -0
  302. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/BoxDrawing.js +16 -0
  303. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/CombDiactForSymbols.js +16 -0
  304. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/ControlPictures.js +16 -0
  305. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/CurrencySymbols.js +16 -0
  306. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/Cyrillic.js +16 -0
  307. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/EnclosedAlphanum.js +16 -0
  308. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/GeneralPunctuation.js +16 -0
  309. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/GreekAndCoptic.js +16 -0
  310. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/GreekBoldItalic.js +16 -0
  311. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/GreekSSBoldItalic.js +16 -0
  312. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/IPAExtensions.js +16 -0
  313. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/Latin1Supplement.js +16 -0
  314. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/LatinExtendedA.js +16 -0
  315. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/LatinExtendedAdditional.js +16 -0
  316. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/LatinExtendedB.js +16 -0
  317. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/LetterlikeSymbols.js +16 -0
  318. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/Main.js +16 -0
  319. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/MathBoldItalic.js +16 -0
  320. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/MathBoldScript.js +16 -0
  321. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/MathOperators.js +16 -0
  322. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/MathSSItalicBold.js +16 -0
  323. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/BoldItalic/SpacingModLetters.js +16 -0
  324. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/AlphaPresentForms.js +16 -0
  325. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/BoxDrawing.js +16 -0
  326. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/CombDiactForSymbols.js +16 -0
  327. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/ControlPictures.js +16 -0
  328. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/CurrencySymbols.js +16 -0
  329. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/Cyrillic.js +16 -0
  330. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/EnclosedAlphanum.js +16 -0
  331. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/GeneralPunctuation.js +16 -0
  332. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/GreekAndCoptic.js +16 -0
  333. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/GreekItalic.js +16 -0
  334. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/IPAExtensions.js +16 -0
  335. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/Latin1Supplement.js +16 -0
  336. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/LatinExtendedA.js +16 -0
  337. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/LatinExtendedAdditional.js +16 -0
  338. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/LatinExtendedB.js +16 -0
  339. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/LetterlikeSymbols.js +16 -0
  340. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/Main.js +16 -0
  341. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/MathItalic.js +16 -0
  342. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/MathOperators.js +16 -0
  343. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/MathSSItalic.js +16 -0
  344. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/MathScript.js +16 -0
  345. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/SpacingModLetters.js +16 -0
  346. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Italic/ij.js +16 -0
  347. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/AlphaPresentForms.js +16 -0
  348. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Arrows.js +16 -0
  349. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/BBBold.js +16 -0
  350. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/BlockElements.js +16 -0
  351. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/BoldFraktur.js +16 -0
  352. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/BoxDrawing.js +16 -0
  353. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/CJK.js +16 -0
  354. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/CombDiacritMarks.js +16 -0
  355. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/CombDiactForSymbols.js +16 -0
  356. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/ControlPictures.js +16 -0
  357. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/CurrencySymbols.js +16 -0
  358. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Cyrillic.js +16 -0
  359. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Dingbats.js +16 -0
  360. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/EnclosedAlphanum.js +16 -0
  361. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Fraktur.js +16 -0
  362. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GeneralPunctuation.js +16 -0
  363. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GeometricShapes.js +16 -0
  364. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GreekAndCoptic.js +16 -0
  365. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GreekBold.js +16 -0
  366. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GreekBoldItalic.js +16 -0
  367. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GreekItalic.js +16 -0
  368. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GreekSSBold.js +16 -0
  369. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/GreekSSBoldItalic.js +16 -0
  370. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Hiragana.js +16 -0
  371. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/IPAExtensions.js +16 -0
  372. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Latin1Supplement.js +16 -0
  373. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/LatinExtendedA.js +16 -0
  374. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/LatinExtendedAdditional.js +16 -0
  375. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/LatinExtendedB.js +16 -0
  376. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/LatinExtendedD.js +16 -0
  377. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/LetterlikeSymbols.js +16 -0
  378. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Main.js +16 -0
  379. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathBold.js +16 -0
  380. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathBoldItalic.js +16 -0
  381. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathBoldScript.js +16 -0
  382. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathItalic.js +16 -0
  383. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathOperators.js +16 -0
  384. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathSS.js +16 -0
  385. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathSSBold.js +16 -0
  386. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathSSItalic.js +16 -0
  387. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathSSItalicBold.js +16 -0
  388. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathScript.js +16 -0
  389. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MathTT.js +16 -0
  390. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MiscMathSymbolsA.js +16 -0
  391. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MiscMathSymbolsB.js +16 -0
  392. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MiscSymbols.js +16 -0
  393. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MiscSymbolsAndArrows.js +16 -0
  394. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/MiscTechnical.js +16 -0
  395. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/NumberForms.js +16 -0
  396. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/PhoneticExtensions.js +16 -0
  397. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/SpacingModLetters.js +16 -0
  398. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/Specials.js +16 -0
  399. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/SuperAndSubscripts.js +16 -0
  400. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/SuppMathOperators.js +16 -0
  401. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/SupplementalArrowsA.js +16 -0
  402. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/SupplementalArrowsB.js +16 -0
  403. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/General/Regular/ij.js +16 -0
  404. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsD/Bold/All.js +16 -0
  405. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsD/Regular/All.js +16 -0
  406. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsD/Regular/Main.js +16 -0
  407. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsSm/Bold/All.js +16 -0
  408. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsSm/Regular/All.js +16 -0
  409. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsSm/Regular/Main.js +16 -0
  410. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUp/Bold/All.js +16 -0
  411. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUp/Regular/All.js +16 -0
  412. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUp/Regular/Main.js +16 -0
  413. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUpD/Bold/All.js +16 -0
  414. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUpD/Regular/All.js +16 -0
  415. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUpD/Regular/Main.js +16 -0
  416. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUpSm/Bold/All.js +16 -0
  417. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUpSm/Regular/All.js +16 -0
  418. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/IntegralsUpSm/Regular/Main.js +16 -0
  419. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Bold/All.js +16 -0
  420. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Bold/Main.js +16 -0
  421. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Bold/PrivateUse.js +16 -0
  422. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/BoldItalic/All.js +16 -0
  423. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/BoldItalic/Main.js +16 -0
  424. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/BoldItalic/PrivateUse.js +16 -0
  425. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Italic/All.js +16 -0
  426. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Italic/Main.js +16 -0
  427. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Italic/PrivateUse.js +16 -0
  428. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Regular/All.js +16 -0
  429. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Regular/Main.js +16 -0
  430. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/NonUnicode/Regular/PrivateUse.js +16 -0
  431. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeFiveSym/Regular/All.js +16 -0
  432. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeFiveSym/Regular/Main.js +16 -0
  433. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeFourSym/Bold/Main.js +16 -0
  434. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeFourSym/Regular/All.js +16 -0
  435. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeFourSym/Regular/Main.js +16 -0
  436. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeOneSym/Bold/All.js +16 -0
  437. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeOneSym/Bold/Main.js +16 -0
  438. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeOneSym/Regular/All.js +16 -0
  439. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeOneSym/Regular/Main.js +16 -0
  440. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeThreeSym/Bold/Main.js +16 -0
  441. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeThreeSym/Regular/All.js +16 -0
  442. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeThreeSym/Regular/Main.js +16 -0
  443. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeTwoSym/Bold/Main.js +16 -0
  444. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeTwoSym/Regular/All.js +16 -0
  445. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/SizeTwoSym/Regular/Main.js +16 -0
  446. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/Variants/Bold/All.js +16 -0
  447. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/Variants/Bold/Main.js +16 -0
  448. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/Variants/Regular/All.js +16 -0
  449. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/Variants/Regular/Main.js +16 -0
  450. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/fontdata-1.0.js +16 -0
  451. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/fontdata-beta.js +16 -0
  452. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/fontdata-extra.js +16 -0
  453. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/STIX/fontdata.js +16 -0
  454. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js +16 -0
  455. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js +16 -0
  456. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js +16 -0
  457. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js +16 -0
  458. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js +16 -0
  459. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js +16 -0
  460. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js +16 -0
  461. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js +16 -0
  462. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js +16 -0
  463. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js +16 -0
  464. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js +16 -0
  465. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js +16 -0
  466. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js +16 -0
  467. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js +16 -0
  468. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js +16 -0
  469. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js +16 -0
  470. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js +16 -0
  471. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js +16 -0
  472. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js +16 -0
  473. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js +16 -0
  474. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js +16 -0
  475. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js +16 -0
  476. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js +16 -0
  477. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js +16 -0
  478. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js +16 -0
  479. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js +16 -0
  480. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js +16 -0
  481. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js +16 -0
  482. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js +16 -0
  483. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js +16 -0
  484. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js +16 -0
  485. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js +16 -0
  486. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js +16 -0
  487. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js +16 -0
  488. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js +16 -0
  489. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js +16 -0
  490. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js +16 -0
  491. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js +16 -0
  492. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js +16 -0
  493. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js +16 -0
  494. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js +16 -0
  495. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js +16 -0
  496. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js +16 -0
  497. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js +16 -0
  498. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js +16 -0
  499. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js +16 -0
  500. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js +16 -0
  501. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js +16 -0
  502. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js +16 -0
  503. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js +16 -0
  504. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js +16 -0
  505. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js +16 -0
  506. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js +16 -0
  507. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js +16 -0
  508. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js +16 -0
  509. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js +16 -0
  510. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js +16 -0
  511. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js +16 -0
  512. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js +16 -0
  513. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js +16 -0
  514. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js +16 -0
  515. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js +16 -0
  516. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js +16 -0
  517. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js +16 -0
  518. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js +16 -0
  519. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js +16 -0
  520. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js +16 -0
  521. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js +16 -0
  522. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js +16 -0
  523. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js +16 -0
  524. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js +16 -0
  525. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js +16 -0
  526. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js +16 -0
  527. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js +16 -0
  528. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js +16 -0
  529. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js +16 -0
  530. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js +16 -0
  531. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js +16 -0
  532. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js +16 -0
  533. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js +16 -0
  534. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js +16 -0
  535. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js +16 -0
  536. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js +16 -0
  537. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js +16 -0
  538. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js +16 -0
  539. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js +16 -0
  540. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/WinChrome/Regular/Main.js +16 -0
  541. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/AMS.js +16 -0
  542. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Bold.js +16 -0
  543. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Main.js +16 -0
  544. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js +16 -0
  545. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/fonts/TeX/fontdata.js +16 -0
  546. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/imageFonts.js +16 -0
  547. data/lib/softcover/template/html/MathJax/jax/output/HTML-CSS/jax.js +16 -0
  548. data/lib/softcover/template/html/MathJax/jax/output/NativeMML/config.js +16 -0
  549. data/lib/softcover/template/html/MathJax/jax/output/NativeMML/jax.js +16 -0
  550. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/annotation-xml.js +16 -0
  551. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/maction.js +16 -0
  552. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/menclose.js +16 -0
  553. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/mglyph.js +16 -0
  554. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/mmultiscripts.js +16 -0
  555. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/ms.js +16 -0
  556. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/mtable.js +16 -0
  557. data/lib/softcover/template/html/MathJax/jax/output/SVG/autoload/multiline.js +16 -0
  558. data/lib/softcover/template/html/MathJax/jax/output/SVG/config.js +16 -0
  559. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/Arrows.js +16 -0
  560. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/BoxDrawing.js +16 -0
  561. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/CombDiacritMarks.js +16 -0
  562. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/Dingbats.js +16 -0
  563. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/EnclosedAlphanum.js +16 -0
  564. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeneralPunctuation.js +16 -0
  565. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeometricShapes.js +16 -0
  566. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GreekAndCoptic.js +16 -0
  567. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/Latin1Supplement.js +16 -0
  568. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/LatinExtendedA.js +16 -0
  569. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/LetterlikeSymbols.js +16 -0
  570. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/Main.js +16 -0
  571. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MathOperators.js +16 -0
  572. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js +16 -0
  573. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscSymbols.js +16 -0
  574. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscTechnical.js +16 -0
  575. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/PUA.js +16 -0
  576. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/SpacingModLetters.js +16 -0
  577. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/SuppMathOperators.js +16 -0
  578. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Caligraphic/Bold/Main.js +16 -0
  579. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Caligraphic/Regular/Main.js +16 -0
  580. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/BasicLatin.js +16 -0
  581. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Main.js +16 -0
  582. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Other.js +16 -0
  583. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/PUA.js +16 -0
  584. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/BasicLatin.js +16 -0
  585. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Main.js +16 -0
  586. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Other.js +16 -0
  587. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/PUA.js +16 -0
  588. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/Arrows.js +16 -0
  589. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/BasicLatin.js +16 -0
  590. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/CombDiacritMarks.js +16 -0
  591. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/CombDiactForSymbols.js +16 -0
  592. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/GeneralPunctuation.js +16 -0
  593. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/GeometricShapes.js +16 -0
  594. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/GreekAndCoptic.js +16 -0
  595. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/Latin1Supplement.js +16 -0
  596. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LatinExtendedA.js +16 -0
  597. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LatinExtendedB.js +16 -0
  598. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LetterlikeSymbols.js +16 -0
  599. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/Main.js +16 -0
  600. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MathOperators.js +16 -0
  601. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscMathSymbolsA.js +16 -0
  602. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscSymbols.js +16 -0
  603. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscTechnical.js +16 -0
  604. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SpacingModLetters.js +16 -0
  605. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SuppMathOperators.js +16 -0
  606. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SupplementalArrowsA.js +16 -0
  607. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/BasicLatin.js +16 -0
  608. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/CombDiacritMarks.js +16 -0
  609. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/GeneralPunctuation.js +16 -0
  610. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/GreekAndCoptic.js +16 -0
  611. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LatinExtendedA.js +16 -0
  612. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LatinExtendedB.js +16 -0
  613. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LetterlikeSymbols.js +16 -0
  614. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/Main.js +16 -0
  615. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/MathOperators.js +16 -0
  616. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/BasicLatin.js +16 -0
  617. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/CombDiacritMarks.js +16 -0
  618. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/GeometricShapes.js +16 -0
  619. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js +16 -0
  620. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LatinExtendedA.js +16 -0
  621. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LatinExtendedB.js +16 -0
  622. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js +16 -0
  623. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/Main.js +16 -0
  624. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/MathOperators.js +16 -0
  625. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/MiscSymbols.js +16 -0
  626. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/SpacingModLetters.js +16 -0
  627. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/SuppMathOperators.js +16 -0
  628. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Math/BoldItalic/Main.js +16 -0
  629. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Math/Italic/Main.js +16 -0
  630. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/BasicLatin.js +16 -0
  631. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js +16 -0
  632. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/Main.js +16 -0
  633. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/Other.js +16 -0
  634. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/BasicLatin.js +16 -0
  635. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js +16 -0
  636. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/Main.js +16 -0
  637. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/Other.js +16 -0
  638. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/BasicLatin.js +16 -0
  639. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js +16 -0
  640. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/Main.js +16 -0
  641. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/Other.js +16 -0
  642. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Script/Regular/BasicLatin.js +16 -0
  643. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Script/Regular/Main.js +16 -0
  644. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Size1/Regular/Main.js +16 -0
  645. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js +16 -0
  646. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Size3/Regular/Main.js +16 -0
  647. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Size4/Regular/Main.js +16 -0
  648. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/BasicLatin.js +16 -0
  649. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js +16 -0
  650. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/Main.js +16 -0
  651. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/Other.js +16 -0
  652. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/fontdata-extra.js +16 -0
  653. data/lib/softcover/template/html/MathJax/jax/output/SVG/fonts/TeX/fontdata.js +16 -0
  654. data/lib/softcover/template/html/MathJax/jax/output/SVG/jax.js +16 -0
  655. data/lib/softcover/template/html/MathJax/localization/de/FontWarnings.js +16 -0
  656. data/lib/softcover/template/html/MathJax/localization/de/HTML-CSS.js +16 -0
  657. data/lib/softcover/template/html/MathJax/localization/de/HelpDialog.js +16 -0
  658. data/lib/softcover/template/html/MathJax/localization/de/MathML.js +16 -0
  659. data/lib/softcover/template/html/MathJax/localization/de/MathMenu.js +16 -0
  660. data/lib/softcover/template/html/MathJax/localization/de/TeX.js +16 -0
  661. data/lib/softcover/template/html/MathJax/localization/de/de.js +16 -0
  662. data/lib/softcover/template/html/MathJax/localization/en/FontWarnings.js +16 -0
  663. data/lib/softcover/template/html/MathJax/localization/en/HTML-CSS.js +16 -0
  664. data/lib/softcover/template/html/MathJax/localization/en/HelpDialog.js +16 -0
  665. data/lib/softcover/template/html/MathJax/localization/en/MathML.js +16 -0
  666. data/lib/softcover/template/html/MathJax/localization/en/MathMenu.js +16 -0
  667. data/lib/softcover/template/html/MathJax/localization/en/TeX.js +16 -0
  668. data/lib/softcover/template/html/MathJax/localization/en/en.js +16 -0
  669. data/lib/softcover/template/html/MathJax/localization/fr/FontWarnings.js +16 -0
  670. data/lib/softcover/template/html/MathJax/localization/fr/HTML-CSS.js +16 -0
  671. data/lib/softcover/template/html/MathJax/localization/fr/HelpDialog.js +16 -0
  672. data/lib/softcover/template/html/MathJax/localization/fr/MathML.js +16 -0
  673. data/lib/softcover/template/html/MathJax/localization/fr/MathMenu.js +16 -0
  674. data/lib/softcover/template/html/MathJax/localization/fr/TeX.js +16 -0
  675. data/lib/softcover/template/html/MathJax/localization/fr/fr.js +16 -0
  676. data/lib/softcover/template/html/jquery/1.10.2/jquery-1.10.2.js +9789 -0
  677. data/lib/softcover/template/html/jquery/1.10.2/jquery-1.10.2.min.map +1 -0
  678. data/lib/softcover/template/html/stylesheets/.gitkeep +0 -0
  679. data/lib/softcover/template/html/stylesheets/softcover.css +417 -0
  680. data/lib/softcover/template/images/.gitkeep +0 -0
  681. data/lib/softcover/template/images/2011_michael_hartl.png +0 -0
  682. data/lib/softcover/template/images/cover.pdf +0 -0
  683. data/lib/softcover/template/images/cover.png +0 -0
  684. data/lib/softcover/template/images/figures/.gitkeep +0 -0
  685. data/lib/softcover/template/polytexnic_commands.sty +1 -0
  686. data/lib/softcover/template/simple_book.tex +14 -0
  687. data/lib/softcover/template/softcover.sty +130 -0
  688. data/lib/softcover/template/upquote.sty +76 -0
  689. data/lib/softcover/uploader.rb +81 -0
  690. data/lib/softcover/utils.rb +131 -0
  691. data/lib/softcover/version.rb +1 -1
  692. data/softcover.gemspec +34 -16
  693. data/spec/app_spec.rb +100 -0
  694. data/spec/auth_spec.rb +44 -0
  695. data/spec/book_manifest_spec.rb +58 -0
  696. data/spec/book_spec.rb +33 -0
  697. data/spec/builder_spec.rb +10 -0
  698. data/spec/builders/epub_spec.rb +203 -0
  699. data/spec/builders/html_spec.rb +136 -0
  700. data/spec/builders/mobi_spec.rb +47 -0
  701. data/spec/builders/pdf_spec.rb +80 -0
  702. data/spec/builders/preview_spec.rb +60 -0
  703. data/spec/cli_spec.rb +130 -0
  704. data/spec/commands/build_spec.rb +50 -0
  705. data/spec/commands/generator_spec.rb +260 -0
  706. data/spec/commands/opener_spec.rb +17 -0
  707. data/spec/commands/publisher_spec.rb +108 -0
  708. data/spec/commands/server_spec.rb +21 -0
  709. data/spec/mathjax_spec.rb +61 -0
  710. data/spec/output_spec.rb +41 -0
  711. data/spec/sanitizer_spec.rb +35 -0
  712. data/spec/spec_helper.rb +52 -0
  713. data/spec/support/exist_matcher.rb +7 -0
  714. data/spec/webmock_helpers.rb +183 -0
  715. data/tasks/run_specs.rake +5 -0
  716. metadata +982 -12
@@ -0,0 +1,237 @@
1
+ require 'ostruct'
2
+
3
+ class Softcover::BookManifest < OpenStruct
4
+ class NotFound < StandardError
5
+ def message
6
+ "Invalid book directory, no manifest file found!"
7
+ end
8
+ end
9
+
10
+ class Chapter < OpenStruct
11
+ def path
12
+ File.join('chapters', slug + '.tex')
13
+ end
14
+
15
+ def fragment_name
16
+ "#{slug}_fragment.html"
17
+ end
18
+
19
+ def fragment_path
20
+ File.join('html', fragment_name)
21
+ end
22
+
23
+ def nodes
24
+ @nodes ||= []
25
+ end
26
+
27
+ # Returns a chapter heading for use in the navigation menu.
28
+ def menu_heading
29
+ raw_html = Polytexnic::Pipeline.new(title).to_html
30
+ html = Nokogiri::HTML(raw_html).at_css('p').inner_html
31
+ chapter_number.zero? ? html : "Chapter #{chapter_number}: #{html}"
32
+ end
33
+
34
+ def to_hash
35
+ marshal_dump.merge({ menu_heading: menu_heading })
36
+ end
37
+ end
38
+
39
+ class Section < OpenStruct
40
+ end
41
+
42
+ MD_PATH = 'Book.txt'
43
+ YAML_PATH = "book.yml"
44
+
45
+ def initialize(options = {})
46
+ @source = options[:source] || :polytex
47
+ yaml_attrs = read_from_yml
48
+ attrs = case
49
+ when polytex? then yaml_attrs
50
+ when markdown? then yaml_attrs.merge(read_from_md)
51
+ else
52
+ self.class.not_found!
53
+ end.symbolize_keys!
54
+
55
+ marshal_load attrs
56
+
57
+ if polytex?
58
+ tex_filename = filename + '.tex'
59
+ self.chapters = []
60
+ self.frontmatter = []
61
+ base_contents = File.read(tex_filename)
62
+ if base_contents.match(/frontmatter/)
63
+ @frontmatter = true
64
+ chapters.push Chapter.new(slug: 'frontmatter',
65
+ title: 'Frontmatter',
66
+ sections: nil,
67
+ chapter_number: 0)
68
+ end
69
+ raw_frontmatter = remove_frontmatter(base_contents, frontmatter)
70
+ if frontmatter?
71
+ self.frontmatter = chapter_includes(raw_frontmatter)
72
+ else
73
+ self.frontmatter = []
74
+ end
75
+ self.author = base_contents.scan(/^\s*\\author\{(.*?)\}/).flatten.first
76
+ chapter_includes(base_contents).each_with_index do |name, i|
77
+ slug = File.basename(name, '.*')
78
+ title_regex = /^\s*\\chapter{(.*)}/
79
+ content = File.read(File.join('chapters', slug + '.tex'))
80
+ title = content[title_regex, 1]
81
+ j = 0
82
+ sections = content.scan(/^\s*\\section{(.*)}/).flatten.map do |name|
83
+ Section.new(name: name, section_number: j += 1)
84
+ end
85
+ chapters.push Chapter.new(slug: slug,
86
+ title: title,
87
+ sections: sections,
88
+ chapter_number: i + 1)
89
+ end
90
+ end
91
+ verify_paths! if options[:verify_paths]
92
+ end
93
+
94
+ # Returns an array of the chapters to include.
95
+ def chapter_includes(string)
96
+ chapter_regex = /^\s*\\include\{chapters\/(.*?)\}/
97
+ string.scan(chapter_regex).flatten
98
+ end
99
+
100
+ # Removes frontmatter.
101
+ # The frontmatter shouldn't be included in the chapter slugs, so we remove
102
+ # it. For example, in
103
+ # \frontmatter
104
+ # \maketitle
105
+ # \tableofcontents
106
+ # % List frontmatter sections here (preface, foreword, etc.).
107
+ # \include{chapters/preface}
108
+ # \mainmatter
109
+ # % List chapters here in the order they should appear in the book.
110
+ # \include{chapters/a_chapter}
111
+ # we don't want to include the preface.
112
+ def remove_frontmatter(base_contents, frontmatter)
113
+ base_contents.gsub!(/\\frontmatter(.*)\\mainmatter/m, '')
114
+ $1
115
+ end
116
+
117
+ # Returns true if the book has frontmatter.
118
+ def frontmatter?
119
+ @frontmatter
120
+ end
121
+
122
+ # Returns the first full chapter.
123
+ # This arranges to skip the frontmatter, if any.
124
+ def first_chapter
125
+ frontmatter? ? chapters[1] : chapters[0]
126
+ end
127
+
128
+ # Returns true if converting Markdown source.
129
+ def markdown?
130
+ @source == :markdown || @source == :md
131
+ end
132
+ alias :md? :markdown?
133
+
134
+ # Returns true if converting PolyTeX source.
135
+ def polytex?
136
+ @source == :polytex
137
+ end
138
+
139
+ # Returns an iterator the chapter file paths.
140
+ def chapter_file_paths
141
+ pdf_chapter_names.map do |name|
142
+ file_path = case
143
+ when markdown? then File.join("chapters", "#{name}.md")
144
+ when polytex? then File.join("chapters", "#{name}.tex")
145
+ end
146
+
147
+ yield file_path if block_given?
148
+
149
+ file_path
150
+ end
151
+ end
152
+
153
+ # Return chapters for the PDF.
154
+ # The frontmatter pseudo-chapter exists for the sake of HTML/EPUB/MOBI, so
155
+ # it's not returned as part of the chapters.
156
+ def pdf_chapter_names
157
+ chaps = chapters.reject { |chapter| chapter.slug.match(/frontmatter/) }.
158
+ collect(&:slug)
159
+ frontmatter? ? frontmatter + chaps : chaps
160
+ end
161
+
162
+ def find_chapter_by_slug(slug)
163
+ chapters.find { |chapter| chapter.slug == slug }
164
+ end
165
+
166
+ def find_chapter_by_number(number)
167
+ chapters.find { |chapter| chapter.chapter_number == number }
168
+ end
169
+
170
+ # Returns a URL for the chapter with the given number.
171
+ def url(chapter_number)
172
+ if (chapter = find_chapter_by_number(chapter_number))
173
+ chapter.slug
174
+ else
175
+ '#'
176
+ end
177
+ end
178
+
179
+ # Returns the chapter range for book previews.
180
+ # We could `eval` the range, but that would allow users to execute arbitrary
181
+ # code (maybe not a big problem on their system, but it would be a Bad Thing
182
+ # on a server).
183
+ def preview_chapter_range
184
+ first, last = epub_mobi_preview_chapter_range.split('..').map(&:to_i)
185
+ first..last
186
+ end
187
+
188
+ # Returns the chapters to use in the preview as a range.
189
+ def preview_chapters
190
+ chapters[preview_chapter_range]
191
+ end
192
+
193
+ def self.valid_directory?
194
+ [YAML_PATH, MD_PATH].any? { |f| File.exist?(f) }
195
+ end
196
+
197
+ # Changes the directory until in the book's root directory.
198
+ def self.find_book_root!
199
+ loop do
200
+ return true if valid_directory?
201
+ return not_found! if Dir.pwd == '/'
202
+ Dir.chdir '..'
203
+ end
204
+ end
205
+
206
+ def self.not_found!
207
+ raise NotFound
208
+ end
209
+
210
+ private
211
+
212
+ def read_from_yml
213
+ require 'softcover/config'
214
+ require 'yaml/store'
215
+ self.class.find_book_root!
216
+ YAML.load_file(YAML_PATH)
217
+ end
218
+
219
+ def read_from_md
220
+ self.class.find_book_root!
221
+ chapters = File.readlines(MD_PATH).select do |path|
222
+ path =~ /(.*)\.md/
223
+ end.map do |file|
224
+ Chapter.new(slug: File.basename(file.strip, '.md'))
225
+ end
226
+ { chapters: chapters, filename: MD_PATH }
227
+ end
228
+
229
+ def verify_paths!
230
+ chapter_file_paths do |chapter_path, i|
231
+ next if chapter_path =~ /frontmatter/
232
+ unless File.exist?(chapter_path)
233
+ raise "Chapter file in manifest not found in #{chapter_path}"
234
+ end
235
+ end
236
+ end
237
+ end
@@ -0,0 +1,51 @@
1
+ module Softcover
2
+ class Builder
3
+ include Softcover::Utils
4
+
5
+ attr_accessor :manifest, :built_files
6
+
7
+ def initialize
8
+ @manifest = Softcover::BookManifest.new(verify_paths: true,
9
+ source: source)
10
+ @built_files = []
11
+ write_polytexnic_commands_file
12
+ end
13
+
14
+ def build!(options={})
15
+ setup
16
+ build(options)
17
+ verify
18
+ self
19
+ end
20
+
21
+ # Returns true if we should remove the generated PolyTeX.
22
+ # This is true of Markdown books, but we can't just use `markdown?` because
23
+ # we're re-using the PolyTeX production pipeline.
24
+ def remove_polytex?
25
+ @remove_tex
26
+ end
27
+
28
+ # Removes the generated PolyTeX.
29
+ # The 'removal' actually just involves moving it to an ignored storage
30
+ # directory. This gives users the ability to inspect it if desired.
31
+ def remove_polytex!
32
+ mkdir 'generated_polytex'
33
+ FileUtils.mv(Dir.glob(path('chapters/*.tex')), 'generated_polytex')
34
+ end
35
+
36
+ def clean!; end
37
+
38
+ private
39
+ def setup; end
40
+ def verify; end
41
+
42
+ def source
43
+ Dir.glob(path('chapters/*.md')).empty? ? :polytex : :markdown
44
+ end
45
+
46
+ # Writes out the PolyTeXnic commands from polytexnic.
47
+ def write_polytexnic_commands_file
48
+ Polytexnic.write_polytexnic_style_file(Dir.pwd)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,436 @@
1
+ module Softcover
2
+ module Builders
3
+ class Epub < Builder
4
+ include Softcover::Output
5
+
6
+ def build!(options={})
7
+ @preview = options[:preview]
8
+ Softcover::Builders::Html.new.build!(preserve_tex: true)
9
+ if manifest.markdown?
10
+ self.manifest = Softcover::BookManifest.new(source: :polytex)
11
+ @remove_tex = true
12
+ end
13
+ remove_html
14
+ create_directories
15
+ write_mimetype
16
+ write_container_xml
17
+ write_toc
18
+ write_nav
19
+ copy_image_files
20
+ write_html(options)
21
+ write_contents
22
+ create_style_files
23
+ make_epub(options)
24
+ move_epub
25
+ remove_polytex! if remove_polytex?
26
+ end
27
+
28
+ # Returns true if generating a book preview.
29
+ def preview?
30
+ !!@preview
31
+ end
32
+
33
+ # Removes HTML.
34
+ # All the HTML is generated, so this clears out any unused files.
35
+ def remove_html
36
+ FileUtils.rm(Dir.glob(path('epub/OEBPS/html/*.html')))
37
+ end
38
+
39
+ def create_directories
40
+ mkdir('epub')
41
+ mkdir(path('epub/OEBPS'))
42
+ mkdir(path('epub/OEBPS/styles'))
43
+ mkdir(path('epub/META-INF'))
44
+ mkdir('ebooks')
45
+ end
46
+
47
+ # Writes the mimetype file.
48
+ # This is required by the EPUB standard.
49
+ def write_mimetype
50
+ File.write(path('epub/mimetype'), 'application/epub+zip')
51
+ end
52
+
53
+ # Writes the container XML file.
54
+ # This is required by the EPUB standard.
55
+ def write_container_xml
56
+ File.write(path('epub/META-INF/container.xml'), container_xml)
57
+ end
58
+
59
+ # Writes the content.opf file.
60
+ # This is required by the EPUB standard.
61
+ def write_contents
62
+ File.write(path('epub/OEBPS/content.opf'), content_opf)
63
+ end
64
+
65
+ # Returns the chapters to write (accounting for previews).
66
+ def chapters
67
+ preview? ? manifest.preview_chapters : manifest.chapters
68
+ end
69
+
70
+ # Writes the HTML for the EPUB.
71
+ # Included is a math detector that processes the page with MathJax
72
+ # (via page.js) so that math can be included in EPUB (and thence MOBI).
73
+ def write_html(options={})
74
+ images_dir = File.join('epub', 'OEBPS', 'images')
75
+ texmath_dir = File.join(images_dir, 'texmath')
76
+ mkdir images_dir
77
+ mkdir texmath_dir
78
+
79
+ File.write(path('epub/OEBPS/cover.html'), cover_page)
80
+
81
+ pngs = []
82
+ chapters.each_with_index do |chapter, i|
83
+ target_filename = path("epub/OEBPS/#{chapter.fragment_name}")
84
+ File.open(target_filename, 'w') do |f|
85
+ content = File.read(path("html/#{chapter.fragment_name}"))
86
+ doc = strip_attributes(Nokogiri::HTML(content))
87
+ inner_html = doc.at_css('body').children.to_xhtml
88
+ if math?(inner_html)
89
+ html = html_with_math(chapter, images_dir, texmath_dir, pngs,
90
+ options)
91
+ next if html.nil?
92
+ else
93
+ html = inner_html
94
+ end
95
+ f.write(chapter_template("Chapter #{i}", html))
96
+ end
97
+ end
98
+ # Clean up unused PNGs.
99
+ png_files = Dir[path("#{texmath_dir}/*.png")]
100
+ (png_files - pngs).each do |f|
101
+ if File.exist?(f)
102
+ puts "Removing unused PNG #{f}" unless options[:silent]
103
+ FileUtils.rm(f)
104
+ end
105
+ end
106
+ end
107
+
108
+ # Returns HTML for HTML source that includes math.
109
+ # As a side-effect, html_with_math creates PNGs corresponding to any
110
+ # math in the given source. The technique involves using PhantomJS to
111
+ # hit the HTML source for each page containing math to create SVGs
112
+ # for every math element. Since ereader support for SVGs is spotty,
113
+ # they are then converted to PNGs using Inkscape. The filenames are
114
+ # SHAs of their contents, which arranges both for unique filenames
115
+ # and for automatic disk caching.
116
+ def html_with_math(chapter, images_dir, texmath_dir, pngs, options={})
117
+ content = File.read(File.join("html", "#{chapter.slug}.html"))
118
+ pagejs = "#{File.dirname(__FILE__)}/utils/page.js"
119
+ url = "file://#{Dir.pwd}/html/#{chapter.slug}.html"
120
+ cmd = "#{phantomjs} #{pagejs} #{url}"
121
+ silence { silence_stream(STDERR) { system cmd } }
122
+ # Sometimes in tests the phantomjs_source.html file is missing.
123
+ # It shouldn't ever happen, but it does no harm to skip it.
124
+ return nil unless File.exist?('phantomjs_source.html')
125
+ raw_source = File.read('phantomjs_source.html')
126
+ source = strip_attributes(Nokogiri::HTML(raw_source))
127
+ rm 'phantomjs_source.html'
128
+ # Remove the first body div, which is the hidden MathJax SVGs
129
+ source.at_css('body div').remove
130
+ # Remove all the unneeded raw TeX displays.
131
+ source.css('script').each(&:remove)
132
+ # Remove all the MathJax preview spans.
133
+ source.css('MathJax_Preview').each(&:remove)
134
+
135
+ # Suck out all the SVGs
136
+ svgs = source.css('div#book svg')
137
+ frames = source.css('span.MathJax_SVG')
138
+ svgs.zip(frames).each do |svg, frame|
139
+ # Save the SVG file.
140
+ svg['viewBox'] = svg['viewbox']
141
+ svg.remove_attribute('viewbox')
142
+ first_child = frame.children.first
143
+ first_child.replace(svg) unless svg == first_child
144
+ output = svg.to_xhtml
145
+ svg_filename = File.join(texmath_dir, "#{digest(output)}.svg")
146
+ File.write(svg_filename, output)
147
+ # Convert to PNG.
148
+ png_filename = svg_filename.sub('.svg', '.png')
149
+ pngs << png_filename
150
+ unless File.exist?(png_filename)
151
+ unless options[:silent] || options[:quiet]
152
+ puts "Creating #{png_filename}"
153
+ end
154
+ svg_height = svg['style'].scan(/height: (.*?);/).flatten.first
155
+ scale_factor = 9 # This scale factor turns out to look good.
156
+ h = scale_factor * svg_height.to_f
157
+ cmd = "#{inkscape} -f #{svg_filename} -e #{png_filename} -h #{h}pt"
158
+ if options[:silent]
159
+ silence { silence_stream(STDERR) { system cmd } }
160
+ else
161
+ silence_stream(STDERR) { system cmd }
162
+ end
163
+ end
164
+ rm svg_filename
165
+ png = Nokogiri::XML::Node.new('img', source)
166
+ png['src'] = File.join('images', 'texmath',
167
+ File.basename(png_filename))
168
+ png['alt'] = png_filename.sub('.png', '')
169
+ svg.replace(png)
170
+ end
171
+ source.at_css('div#book').children.to_xhtml
172
+ end
173
+
174
+ # Returns the PhantomJS executable (if available).
175
+ def phantomjs
176
+ filename = `which phantomjs`.chomp
177
+ message = "Install PhantomJS (http://phantomjs.org/)"
178
+ @phantomjs ||= executable(filename, message)
179
+ end
180
+
181
+ # Returns the Inkscape executable (if available).
182
+ def inkscape
183
+ filename = '/Applications/Inkscape.app/Contents/Resources/bin/inkscape'
184
+ message = "Install Inkscape (http://inkscape.org/)"
185
+ @inkscape ||= executable(filename, message)
186
+ end
187
+
188
+ # Strip attributes that are invalid in EPUB documents.
189
+ def strip_attributes(doc)
190
+ attrs = %w[data-tralics-id data-label data-number data-chapter
191
+ role aria-readonly]
192
+ doc.tap do
193
+ attrs.each do |attr|
194
+ doc.xpath("//@#{attr}").remove
195
+ end
196
+ end
197
+ end
198
+
199
+ # Returns true if a string appears to have LaTeX math.
200
+ # We detect math via opening math commands: \(, \[, and \begin{equation}
201
+ # This gives a false positive when math is included in verbatim
202
+ # environments and nowhere else, but it does little harm (requiring only
203
+ # an unnecessary call to page.js).
204
+ def math?(string)
205
+ !!string.match(/(?:\\\(|\\\[|\\begin{equation})/)
206
+ end
207
+
208
+ def create_style_files
209
+ html_styles = File.join('html', 'stylesheets')
210
+ epub_styles = File.join('epub', 'OEBPS', 'styles')
211
+
212
+ FileUtils.cp(File.join(html_styles, 'pygments.css'), epub_styles)
213
+
214
+ # Copy over the EPUB-specific CSS.
215
+ template_dir = File.join(File.dirname(__FILE__), '..', 'template')
216
+ epub_css = File.join(template_dir, epub_styles, 'epub.css')
217
+ FileUtils.cp(epub_css, epub_styles)
218
+
219
+ # For some reason, EPUB books hate the #book ids in the stylesheet
220
+ # (i.e., such books fail to validate), so remove them.
221
+ polytexnic_css = File.read(File.join(html_styles, 'softcover.css'))
222
+ polytexnic_css.gsub!(/\s*#book\s+/, '')
223
+ File.write(File.join(epub_styles, 'softcover.css'), polytexnic_css)
224
+ end
225
+
226
+ # Copies the image files from the HTML version of the document.
227
+ # We remove PDF images, which are valid in PDF documents but not in EPUB.
228
+ def copy_image_files
229
+ FileUtils.cp_r(File.join('html', 'images'),
230
+ File.join('epub', 'OEBPS'))
231
+ File.delete(*Dir['epub/OEBPS/images/**/*.pdf'])
232
+ end
233
+
234
+ # Make the EPUB, which is basically just a zipped HTML file.
235
+ def make_epub(options={})
236
+ filename = manifest.filename
237
+ zip_filename = filename + '.zip'
238
+ base_file = "zip -X0 #{zip_filename} mimetype"
239
+ zip = "zip -rDXg9"
240
+ meta_info = "#{zip} #{zip_filename} META-INF -x \*.DS_Store -x mimetype"
241
+ main_info = "#{zip} #{zip_filename} OEBPS -x \*.DS_Store \*.gitkeep"
242
+ rename = "mv #{zip_filename} #{filename}.epub"
243
+ commands = [base_file, meta_info, main_info, rename]
244
+ command = commands.join(' && ')
245
+ Dir.chdir('epub') do
246
+ if Softcover.test? || options[:quiet] || options[:silent]
247
+ silence { system(command) }
248
+ else
249
+ system(command)
250
+ end
251
+ end
252
+ end
253
+
254
+ # Move the completed EPUB book to the `ebooks` directory.
255
+ # Note that we handle the case of a preview book as well.
256
+ def move_epub
257
+ origin = manifest.filename
258
+ target = preview? ? origin + '-preview' : origin
259
+ FileUtils.mv(File.join('epub', "#{origin}.epub"),
260
+ File.join('ebooks', "#{target}.epub"))
261
+ end
262
+
263
+ # Writes the Table of Contents.
264
+ # This is required by the EPUB standard.
265
+ def write_toc
266
+ File.write('epub/OEBPS/toc.ncx', toc_ncx)
267
+ end
268
+
269
+ # Writes the navigation file.
270
+ # This is required by the EPUB standard.
271
+ def write_nav
272
+ File.write('epub/OEBPS/nav.html', nav_html)
273
+ end
274
+
275
+ def container_xml
276
+ %(<?xml version="1.0"?>
277
+ <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
278
+ <rootfiles>
279
+ <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
280
+ </rootfiles>
281
+ </container>)
282
+ end
283
+
284
+ # Returns the content configuration file.
285
+ def content_opf
286
+ title = manifest.title
287
+ author = manifest.author
288
+ copyright = manifest.copyright
289
+ uuid = manifest.uuid
290
+ man_ch = chapters.map do |chapter|
291
+ %(<item id="#{chapter.slug}" href="#{chapter.fragment_name}" media-type="application/xhtml+xml"/>)
292
+ end
293
+ toc_ch = chapters.map do |chapter|
294
+ %(<itemref idref="#{chapter.slug}"/>)
295
+ end
296
+ image_files = Dir['epub/OEBPS/images/**/*'].select { |f| File.file?(f) }
297
+ images = image_files.map do |image|
298
+ ext = File.extname(image).sub('.', '') # e.g., 'png'
299
+ # Strip off the leading 'epub/OEBPS'.
300
+ sep = File::SEPARATOR
301
+ href = image.split(sep)[2..-1].join(sep)
302
+ # Define an id based on the filename.
303
+ # Prefix with 'img-' in case the filname starts with an
304
+ # invalid character such as a number.
305
+ label = File.basename(image).gsub('.', '-')
306
+ id = "img-#{label}"
307
+ %(<item id="#{id}" href="#{href}" media-type="image/#{ext}"/>)
308
+ end
309
+ %(<?xml version="1.0" encoding="UTF-8"?>
310
+ <package unique-identifier="BookID" version="3.0" xmlns="http://www.idpf.org/2007/opf">
311
+ <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"
312
+ xmlns:opf="http://www.idpf.org/2007/opf">
313
+ <dc:title>#{title}</dc:title>
314
+ <dc:language>en</dc:language>
315
+ <dc:rights>Copyright (c) #{copyright} #{author}</dc:rights>
316
+ <dc:creator>#{author}</dc:creator>
317
+ <dc:publisher>Softcover</dc:publisher>
318
+ <dc:identifier id="BookID">urn:uuid:#{uuid}</dc:identifier>
319
+ <meta property="dcterms:modified">#{Time.now.strftime('%Y-%m-%dT%H:%M:%S')}Z</meta>
320
+ <meta name="cover" content="img-cover-png"/>
321
+ </metadata>
322
+ <manifest>
323
+ <item href="nav.html" id="nav" media-type="application/xhtml+xml" properties="nav"/>
324
+ <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
325
+ <item id="page-template.xpgt" href="styles/page-template.xpgt" media-type="application/vnd.adobe-page-template+xml"/>
326
+ <item id="pygments.css" href="styles/pygments.css" media-type="text/css"/>
327
+ <item id="softcover.css" href="styles/softcover.css" media-type="text/css"/>
328
+ <item id="epub.css" href="styles/epub.css" media-type="text/css"/>
329
+ <item id="cover" href="cover.html" media-type="application/xhtml+xml"/>
330
+ #{man_ch.join("\n")}
331
+ #{images.join("\n")}
332
+ </manifest>
333
+ <spine toc="ncx">
334
+ <itemref idref="cover" linear="no" />
335
+ #{toc_ch.join("\n")}
336
+ </spine>
337
+ </package>
338
+ )
339
+ end
340
+
341
+ def cover_page
342
+ %(<?xml version="1.0" encoding="utf-8"?>
343
+ <!DOCTYPE html>
344
+ <html xmlns="http://www.w3.org/1999/xhtml">
345
+ <head>
346
+ <title>Cover</title>
347
+ </head>
348
+ <body>
349
+ <div id="cover">
350
+ <img width="573" height="800" src="images/cover.png" alt="cover image" />
351
+ </div>
352
+ </body>
353
+ </html>
354
+ )
355
+ end
356
+
357
+ # Returns the Table of Contents for the spine.
358
+ def toc_ncx
359
+ title = manifest.title
360
+ chapter_nav = []
361
+ offset = preview? ? manifest.preview_chapter_range.first : 0
362
+ chapters.each_with_index do |chapter, i|
363
+ n = i + offset
364
+ chapter_nav << %(<navPoint id="#{chapter.slug}" playOrder="#{n+1}">)
365
+ chapter_nav << %( <navLabel><text>#{chapter_name(n)}</text></navLabel>)
366
+ chapter_nav << %( <content src="#{chapter.fragment_name}"/>)
367
+ chapter_nav << %(</navPoint>)
368
+ end
369
+ %(<?xml version="1.0" encoding="UTF-8"?>
370
+ <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
371
+ <head>
372
+ <meta name="dtb:uid" content="d430b920-e684-11e1-aff1-0800200c9a66"/>
373
+ <meta name="dtb:depth" content="2"/>
374
+ <meta name="dtb:totalPageCount" content="0"/>
375
+ <meta name="dtb:maxPageNumber" content="0"/>
376
+ </head>
377
+ <docTitle>
378
+ <text>#{title}</text>
379
+ </docTitle>
380
+ <navMap>
381
+ #{chapter_nav.join("\n")}
382
+ </navMap>
383
+ </ncx>
384
+ )
385
+ end
386
+
387
+ def chapter_name(n)
388
+ n == 0 ? "Frontmatter" : "Chapter #{n}"
389
+ end
390
+
391
+ # Returns the nav HTML content.
392
+ def nav_html
393
+ title = manifest.title
394
+ nav_list = manifest.chapters.map do |chapter|
395
+ %(<li><a href="#{chapter.fragment_name}">#{chapter.title}</a></li>)
396
+ end
397
+ %(<?xml version="1.0" encoding="utf-8"?>
398
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
399
+ <head>
400
+ <meta charset="UTF-8" />
401
+ <title>#{title}</title>
402
+ </head>
403
+ <body>
404
+ <nav epub:type="toc">
405
+ <h1>#{title}</h1>
406
+ <ol>
407
+ #{nav_list.join("\n")}
408
+ </ol>
409
+ </nav>
410
+ </body>
411
+ </html>
412
+ )
413
+ end
414
+
415
+ # Returns the HTML template for a chapter.
416
+ def chapter_template(title, content)
417
+ %(<?xml version="1.0" encoding="utf-8"?>
418
+ <!DOCTYPE html>
419
+
420
+ <html xmlns="http://www.w3.org/1999/xhtml">
421
+ <head>
422
+ <title>#{title}</title>
423
+ <link rel="stylesheet" href="styles/pygments.css" type="text/css" />
424
+ <link rel="stylesheet" href="styles/softcover.css" type="text/css" />
425
+ <link rel="stylesheet" href="styles/epub.css" type="text/css" />
426
+ <link rel="stylesheet" type="application/vnd.adobe-page-template+xml" href="styles/page-template.xpgt" />
427
+ </head>
428
+
429
+ <body>
430
+ #{content}
431
+ </body>
432
+ </html>)
433
+ end
434
+ end
435
+ end
436
+ end