lhtml-site 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. lhtml_site-1.0.0/CHANGELOG.md +104 -0
  2. lhtml_site-1.0.0/LICENSE.md +21 -0
  3. lhtml_site-1.0.0/MANIFEST.in +7 -0
  4. lhtml_site-1.0.0/PKG-INFO +384 -0
  5. lhtml_site-1.0.0/README.md +343 -0
  6. lhtml_site-1.0.0/pyproject.toml +75 -0
  7. lhtml_site-1.0.0/setup.cfg +4 -0
  8. lhtml_site-1.0.0/src/lhtml_site/__init__.py +0 -0
  9. lhtml_site-1.0.0/src/lhtml_site/browser.py +59 -0
  10. lhtml_site-1.0.0/src/lhtml_site/build_output.py +80 -0
  11. lhtml_site-1.0.0/src/lhtml_site/configuration.py +354 -0
  12. lhtml_site-1.0.0/src/lhtml_site/configure_example.yaml +113 -0
  13. lhtml_site-1.0.0/src/lhtml_site/credits.py +198 -0
  14. lhtml_site-1.0.0/src/lhtml_site/deck.py +423 -0
  15. lhtml_site-1.0.0/src/lhtml_site/dependencies.py +358 -0
  16. lhtml_site-1.0.0/src/lhtml_site/design.py +292 -0
  17. lhtml_site-1.0.0/src/lhtml_site/design_checks.py +125 -0
  18. lhtml_site-1.0.0/src/lhtml_site/development.py +210 -0
  19. lhtml_site-1.0.0/src/lhtml_site/docs/agents.md +250 -0
  20. lhtml_site-1.0.0/src/lhtml_site/docs/development.md +98 -0
  21. lhtml_site-1.0.0/src/lhtml_site/docs/reference.md +1076 -0
  22. lhtml_site-1.0.0/src/lhtml_site/doctor.py +191 -0
  23. lhtml_site-1.0.0/src/lhtml_site/extensions.py +151 -0
  24. lhtml_site-1.0.0/src/lhtml_site/feedback.js +151 -0
  25. lhtml_site-1.0.0/src/lhtml_site/feedback.py +145 -0
  26. lhtml_site-1.0.0/src/lhtml_site/figures.py +117 -0
  27. lhtml_site-1.0.0/src/lhtml_site/filesystem.py +182 -0
  28. lhtml_site-1.0.0/src/lhtml_site/front_matter.py +36 -0
  29. lhtml_site-1.0.0/src/lhtml_site/generate.py +1012 -0
  30. lhtml_site-1.0.0/src/lhtml_site/generator_tool.py +159 -0
  31. lhtml_site-1.0.0/src/lhtml_site/headings.py +221 -0
  32. lhtml_site-1.0.0/src/lhtml_site/index_page.py +39 -0
  33. lhtml_site-1.0.0/src/lhtml_site/layout/__init__.py +12 -0
  34. lhtml_site-1.0.0/src/lhtml_site/layout/analysis.py +785 -0
  35. lhtml_site-1.0.0/src/lhtml_site/layout/build.py +318 -0
  36. lhtml_site-1.0.0/src/lhtml_site/layout/findings.py +251 -0
  37. lhtml_site-1.0.0/src/lhtml_site/layout/geometry.py +28 -0
  38. lhtml_site-1.0.0/src/lhtml_site/layout/measure.py +367 -0
  39. lhtml_site-1.0.0/src/lhtml_site/layout/page.js +1087 -0
  40. lhtml_site-1.0.0/src/lhtml_site/layout/report.py +354 -0
  41. lhtml_site-1.0.0/src/lhtml_site/layout_options.py +110 -0
  42. lhtml_site-1.0.0/src/lhtml_site/lint.py +322 -0
  43. lhtml_site-1.0.0/src/lhtml_site/logger.py +70 -0
  44. lhtml_site-1.0.0/src/lhtml_site/markdown_page.py +110 -0
  45. lhtml_site-1.0.0/src/lhtml_site/menu.py +64 -0
  46. lhtml_site-1.0.0/src/lhtml_site/pages.py +276 -0
  47. lhtml_site-1.0.0/src/lhtml_site/pdf_export.py +227 -0
  48. lhtml_site-1.0.0/src/lhtml_site/plugins/code_include.py +197 -0
  49. lhtml_site-1.0.0/src/lhtml_site/plugins/pre_include.py +20 -0
  50. lhtml_site-1.0.0/src/lhtml_site/project.py +136 -0
  51. lhtml_site-1.0.0/src/lhtml_site/report_lock.py +80 -0
  52. lhtml_site-1.0.0/src/lhtml_site/source_map.py +369 -0
  53. lhtml_site-1.0.0/src/lhtml_site/source_scan.py +202 -0
  54. lhtml_site-1.0.0/src/lhtml_site/starters/site/01_welcome/assets/diagram.svg +7 -0
  55. lhtml_site-1.0.0/src/lhtml_site/starters/site/01_welcome/index.html.j2 +18 -0
  56. lhtml_site-1.0.0/src/lhtml_site/starters/site/02_writing/index.html.j2 +20 -0
  57. lhtml_site-1.0.0/src/lhtml_site/starters/slides/01_title/index.html.j2 +10 -0
  58. lhtml_site-1.0.0/src/lhtml_site/starters/slides/02_text/index.html.j2 +14 -0
  59. lhtml_site-1.0.0/src/lhtml_site/starters/slides/03_two_columns/index.html.j2 +18 -0
  60. lhtml_site-1.0.0/src/lhtml_site/starters/slides/04_image/assets/diagram.svg +7 -0
  61. lhtml_site-1.0.0/src/lhtml_site/starters/slides/04_image/index.html.j2 +14 -0
  62. lhtml_site-1.0.0/src/lhtml_site/structure.py +84 -0
  63. lhtml_site-1.0.0/src/lhtml_site/theme.py +112 -0
  64. lhtml_site-1.0.0/src/lhtml_site/themes/slides/css/classes.css +27 -0
  65. lhtml_site-1.0.0/src/lhtml_site/themes/slides/css/code.css +71 -0
  66. lhtml_site-1.0.0/src/lhtml_site/themes/slides/css/font.css +227 -0
  67. lhtml_site-1.0.0/src/lhtml_site/themes/slides/css/icons.css +27 -0
  68. lhtml_site-1.0.0/src/lhtml_site/themes/slides/css/main.css +141 -0
  69. lhtml_site-1.0.0/src/lhtml_site/themes/slides/css/pdf_export.css +6 -0
  70. lhtml_site-1.0.0/src/lhtml_site/themes/slides/design.yaml +335 -0
  71. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/LICENSE.md +93 -0
  72. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/README.md +18 -0
  73. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Black.ttf.woff2 +0 -0
  74. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-BlackIt.ttf.woff2 +0 -0
  75. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 +0 -0
  76. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-BoldIt.ttf.woff2 +0 -0
  77. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-ExtraLight.ttf.woff2 +0 -0
  78. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-ExtraLightIt.ttf.woff2 +0 -0
  79. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-It.ttf.woff2 +0 -0
  80. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Light.ttf.woff2 +0 -0
  81. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-LightIt.ttf.woff2 +0 -0
  82. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Medium.ttf.woff2 +0 -0
  83. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-MediumIt.ttf.woff2 +0 -0
  84. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 +0 -0
  85. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Semibold.ttf.woff2 +0 -0
  86. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-SemiboldIt.ttf.woff2 +0 -0
  87. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/LICENSE.md +93 -0
  88. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/README.md +18 -0
  89. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Black.ttf.woff2 +0 -0
  90. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-BlackIt.ttf.woff2 +0 -0
  91. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Bold.ttf.woff2 +0 -0
  92. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-BoldIt.ttf.woff2 +0 -0
  93. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-ExtraLight.ttf.woff2 +0 -0
  94. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-ExtraLightIt.ttf.woff2 +0 -0
  95. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-It.ttf.woff2 +0 -0
  96. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Light.ttf.woff2 +0 -0
  97. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-LightIt.ttf.woff2 +0 -0
  98. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Regular.ttf.woff2 +0 -0
  99. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Semibold.ttf.woff2 +0 -0
  100. lhtml_site-1.0.0/src/lhtml_site/themes/slides/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-SemiboldIt.ttf.woff2 +0 -0
  101. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/left_disabled.svg +1 -0
  102. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/left_enabled.svg +1 -0
  103. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/left_hover.svg +1 -0
  104. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/menu.svg +1 -0
  105. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/menu_hover.svg +1 -0
  106. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/right_disabled.svg +1 -0
  107. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/right_enabled.svg +1 -0
  108. lhtml_site-1.0.0/src/lhtml_site/themes/slides/icons/right_hover.svg +1 -0
  109. lhtml_site-1.0.0/src/lhtml_site/themes/slides/js/menu.js +63 -0
  110. lhtml_site-1.0.0/src/lhtml_site/themes/slides/js/navigation.js +84 -0
  111. lhtml_site-1.0.0/src/lhtml_site/themes/slides/js/presentation_resize_page.js +40 -0
  112. lhtml_site-1.0.0/src/lhtml_site/themes/slides/js/readiness.js +20 -0
  113. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/contrib/auto-render.min.js +1 -0
  114. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/contrib/copy-tex.min.css +1 -0
  115. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/contrib/copy-tex.min.js +1 -0
  116. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/contrib/mathtex-script-type.min.js +1 -0
  117. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/contrib/mhchem.min.js +1 -0
  118. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/contrib/render-a11y-string.min.js +1 -0
  119. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  120. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  121. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  122. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  123. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  124. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  125. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  126. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  127. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  128. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  129. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  130. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  131. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  132. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  133. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  134. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  135. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  136. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  137. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  138. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  139. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  140. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  141. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  142. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  143. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  144. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  145. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  146. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  147. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  148. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  149. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  150. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  151. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  152. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  153. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  154. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  155. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  156. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  157. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  158. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  159. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  160. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  161. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  162. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  163. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  164. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  165. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  166. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  167. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  168. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  169. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  170. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  171. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  172. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  173. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  174. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  175. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  176. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  177. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  178. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  179. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/katex.min.css +1 -0
  180. lhtml_site-1.0.0/src/lhtml_site/themes/slides/libs/katex/katex.min.js +1 -0
  181. lhtml_site-1.0.0/src/lhtml_site/themes/slides/template/base.html +80 -0
  182. lhtml_site-1.0.0/src/lhtml_site/themes/slides/theme.yaml +11 -0
  183. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/css/classes.css +27 -0
  184. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/css/code.css +71 -0
  185. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/css/font.css +227 -0
  186. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/css/icons.css +27 -0
  187. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/css/main.css +141 -0
  188. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/css/pdf_export.css +6 -0
  189. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/design.yaml +3 -0
  190. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/LICENSE.md +93 -0
  191. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/README.md +18 -0
  192. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Black.ttf.woff2 +0 -0
  193. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-BlackIt.ttf.woff2 +0 -0
  194. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 +0 -0
  195. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-BoldIt.ttf.woff2 +0 -0
  196. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-ExtraLight.ttf.woff2 +0 -0
  197. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-ExtraLightIt.ttf.woff2 +0 -0
  198. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-It.ttf.woff2 +0 -0
  199. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Light.ttf.woff2 +0 -0
  200. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-LightIt.ttf.woff2 +0 -0
  201. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Medium.ttf.woff2 +0 -0
  202. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-MediumIt.ttf.woff2 +0 -0
  203. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 +0 -0
  204. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Semibold.ttf.woff2 +0 -0
  205. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-SemiboldIt.ttf.woff2 +0 -0
  206. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/LICENSE.md +93 -0
  207. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/README.md +18 -0
  208. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Black.ttf.woff2 +0 -0
  209. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-BlackIt.ttf.woff2 +0 -0
  210. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Bold.ttf.woff2 +0 -0
  211. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-BoldIt.ttf.woff2 +0 -0
  212. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-ExtraLight.ttf.woff2 +0 -0
  213. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-ExtraLightIt.ttf.woff2 +0 -0
  214. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-It.ttf.woff2 +0 -0
  215. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Light.ttf.woff2 +0 -0
  216. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-LightIt.ttf.woff2 +0 -0
  217. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Regular.ttf.woff2 +0 -0
  218. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Semibold.ttf.woff2 +0 -0
  219. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-SemiboldIt.ttf.woff2 +0 -0
  220. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/left_disabled.svg +1 -0
  221. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/left_enabled.svg +1 -0
  222. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/left_hover.svg +1 -0
  223. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/menu.svg +1 -0
  224. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/menu_hover.svg +1 -0
  225. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/right_disabled.svg +1 -0
  226. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/right_enabled.svg +1 -0
  227. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/icons/right_hover.svg +1 -0
  228. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/js/menu.js +62 -0
  229. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/js/navigation.js +84 -0
  230. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/js/presentation_resize_page.js +40 -0
  231. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/contrib/auto-render.min.js +1 -0
  232. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/contrib/copy-tex.min.css +1 -0
  233. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/contrib/copy-tex.min.js +1 -0
  234. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/contrib/mathtex-script-type.min.js +1 -0
  235. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/contrib/mhchem.min.js +1 -0
  236. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/contrib/render-a11y-string.min.js +1 -0
  237. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  238. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  239. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  240. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  241. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  242. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  243. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  244. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  245. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  246. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  247. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  248. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  249. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  250. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  251. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  252. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  253. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  254. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  255. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  256. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  257. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  258. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  259. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  260. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  261. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  262. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  263. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  264. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  265. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  266. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  267. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  268. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  269. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  270. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  271. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  272. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  273. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  274. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  275. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  276. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  277. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  278. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  279. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  280. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  281. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  282. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  283. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  284. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  285. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  286. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  287. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  288. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  289. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  290. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  291. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  292. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  293. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  294. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  295. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  296. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  297. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/katex.min.css +1 -0
  298. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/libs/katex/katex.min.js +1 -0
  299. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/template/base.html +76 -0
  300. lhtml_site-1.0.0/src/lhtml_site/themes/slides-pdf/theme.yaml +13 -0
  301. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/css/classes.css +50 -0
  302. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/css/code.css +71 -0
  303. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/css/font.css +227 -0
  304. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/css/icons.css +27 -0
  305. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/css/main.css +390 -0
  306. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/LICENSE.md +93 -0
  307. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/README.md +18 -0
  308. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Black.ttf.woff2 +0 -0
  309. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-BlackIt.ttf.woff2 +0 -0
  310. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 +0 -0
  311. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-BoldIt.ttf.woff2 +0 -0
  312. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-ExtraLight.ttf.woff2 +0 -0
  313. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-ExtraLightIt.ttf.woff2 +0 -0
  314. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-It.ttf.woff2 +0 -0
  315. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Light.ttf.woff2 +0 -0
  316. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-LightIt.ttf.woff2 +0 -0
  317. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Medium.ttf.woff2 +0 -0
  318. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-MediumIt.ttf.woff2 +0 -0
  319. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 +0 -0
  320. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-Semibold.ttf.woff2 +0 -0
  321. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_code_pro/WOFF2/TTF/SourceCodePro-SemiboldIt.ttf.woff2 +0 -0
  322. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/LICENSE.md +93 -0
  323. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/README.md +18 -0
  324. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Black.ttf.woff2 +0 -0
  325. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-BlackIt.ttf.woff2 +0 -0
  326. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Bold.ttf.woff2 +0 -0
  327. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-BoldIt.ttf.woff2 +0 -0
  328. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-ExtraLight.ttf.woff2 +0 -0
  329. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-ExtraLightIt.ttf.woff2 +0 -0
  330. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-It.ttf.woff2 +0 -0
  331. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Light.ttf.woff2 +0 -0
  332. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-LightIt.ttf.woff2 +0 -0
  333. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Regular.ttf.woff2 +0 -0
  334. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-Semibold.ttf.woff2 +0 -0
  335. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/fonts/source_serif_pro/WOFF2/TTF/SourceSerifPro-SemiboldIt.ttf.woff2 +0 -0
  336. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/down_enabled.svg +44 -0
  337. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/left_disabled.svg +1 -0
  338. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/left_enabled.svg +1 -0
  339. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/left_hover.svg +1 -0
  340. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/menu.svg +1 -0
  341. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/menu_hover.svg +1 -0
  342. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/right_disabled.svg +1 -0
  343. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/right_enabled.svg +1 -0
  344. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/right_hover.svg +1 -0
  345. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/icons/up_enabled.svg +44 -0
  346. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/js/menu.js +270 -0
  347. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/js/title_id.js +51 -0
  348. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/contrib/auto-render.min.js +1 -0
  349. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/contrib/copy-tex.min.css +1 -0
  350. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/contrib/copy-tex.min.js +1 -0
  351. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/contrib/mathtex-script-type.min.js +1 -0
  352. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/contrib/mhchem.min.js +1 -0
  353. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/contrib/render-a11y-string.min.js +1 -0
  354. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  355. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  356. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  357. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  358. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  359. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  360. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  361. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  362. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  363. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  364. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  365. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  366. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  367. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  368. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  369. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  370. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  371. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  372. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  373. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  374. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  375. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  376. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  377. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  378. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  379. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  380. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  381. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  382. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  383. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  384. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  385. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  386. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  387. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  388. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  389. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  390. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  391. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  392. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  393. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  394. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  395. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  396. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  397. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  398. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  399. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  400. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  401. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  402. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  403. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  404. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  405. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  406. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  407. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  408. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  409. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  410. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  411. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  412. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  413. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  414. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/katex.min.css +1 -0
  415. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/libs/katex/katex.min.js +1 -0
  416. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/template/base.html +74 -0
  417. lhtml_site-1.0.0/src/lhtml_site/themes/webpage-frame/theme.yaml +11 -0
  418. lhtml_site-1.0.0/src/lhtml_site/tracking.py +34 -0
  419. lhtml_site-1.0.0/src/lhtml_site/video_cache.py +124 -0
  420. lhtml_site-1.0.0/src/lhtml_site/video_convert/__init__.py +0 -0
  421. lhtml_site-1.0.0/src/lhtml_site/video_convert/video_convert.py +151 -0
  422. lhtml_site-1.0.0/src/lhtml_site/wrap.py +91 -0
  423. lhtml_site-1.0.0/src/lhtml_site.egg-info/PKG-INFO +384 -0
  424. lhtml_site-1.0.0/src/lhtml_site.egg-info/SOURCES.txt +459 -0
  425. lhtml_site-1.0.0/src/lhtml_site.egg-info/dependency_links.txt +1 -0
  426. lhtml_site-1.0.0/src/lhtml_site.egg-info/entry_points.txt +2 -0
  427. lhtml_site-1.0.0/src/lhtml_site.egg-info/requires.txt +11 -0
  428. lhtml_site-1.0.0/src/lhtml_site.egg-info/top_level.txt +1 -0
  429. lhtml_site-1.0.0/tests/test_assets.py +150 -0
  430. lhtml_site-1.0.0/tests/test_build_safety.py +502 -0
  431. lhtml_site-1.0.0/tests/test_configuration.py +392 -0
  432. lhtml_site-1.0.0/tests/test_deck.py +485 -0
  433. lhtml_site-1.0.0/tests/test_dependencies.py +135 -0
  434. lhtml_site-1.0.0/tests/test_design.py +155 -0
  435. lhtml_site-1.0.0/tests/test_design_checks.py +68 -0
  436. lhtml_site-1.0.0/tests/test_development.py +86 -0
  437. lhtml_site-1.0.0/tests/test_doctor.py +73 -0
  438. lhtml_site-1.0.0/tests/test_extensions.py +133 -0
  439. lhtml_site-1.0.0/tests/test_feedback.py +138 -0
  440. lhtml_site-1.0.0/tests/test_filesystem.py +51 -0
  441. lhtml_site-1.0.0/tests/test_front_matter.py +134 -0
  442. lhtml_site-1.0.0/tests/test_headings.py +105 -0
  443. lhtml_site-1.0.0/tests/test_layout_integration.py +354 -0
  444. lhtml_site-1.0.0/tests/test_layout_report.py +600 -0
  445. lhtml_site-1.0.0/tests/test_layout_reuse.py +122 -0
  446. lhtml_site-1.0.0/tests/test_layouts.py +303 -0
  447. lhtml_site-1.0.0/tests/test_markdown.py +148 -0
  448. lhtml_site-1.0.0/tests/test_menu.py +117 -0
  449. lhtml_site-1.0.0/tests/test_only.py +165 -0
  450. lhtml_site-1.0.0/tests/test_packaging.py +92 -0
  451. lhtml_site-1.0.0/tests/test_pdf_export.py +295 -0
  452. lhtml_site-1.0.0/tests/test_plugin_order.py +70 -0
  453. lhtml_site-1.0.0/tests/test_project.py +336 -0
  454. lhtml_site-1.0.0/tests/test_projects.py +163 -0
  455. lhtml_site-1.0.0/tests/test_regressions.py +296 -0
  456. lhtml_site-1.0.0/tests/test_report_lock.py +40 -0
  457. lhtml_site-1.0.0/tests/test_source_map.py +216 -0
  458. lhtml_site-1.0.0/tests/test_source_scan.py +45 -0
  459. lhtml_site-1.0.0/tests/test_theme.py +77 -0
  460. lhtml_site-1.0.0/tests/test_tracking.py +15 -0
  461. lhtml_site-1.0.0/tests/test_video_cache.py +125 -0
@@ -0,0 +1,104 @@
1
+ # Changelog
2
+
3
+ All notable changes to lhtml-site (`lhtml-site` on PyPI) are documented here.
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ ## [1.0.0] - 2026-10-19
7
+
8
+ The first release on PyPI. The generator was named `static_website_lhtml`,
9
+ and projects used it as a copy or a submodule; it is now a package with a
10
+ command, `lhtml-site`, built on LHTML 3 (`lhtml-markup` on PyPI).
11
+
12
+ ### Added
13
+ - `pipx install lhtml-site` (or `pip install lhtml-site` in a virtual
14
+ environment) installs the command `lhtml-site`; `lhtml-site --version`
15
+ says its version and the LHTML it runs.
16
+ - `lhtml-site init [DIR] [--theme slides|slides-pdf|webpage-frame]` creates
17
+ a project: a `configure.yaml` and pages to start from in `src/` (four
18
+ slides, or two web pages). Over a directory that already has its pages in
19
+ `src/`, it writes only `configure.yaml`.
20
+ - `lhtml-site doctor` says, for each optional feature (PDF export, layout
21
+ report, videos, SASS, figures, code snippets, tidy), what it finds and the
22
+ command that installs what is missing for the way lhtml-site is
23
+ installed (`pipx inject` after pipx).
24
+ - `lhtml-site --serve --watch` builds, serves the site on localhost and
25
+ rebuilds it on save.
26
+ - A page says what it is in its front matter (the YAML at its top), and may
27
+ be written in Markdown (`index.md.j2`) as well as in LHTML
28
+ (`index.html.j2`).
29
+ - Projects of several decks, each built to several targets (the slides in
30
+ the browser, a PDF), the layout report (`--layout`), the lint of the
31
+ values written by hand (`--lint`).
32
+ - The PDF export runs Chromium through Playwright for Python, with the extra
33
+ `lhtml-site[pdf]` (playwright, pypdf) and
34
+ `python -m playwright install --only-shell chromium`: no Node.js, poppler
35
+ nor ImageMagick. One browser for the deck, a few slides at a time, each
36
+ printed once ready (fonts, math, images, a frame of each video) instead of
37
+ after a fixed 4 s; the images are screenshots at 3840 px, the merge is
38
+ pypdf. The outputs keep their names and layout. `lhtml-site doctor`
39
+ reports it.
40
+ - A progress bar while the PDF is made, on a terminal only (a log gets
41
+ nothing). Without Playwright, the build says what to install, the command
42
+ for the way lhtml-site is installed.
43
+ - The layout report (`--layout`, `--render`) runs in the same Chromium,
44
+ through Playwright for Python (`lhtml_site/layout/measure.py`; what runs
45
+ inside the page is `lhtml_site/layout/page.js`). Its reports are those of
46
+ the Node version: same blocks, problems and usual values of the deck
47
+ measured in the same browser. The pages of an existing report are measured
48
+ again once (the measuring code changed). On a deck of 35 slides, the
49
+ report takes 7.9 s instead of 9.5 s.
50
+ - A slide is printed once the promises a page or a demo (in an iframe too)
51
+ registered with `window.__lhtmlReady` are settled, as the layout report
52
+ already waited for them; the whole preparation of a slide is bounded (60
53
+ s), so a promise that never settles fails the slide instead of blocking
54
+ the export. After pipx, the commands to install are the same in the
55
+ README, in `lhtml-site doctor` and in the errors:
56
+ `pipx inject lhtml-site pypdf`, `pipx inject --include-apps lhtml-site
57
+ playwright`, then `playwright install --only-shell chromium`.
58
+
59
+ ### Changed
60
+ - Requires LHTML 3 (`lhtml-markup>=3.0`), which reads no file: the
61
+ generator reads the sources, and `include::` is written with Jinja
62
+ (`{% include %}`). Coming from LHTML 2: the
63
+ [migration of LHTML](https://github.com/drohmer/lhtml/blob/main/docs/migration.md).
64
+ - The README leads to a first talk in a few commands, opened from the disk
65
+ (`lhtml-site`, then `.site/index.html`; `--watch` to rebuild on save, and
66
+ `init` says the same); the reference moves to
67
+ [docs/reference.md](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md),
68
+ with the details of the PDF export.
69
+ - The package holds the themes, plugins and starters but not the demo
70
+ course, and the themes ship their fonts as WOFF2 only: the wheel is about
71
+ 8 MB.
72
+ - The id of a heading is the one of the generator copied into projects
73
+ since April 2026 (` -,.:()` become `_`, then `__` becomes `_`), so links
74
+ into the sites it built keep working; a site built by an older copy
75
+ changes the id of its headings with these characters (`Part - One`:
76
+ `part___one` before, `part__one` now). A repeated heading gets distinct
77
+ ids (`_id2`, `_id3`...) and characters unsafe in a URL are removed.
78
+ - The "Page content" column of the theme webpage-frame is read in the page
79
+ (its level-2 headings with an id), not fetched from a JSON file: it is
80
+ shown when the site is opened from disk (`file://`), where it was empty,
81
+ and lists the headings as the page shows them (`== One **bold**` is
82
+ "One bold", it was "One \*\*bold\*\*").
83
+ - A heading whose text comes from Jinja gets its id from its text as
84
+ rendered, unique in its page: each occurrence of a page reused with
85
+ `params` has the id of its own title (`interpolation_de_key_l1`; it was
86
+ `_parties[current__1]_id2_l1`, the same source for all of them), and
87
+ each heading of a `{% for %}` loop has its own. The ids of the headings
88
+ written as text do not change: links into published sites keep working.
89
+
90
+ ### Removed
91
+ - Node.js is no longer used: the Node PDF export of `static_website_lhtml`
92
+ (puppeteer, poppler, ImageMagick, `LHTML_PDF_ENGINE`), the Node scripts of
93
+ the layout report, `package.json`. `lhtml-site doctor` no longer looks for
94
+ Node, puppeteer or a Chrome of its own.
95
+ - The site no longer holds `<page>.title_id.json`, `title_id.json` nor
96
+ `structure/title_id.json` (144 files, 592 KB on a deck of 78 slides).
97
+ The record of the headings that `--only` needs is build state, in
98
+ `.verification/headings.json`; the `structure/title_id.json` of a site
99
+ built by an older copy is read once in its place.
100
+
101
+ ### Fixed
102
+ - The slides no longer write their menu in the console of the browser.
103
+
104
+ [1.0.0]: https://github.com/drohmer/lhtml-site/releases/tag/v1.0.0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Damien Rohmer <damien.rohmer@polytechnique.edu>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,7 @@
1
+ # The sdist: the package as pyproject.toml lists it, its tests and the changelog.
2
+ # Never the demo course (its videos stay in a checkout), nor what a build or a
3
+ # test run leaves behind - even when a stale *.egg-info/SOURCES.txt lists it.
4
+ include CHANGELOG.md
5
+ prune src/lhtml_site/example
6
+ global-exclude *.py[cod] .DS_Store
7
+ prune **/__pycache__
@@ -0,0 +1,384 @@
1
+ Metadata-Version: 2.4
2
+ Name: lhtml-site
3
+ Version: 1.0.0
4
+ Summary: Static website and slide generator built on LHTML and Jinja2
5
+ Author: Damien Rohmer
6
+ License-Expression: MIT
7
+ Project-URL: Repository, https://github.com/drohmer/lhtml-site
8
+ Project-URL: Documentation, https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md
9
+ Project-URL: Changelog, https://github.com/drohmer/lhtml-site/blob/main/CHANGELOG.md
10
+ Project-URL: Issues, https://github.com/drohmer/lhtml-site/issues
11
+ Project-URL: LHTML, https://github.com/drohmer/lhtml
12
+ Keywords: static site generator,slides,presentation,lhtml,jinja2,teaching
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Education
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
25
+ Classifier: Topic :: Multimedia :: Graphics :: Presentation
26
+ Classifier: Topic :: Text Processing :: Markup :: HTML
27
+ Requires-Python: >=3.11
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE.md
30
+ Requires-Dist: lhtml-markup>=3.0
31
+ Requires-Dist: Jinja2
32
+ Requires-Dist: markdown-it-py
33
+ Requires-Dist: jinja-markdown
34
+ Requires-Dist: pytidylib
35
+ Requires-Dist: pyyaml
36
+ Requires-Dist: rich
37
+ Provides-Extra: pdf
38
+ Requires-Dist: playwright>=1.49; extra == "pdf"
39
+ Requires-Dist: pypdf>=4; extra == "pdf"
40
+ Dynamic: license-file
41
+
42
+ # lhtml-site
43
+
44
+ Write your talks and course websites as short text files: lhtml-site turns
45
+ them into slides shown in the browser, a PDF of the slides, or a website
46
+ with a menu. It is made for teachers and researchers; no web development is
47
+ needed.
48
+
49
+ A slide is a text file in [LHTML](https://github.com/drohmer/lhtml), a light
50
+ markup over HTML:
51
+
52
+ ```
53
+ {% set layout = 'side' %}
54
+
55
+ = A slide with an image
56
+
57
+ The layout side puts the text on the left, and the figures of the media block
58
+ on the right, fitted to the column.
59
+
60
+ * Put the image next to the slide, in assets/
61
+ * Name it in the media block below
62
+
63
+ media::
64
+ img::assets/diagram.svg
65
+ credit:: An image of the slide (assets/diagram.svg) ::
66
+ ::
67
+ ```
68
+
69
+ and lhtml-site shows it as:
70
+
71
+ ![The slide above, shown in the browser](https://raw.githubusercontent.com/drohmer/lhtml-site/main/docs/slide.png)
72
+
73
+ Pages can also use Jinja2 templates and be written in Markdown. The output
74
+ is a static site: open it from the disk, or copy it to any web host.
75
+
76
+ ## Getting started: your first slides
77
+
78
+ **What you need**: Python 3.11 or newer ([python.org](https://www.python.org/downloads/)),
79
+ and [pipx](https://pipx.pypa.io/stable/installation/), which installs
80
+ commands written in Python: `brew install pipx` on macOS, `sudo apt install
81
+ pipx` on Debian or Ubuntu, `py -m pip install --user pipx` on Windows; then
82
+ `pipx ensurepath`, and open a new terminal. (Without pipx, see
83
+ [Installation](#installation).)
84
+
85
+ **1. Install lhtml-site and create a talk.** In a terminal:
86
+
87
+ ```bash
88
+ pipx install lhtml-site
89
+ lhtml-site init my-talk --theme slides
90
+ cd my-talk
91
+ lhtml-site
92
+ ```
93
+
94
+ `init` creates a directory `my-talk/` with a configuration and four slides
95
+ to start from; `lhtml-site` builds them:
96
+
97
+ ```
98
+ my-talk/
99
+ configure.yaml the configuration
100
+ src/
101
+ 01_title/index.html.j2 a title slide
102
+ 02_text/index.html.j2 a slide of text: lists, math, a link
103
+ 03_two_columns/index.html.j2 two columns
104
+ 04_image/index.html.j2 text, and an image on the right
105
+ ```
106
+
107
+ **2. Show it.** `lhtml-site` has built the slides into `.site/`: open
108
+ `.site/index.html` in your browser, no server needed (in the terminal,
109
+ `open .site/index.html` on macOS, `start .site\index.html` on Windows,
110
+ `xdg-open .site/index.html` on Linux). Go from slide to slide with the
111
+ arrow keys, or with the arrows at the bottom right; the icon next to them
112
+ opens the list of the slides.
113
+
114
+ After a change, run `lhtml-site` again and refresh the browser. To rebuild
115
+ without retyping it, run `lhtml-site --watch` instead: it rebuilds the
116
+ slides each time you save a file. **Keep that terminal open while you
117
+ work**, refresh the browser to see the change, and press Ctrl+C in the
118
+ terminal to stop. `lhtml-site --serve --watch` does the same and also shows
119
+ the slides at <http://127.0.0.1:8000/>, which only a few features need, such
120
+ as the [comments on the render](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#local-preview).
121
+
122
+ **3. Add a slide.** A slide is a directory of `src/` with a file
123
+ `index.html.j2` in it. Duplicate `src/02_text` (in your file explorer, or
124
+ `cp -r src/02_text src/05_my_slide` in the terminal, from `my-talk/`) and
125
+ name the copy `05_my_slide`. The slides follow the order of their
126
+ directories, hence the numbers: `05_my_slide` comes last; name it
127
+ `02b_my_slide` to put it after `02_text`.
128
+
129
+ **4. Write it.** Open `src/05_my_slide/index.html.j2` in a text editor, and
130
+ replace its content with:
131
+
132
+ ```
133
+ = My first slide
134
+
135
+ * A first idea
136
+ * An **important** point
137
+ * A conclusion
138
+ ```
139
+
140
+ Save, rebuild (`lhtml-site`, unless `lhtml-site --watch` is running), and
141
+ refresh the browser.
142
+
143
+ - A line starting with `=` is the title of the slide, and its name in the
144
+ list of the slides.
145
+ - A line starting with `*` is an item of a list; `**` at the start of a
146
+ line, a sub-item. The `slides` theme shows no bullet before them.
147
+ - `**word**` is bold, `__word__` italic.
148
+
149
+ **5. Put an image in it.** Copy your image (PNG, JPEG or SVG), say
150
+ `photo.png`, into `src/04_image/assets/` (the directory is already there);
151
+ then, in `src/04_image/index.html.j2`, replace `img::assets/diagram.svg`
152
+ with `img::assets/photo.png`, and the caption on the line `credit::` with
153
+ yours. Save and rebuild: the image is on the right of the slide, fitted to
154
+ its column. An image belongs to the directory of its slide, in `assets/`.
155
+
156
+ The four starter slides also show, each in a few lines: math
157
+ (`\(e^{i\pi} + 1 = 0\)`), a link, a space (`gap::`) and small text in
158
+ `02_text`, two columns (`cols::` and `col::`) in `03_two_columns`. All the
159
+ macros and layouts of the slides are in
160
+ [Design](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#design-tokens-macros-and-layouts),
161
+ and the markup in [LHTML](https://github.com/drohmer/lhtml).
162
+
163
+ **6. Come back to it later.** Open a terminal, go into the talk's
164
+ directory, and rebuild (or let it rebuild as you save):
165
+
166
+ ```bash
167
+ cd my-talk
168
+ lhtml-site --watch
169
+ ```
170
+
171
+ **7. Share it.** Your talk is `configure.yaml` and `src/`: keep them (a
172
+ backup, or a git repository). The slides are built into `.site/`, which
173
+ `lhtml-site` rebuilds from them at any time. To show the slides on another
174
+ computer, copy `.site/` and open its `index.html`; to put them online, copy
175
+ `.site/` to any web host (GitHub Pages, the server of your university).
176
+ `.site/` is hidden, as any name starting with a dot: Cmd+Shift+. shows it in
177
+ the macOS Finder, *View > Hidden items* in the Windows explorer. Next to it,
178
+ `.structure/` and `.verification/` are working files of the build: leave
179
+ them.
180
+
181
+ To order the slides without renaming them, or to reuse a slide, list them in
182
+ a [deck](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#deck-order-of-the-slides).
183
+
184
+ ## Your talk as a PDF
185
+
186
+ Install the PDF export once (see [PDF export](#pdf-export)): when
187
+ `lhtml-site doctor` says *ready* on its line *PDF export*,
188
+ replace the line `theme: 'slides'` of the talk's `configure.yaml` with:
189
+
190
+ ```yaml
191
+ theme: 'slides-pdf'
192
+ ```
193
+
194
+ and build, in the talk's directory:
195
+
196
+ ```bash
197
+ lhtml-site
198
+ ```
199
+
200
+ It writes `slides.pdf`, and `images/` with an image of each slide, next to
201
+ `configure.yaml` (a few seconds for a few slides). With this theme the HTML
202
+ of the slides is only a step towards the PDF, and is not kept; put
203
+ `theme: 'slides'` back to work on the slides in the browser. To get both at
204
+ each build, the slides in the browser and the PDF, declare two targets:
205
+ [Decks and targets](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#decks-and-targets).
206
+
207
+ ## Websites and themes
208
+
209
+ - A website (documentation, a course) rather than slides:
210
+ `lhtml-site init my-site` (the `webpage-frame` theme, two pages to start
211
+ from).
212
+ - *You already have your pages* in a directory `src/`: in the directory that
213
+ contains `src/`, run `lhtml-site init --theme slides`. It writes only
214
+ `configure.yaml` there; nothing else is created or changed.
215
+
216
+ The theme is the `--theme` of `init`, or the key `theme:` of
217
+ `configure.yaml`:
218
+
219
+ | Theme | For | Needs |
220
+ |---|---|---|
221
+ | `webpage-frame` (default) | Web pages: documentation, a course website, with a navigation menu | nothing more |
222
+ | `slides` | Slides shown in the browser, 1920x1080, one page per slide | nothing more |
223
+ | `slides-pdf` | The same slides, exported to a PDF, with an image of each slide | Playwright and its Chromium: see [PDF export](#pdf-export) |
224
+
225
+ Change the theme at any time by editing `theme:`; it also takes the
226
+ directory of a theme of your own. To publish the same slides both in the
227
+ browser and as a PDF, see
228
+ [Decks and targets](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#decks-and-targets).
229
+
230
+ ## Installation
231
+
232
+ ```bash
233
+ pipx install lhtml-site # the command lhtml-site, in an environment of its own
234
+ pipx upgrade lhtml-site # later, to update it
235
+ ```
236
+
237
+ Without pipx, in a virtual environment (Homebrew and recent system Pythons
238
+ refuse a `pip install` outside one). On macOS and Linux:
239
+
240
+ ```bash
241
+ python3 -m venv ~/.venvs/lhtml-site
242
+ source ~/.venvs/lhtml-site/bin/activate # fish: activate.fish
243
+ python -m pip install lhtml-site
244
+ ```
245
+
246
+ On Windows, in PowerShell:
247
+
248
+ ```powershell
249
+ py -m venv $HOME\.venvs\lhtml-site
250
+ & $HOME\.venvs\lhtml-site\Scripts\Activate.ps1
251
+ python -m pip install lhtml-site
252
+ ```
253
+
254
+ The command `lhtml-site` is then there while that environment is active
255
+ (the `source` or `Activate.ps1` line again, in a new terminal).
256
+ `lhtml-site --version` prints the installed version and the version of
257
+ LHTML it runs. Development version:
258
+ `pipx install git+https://github.com/drohmer/lhtml-site`.
259
+
260
+ **Requirements**: Python 3.11 or newer, on Linux, macOS or Windows.
261
+ Installed with it: `lhtml-markup` (LHTML 3), `Jinja2`, `jinja-markdown`,
262
+ `markdown-it-py`, `pytidylib`, `pyyaml`, `rich`. That is all a site of HTML
263
+ pages or slides needs: no Node, no browser, no other program.
264
+
265
+ ### Optional features
266
+
267
+ Each optional feature needs its own tools. `lhtml-site doctor` says, for
268
+ each feature, what it finds and the command that installs what is missing,
269
+ for the way lhtml-site is installed:
270
+
271
+ | Feature | Needs |
272
+ |---|---|
273
+ | PDF export (`slides-pdf`) | `playwright` and `pypdf` (Python, the extra `lhtml-site[pdf]`) and Playwright's Chromium: see [PDF export](#pdf-export) |
274
+ | Layout report (`--layout`, `--render`) | the same `playwright` and Chromium |
275
+ | Videos in several codecs (`cache_video_directory:`) | `ffmpeg`, and `ffpb` (Python) |
276
+ | SASS (`.sass` files) | `libsass` (Python) |
277
+ | Figures in code (`*.svg.py`, `*.svg.tex`) | the libraries their scripts import, such as `matplotlib`, `numpy` (Python); `latex` and `dvisvgm` (TeX Live) |
278
+ | Code of other repositories (`code_include.py`) | `git` |
279
+ | HTML cleaned by tidy (`use_tidy: true`) | the library `libtidy` |
280
+
281
+ **Python packages after pipx.** pipx installs lhtml-site in an environment
282
+ of its own: `pip install matplotlib` puts the package into another Python,
283
+ where lhtml-site does not find it. Inject the packages into its environment
284
+ instead:
285
+
286
+ ```bash
287
+ pipx inject lhtml-site matplotlib numpy # figures in code
288
+ pipx inject lhtml-site libsass # SASS
289
+ pipx inject --include-apps lhtml-site ffpb # videos (a command: --include-apps)
290
+ ```
291
+
292
+ In a virtual environment or a checkout, `pip install matplotlib numpy` (and
293
+ `libsass`, `ffpb`) in the Python that runs lhtml-site does the same.
294
+
295
+ ### PDF export
296
+
297
+ The PDF export, and the layout report, run Chromium through Playwright for
298
+ Python: two Python packages and a browser, no Node.js. After
299
+ `pipx install lhtml-site`:
300
+
301
+ ```bash
302
+ pipx inject lhtml-site pypdf
303
+ pipx inject --include-apps lhtml-site playwright
304
+ playwright install --only-shell chromium # Playwright's Chromium, about 200 MB, once
305
+ lhtml-site doctor # PDF export (...): ready
306
+ ```
307
+
308
+ `--include-apps` puts the `playwright` command of lhtml-site's environment
309
+ on your PATH, so that the browser downloaded is the one its Playwright
310
+ expects. If pipx warns that another `playwright` is already on your PATH,
311
+ run the command that `lhtml-site doctor` gives instead. In a virtual
312
+ environment or a checkout: `pip install "lhtml-site[pdf]"`, then
313
+ `python -m playwright install --only-shell chromium`. On Linux, Playwright
314
+ may also ask for the system libraries of Chromium:
315
+ `playwright install-deps chromium`. The configuration key `chrome` names a
316
+ Chromium or Chrome already installed, to use instead of the download.
317
+
318
+ How the export waits for each slide is in the
319
+ [reference](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#pdf-export).
320
+
321
+ ## From a checkout
322
+
323
+ A clone, or a submodule of a project:
324
+
325
+ ```bash
326
+ git clone https://github.com/drohmer/lhtml-site.git
327
+ cd lhtml-site
328
+ pip install -r requirements.txt
329
+ python generate.py ... # the same as lhtml-site ...
330
+ ```
331
+
332
+ `generate.py` at the root of the repository runs the lhtml-site of the
333
+ checkout (its code is in `src/lhtml_site/`), so the projects that include it
334
+ as a submodule call `python <submodule>/generate.py`, and keep naming its
335
+ files as `<submodule>/themes/slides/` or `<submodule>/plugins/pre_include.py`
336
+ (they are found in `src/lhtml_site/`). `pip install -e .` in a checkout
337
+ installs the command from it.
338
+
339
+ The checkout also holds a complete demo, a course website with its videos,
340
+ in `src/lhtml_site/example/` (not installed by pip: too heavy). To build it:
341
+
342
+ ```bash
343
+ mkdir demo
344
+ cp -r src/lhtml_site/example demo/src
345
+ python generate.py init demo
346
+ cd demo
347
+ python ../generate.py --serve --watch
348
+ ```
349
+
350
+ The tests, the locked dependencies and the layout of the repository are in
351
+ [Development](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/development.md).
352
+
353
+ ## Documentation
354
+
355
+ - [Reference](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md):
356
+ the [command line](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#cli-options),
357
+ the [preview server](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#local-preview)
358
+ and the comments on the render,
359
+ the [configuration](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#configuration),
360
+ [decks and targets](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#decks-and-targets),
361
+ [Markdown pages](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#markdown-pages),
362
+ [template variables](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#template-variables),
363
+ the [order of the slides](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#deck-order-of-the-slides),
364
+ [themes](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#theme-what-it-declares-about-the-build),
365
+ the [PDF export](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#pdf-export),
366
+ the [design](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#design-tokens-macros-and-layouts)
367
+ (tokens, macros, layouts), [credits and figures in code](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#credits-origin-of-the-slides-figures-in-code),
368
+ [plugins](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#plugins),
369
+ the [layout report](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#layout-report-llm-assisted-slide-layout),
370
+ [error reporting](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#error-reporting),
371
+ and [migrating from static_website_lhtml](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/reference.md#migrating-from-the-previous-layout).
372
+ - [Writing slides with an AI agent](https://github.com/drohmer/lhtml-site/blob/main/src/lhtml_site/docs/agents.md):
373
+ the procedure an agent follows (each build copies it into `.structure/agents.md`).
374
+ - [LHTML](https://github.com/drohmer/lhtml): the markup of the pages.
375
+
376
+ ## Help and changes
377
+
378
+ - Questions and bugs: [GitHub issues](https://github.com/drohmer/lhtml-site/issues).
379
+ - What changed in each version: [CHANGELOG](https://github.com/drohmer/lhtml-site/blob/main/CHANGELOG.md).
380
+
381
+ ## License
382
+
383
+ MIT, see [LICENSE.md](https://github.com/drohmer/lhtml-site/blob/main/LICENSE.md).
384
+ By Damien Rohmer.