pdfmd-cli 3.29.8__tar.gz → 3.29.24__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.
- {pdfmd_cli-3.29.8/pdfmd_cli.egg-info → pdfmd_cli-3.29.24}/PKG-INFO +100 -1
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/README.md +99 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd.py +342 -5
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24/pdfmd_cli.egg-info}/PKG-INFO +100 -1
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_cli.egg-info/SOURCES.txt +14 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_help/__init__.py +1 -1
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_images/remote.py +1 -1
- pdfmd_cli-3.29.24/pdfmd_lua/cover.lua +53 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/csv_table.lua +26 -1
- pdfmd_cli-3.29.24/pdfmd_lua/markup.lua +692 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_setup/inventory.py +4 -1
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_setup/registry.py +20 -1
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_tables/convert.py +6 -0
- pdfmd_cli-3.29.24/pdfmd_tables/sheets.py +130 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_calibre.py +4 -2
- pdfmd_cli-3.29.24/tests/test_cover.py +131 -0
- pdfmd_cli-3.29.24/tests/test_folder_settings.py +132 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_install_calibre.py +2 -3
- pdfmd_cli-3.29.24/tests/test_markup_appendix.py +62 -0
- pdfmd_cli-3.29.24/tests/test_markup_callouts.py +201 -0
- pdfmd_cli-3.29.24/tests/test_markup_center.py +103 -0
- pdfmd_cli-3.29.24/tests/test_markup_highlight.py +95 -0
- pdfmd_cli-3.29.24/tests/test_markup_keep.py +82 -0
- pdfmd_cli-3.29.24/tests/test_markup_landscape.py +103 -0
- pdfmd_cli-3.29.24/tests/test_markup_toc.py +108 -0
- pdfmd_cli-3.29.24/tests/test_show_comments.py +142 -0
- pdfmd_cli-3.29.24/tests/test_spreadsheets.py +137 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/LICENSE +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_check/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_check/lint.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_chem/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_chem/__main__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_chem/batch.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_chem/render.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_chem/siunitx.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_cli.egg-info/dependency_links.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_cli.egg-info/entry_points.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_cli.egg-info/requires.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_cli.egg-info/top_level.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_css/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_direct/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_direct/defaults.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_direct/html.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_direct/typst.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_edit/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_flat/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_flat/asciify.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_flat/keep.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_history/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_history/git.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_history/hst.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_history/versions.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_images/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_images/scan.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_images/svg.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/LICENSE +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/VENDORED.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/_kerning_data.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/assets/fonts/DejaVuSans-LICENSE.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/assets/fonts/DejaVuSans.ttf +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/ast.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/cidfont.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/embedded.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/embedded_metrics.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/emoji.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/emoji_font.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/fonts.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/html_filter.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/image_loader.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/layout.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/parser.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/pdf.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/py.typed +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/render.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/truetype.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_inkmd/url_filter.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_labels/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_labels/replay.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_labels/scan.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/ascii.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/chem.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/chem_client.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/code.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/code_wrap.tex +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/diagram.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/ebook.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/ebook_input.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/flat.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/graphicx.tex +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/graphviz.cjs +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/images.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/katex.cjs +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/mathjax.cjs +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/pagebreak.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/pdf_images.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/raw.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/select.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/table_width.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/title_meta.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/typst.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_lua/weasyprint.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_mhchem/LICENSE +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_mhchem/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_mhchem/parser.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/docx.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/docx_post.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/fonts.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/fragments.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/labels.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/odt.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/office.lua +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/properties.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/spec.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_office/units.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_raw/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_setup/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_setup/fancy.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_setup/plain.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_tables/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_tables/scan.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_tables/verify.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/article/__name__.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/article/description.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/article/next.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/article/refs.bib +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/book/__name__.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/book/description.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/book/next.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/book/parts/10-introduction.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/book/parts/20-methods.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/book/parts/30-results.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/notes/__name__.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/notes/description.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/notes/next.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/report/__name__.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/report/data.csv +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/report/description.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/report/next.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/slides/__name__.md +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/slides/description.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_templates/data/slides/next.txt +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/__init__.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/_catalog.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/_scripts.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/_tessdata_catalog.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/colorfont.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/emoji.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/fonts.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/install.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/plan.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/scripts.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/tessdata.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pdfmd_unicode/translit.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/pyproject.toml +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/setup.cfg +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_api.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_apple_emoji.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_ascii.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_attach.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_attach_format.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_autolog.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_bopen.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_browser_engine.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_budget.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_build_record.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_cache_location.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_calibre_markdown.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_calibre_targets.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_check.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_check_source.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_chem.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_code_blocks.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_compat.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_completion.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_config.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_css.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_css_v2.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_csv_table.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_diagrams.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_direct.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_display_path.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_doctor.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_docx_tables.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_ebook_input.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_edit.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_edit_pdf.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_embedding.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_engine_chain.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_engine_filters.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_flat.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_header_includes.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_help.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_history.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_images.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_install_core_tex.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_install_diagram.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_install_ocr.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_install_python.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_jobs.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_katex_scale.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_keep_source.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_labels.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_latex_errors.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_lookup.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_lua_trust.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_markdown_features.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_mathfont.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_mathjax.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_mhchem.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_native.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_office.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_office_latex.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_old_python_syntax.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_package_helper.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_packaging.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_pagebreak.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_pan_tec.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_pdf_input.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_picture_cache_protocol.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_plot_cache.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_polish.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_presets.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_raw.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_rawcode.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_reader.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_remote_csl.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_sections.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_setup.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_soffice_parts.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_standalone_source.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_table_widths.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_tables.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_templates.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_tessdata.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_texpackages.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_text_input.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_translit.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_typst_input.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_unicode.py +0 -0
- {pdfmd_cli-3.29.8 → pdfmd_cli-3.29.24}/tests/test_versions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pdfmd-cli
|
|
3
|
-
Version: 3.29.
|
|
3
|
+
Version: 3.29.24
|
|
4
4
|
Summary: One command from Markdown to a good-looking PDF: a Pandoc wrapper with smart defaults, project-file discovery and a multi-engine fallback chain
|
|
5
5
|
Author: Ali Perdekhan
|
|
6
6
|
License-Expression: MIT AND Apache-2.0
|
|
@@ -1359,6 +1359,12 @@ Water,18.015,1.20
|
|
|
1359
1359
|
`---`, `:--`, `:-:`, `--:` as in a pipe table; `align=` wins. If such a row is really data, say `separator="none"`.
|
|
1360
1360
|
`widths="5,1,1"` sets relative widths, and a second row with unequal dashes does too. Without either, pdfmd picks
|
|
1361
1361
|
widths that suit the contents.
|
|
1362
|
+
- **A spreadsheet** (v3.29) works as the file: `::: {.csv file="results.xlsx" sheet="Run 2"}` (`.xlsx`, `.xlsm`, `.xls`, `.ods`;
|
|
1363
|
+
`sheet=` is a name or a number counted from 1, the first sheet when it is left out). The sheet is read by `openpyxl` (xlsx and
|
|
1364
|
+
xlsm: the values the file stores, so a cell shown as `1.50` is `1.5`, a date is `2026-01-02`), else by `pandas`, else by
|
|
1365
|
+
LibreOffice (the sheet by number); none of them is a `WARN` that says what to install (`pip install openpyxl`). The converted
|
|
1366
|
+
CSV is kept in pdfmd's cache by the file's content, the attached source carries the spreadsheet itself, and
|
|
1367
|
+
`--expand-tables` reads it too.
|
|
1362
1368
|
- The first row is the header unless you add `header="false"`.
|
|
1363
1369
|
- Large files are capped at 10 rows × 7 columns, so a huge CSV can't
|
|
1364
1370
|
silently fill 40 pages. A cut table keeps both ends: the first 7 rows, a row
|
|
@@ -1434,6 +1440,15 @@ article class, and never over a document that formats its headings itself: a `ti
|
|
|
1434
1440
|
`\section` of its own, in the preamble, the `header-includes` or a metadata file, is named in a `CSS` note and nothing is added
|
|
1435
1441
|
(and when `titlesec` is not installed, one LaTeX warning says so). A family needs XeLaTeX or LuaLaTeX.
|
|
1436
1442
|
|
|
1443
|
+
### A cover: `cover`
|
|
1444
|
+
|
|
1445
|
+
`pdfmd-options: {cover: true}` puts the title block (title, subtitle, author, date) on a page of its own and starts the text
|
|
1446
|
+
on the next (v3.29): LaTeX's `titlepage` class option (for the article, report and book classes and KOMA's; another class is
|
|
1447
|
+
left alone), and a page break after the title block of an HTML-family PDF (WeasyPrint, a browser, Calibre) or an HTML page.
|
|
1448
|
+
`cover: picture.png` (relative to the document) puts that picture on the first page of such a PDF, before the title, and is the
|
|
1449
|
+
cover of an EPUB, so of the Kindle book Calibre makes from it (Pandoc's own `cover-image:` does the same for an EPUB). A
|
|
1450
|
+
Word, OpenDocument or Typst file says once that the key was not applied. Off by default: the title block stays on page 1.
|
|
1451
|
+
|
|
1437
1452
|
### Code: wrapping and line numbers
|
|
1438
1453
|
|
|
1439
1454
|
With a LaTeX engine a long line of code wraps at the margin instead of running off the page (a long path or option list
|
|
@@ -1574,6 +1589,79 @@ It is off unless asked (the document, a metadata file, or `pdfmd --setup` under
|
|
|
1574
1589
|
[KIND ...]` and `--no-pagebreak` decide for one run. A spelling already in the output's own language stays as written,
|
|
1575
1590
|
and slides leave a break out with a note. The built-in renderer (no Pandoc) reads the comment and TeX spellings anyway.
|
|
1576
1591
|
|
|
1592
|
+
**Callouts in every format** (v3.29, the first kind of *universal markup* after page breaks). GitHub's and Obsidian's
|
|
1593
|
+
`> [!NOTE]`, a fenced `::: note` and Quarto's `::: callout-tip` are a block quote or a div to Pandoc, and print as plain text.
|
|
1594
|
+
Ask for them and each becomes a box of the writer's own: LaTeX a `tcolorbox` (a plain indented quote when that package is not
|
|
1595
|
+
installed), Typst a tinted block, HTML, EPUB and the HTML engines' PDFs a `div.callout` with its style, every other writer
|
|
1596
|
+
(Word, OpenDocument, Markdown ...) a block quote with a bold title:
|
|
1597
|
+
|
|
1598
|
+
```yaml
|
|
1599
|
+
pdfmd-options:
|
|
1600
|
+
markup: callouts # or: markup: true (every kind there is)
|
|
1601
|
+
```
|
|
1602
|
+
|
|
1603
|
+
```markdown
|
|
1604
|
+
> [!warning] Mind the gap
|
|
1605
|
+
> The title is the rest of the first line, the body the lines after it.
|
|
1606
|
+
|
|
1607
|
+
::: {.tip title="Another way"}
|
|
1608
|
+
A fenced div takes `note`, `tip`, `important`, `warning` or `caution` as its class, `title=` for the title.
|
|
1609
|
+
:::
|
|
1610
|
+
```
|
|
1611
|
+
|
|
1612
|
+
The five kinds are GitHub's (`note`, `tip`, `important`, `warning`, `caution`); Obsidian's others map to them (`info`, `todo`,
|
|
1613
|
+
`example`, `abstract` to note; `success`, `check`, `hint` to tip; `question`, `help`, `faq` to important; `failure`, `danger`,
|
|
1614
|
+
`error`, `bug` to caution; `attention` to warning), and an unknown name is a note titled with it. A fold marker (`[!tip]-`) is
|
|
1615
|
+
dropped. Off unless asked (the document, a metadata file, or `pdfmd --setup` under *Universal markup*); `--markup [KIND ...]` and
|
|
1616
|
+
`--no-markup` decide for one run. The built-in renderer (no Pandoc) does not read it yet, and there is no Word shaded box yet.
|
|
1617
|
+
|
|
1618
|
+
**A table of contents where you put it** (v3.29, `markup: toc`). `[TOC]`, `[[_TOC_]]` and `<!-- toc -->` alone in a paragraph, or
|
|
1619
|
+
a raw `\tableofcontents` for a writer that is not LaTeX, become the contents at that place: LaTeX's `\tableofcontents` (filled in
|
|
1620
|
+
one build, with the page numbers), Typst's `#outline()`, a Word TOC field (Word offers to update it when the file is opened) and,
|
|
1621
|
+
for every other writer (HTML, EPUB, Markdown, OpenDocument ...), a nested list of links to the headings down to level 3, with a
|
|
1622
|
+
bold "Contents" above it. `markup: [callouts, toc]` or `markup: true` for both; `--markup toc` for one run. A marker inside a
|
|
1623
|
+
sentence is text.
|
|
1624
|
+
|
|
1625
|
+
**Centred text** (v3.29, `markup: center`). `<center>` ... `</center>` around blocks (the closing tag in its own paragraph),
|
|
1626
|
+
`<div align="center">`, `<div style="text-align: center">`, a fenced `::: center` and, for writers that are not LaTeX, a raw
|
|
1627
|
+
`\begin{center}` ... `\end{center}` all centre what they hold: LaTeX's `center` environment, Typst's `#align(center)[...]`, a
|
|
1628
|
+
`text-align` div in HTML, EPUB and the HTML engines' PDFs. Word and OpenDocument keep the text as it is and say so once (no
|
|
1629
|
+
centring for a block there yet). `markup: [callouts, toc, center]` or `true` for all; `--markup center` for one run.
|
|
1630
|
+
|
|
1631
|
+
**Highlighted text** (v3.29, `markup: highlight`). `==marked text==` (across several words, with emphasis inside, over a line
|
|
1632
|
+
break) is highlighted: LaTeX with `soul`'s `\hl` in a pale yellow (plain text when `soul` is not installed), Typst with
|
|
1633
|
+
`#highlight[...]`, HTML, EPUB and `--to gfm` with `<mark>`; Pandoc's own Markdown output keeps `==...==`, and Word and OpenDocument
|
|
1634
|
+
keep the text and say once that it is not highlighted. A lone `==` or one inside code stays as written; a closing `==` followed by
|
|
1635
|
+
punctuation (`==end==.`) works. `markup: [callouts, toc, center, highlight]` or `true` for all; `--markup highlight` for one run.
|
|
1636
|
+
|
|
1637
|
+
**Blocks kept on one page** (v3.29, `markup: keep`). A fenced `::: keep` (also `nobreak`, `keep-together`), a div with
|
|
1638
|
+
`style="break-inside: avoid"` and, for writers that are not LaTeX, a raw `\begin{samepage}` ... `\end{samepage}` hold what they
|
|
1639
|
+
contain on one page where it fits: LaTeX's `samepage` environment, Typst's `#block(breakable: false)[...]`, a `break-inside:
|
|
1640
|
+
avoid` div in HTML, EPUB and the HTML engines' PDFs. Word and OpenDocument keep the text and say once that it is not held.
|
|
1641
|
+
`--markup keep` for one run.
|
|
1642
|
+
|
|
1643
|
+
**Landscape pages** (v3.29, `markup: landscape`). A fenced `::: landscape`, a div with `style="page: landscape"` and, for writers
|
|
1644
|
+
that are not LaTeX, a raw `\begin{landscape}` ... `\end{landscape}` put what they hold on pages turned sideways, the document
|
|
1645
|
+
going back to portrait after it: LaTeX with `pdflscape` (the page is rotated in the PDF; `lscape`, or no turning, when it is not
|
|
1646
|
+
installed), Typst with `#page(flipped: true)[...]`, WeasyPrint and the browsers with a named page (`@page landscape`: the browsers
|
|
1647
|
+
get the document's paper turned; WeasyPrint's is its own A4 unless your own `@page landscape` says otherwise). Calibre's PDF cannot
|
|
1648
|
+
name page types, and Word and OpenDocument have no sections made from here: they keep the text and say once that no landscape page
|
|
1649
|
+
was made. `--markup landscape` for one run.
|
|
1650
|
+
|
|
1651
|
+
**Where the appendix starts** (v3.29, `markup: appendix`). A raw `\appendix`, `<!-- appendix -->` or a heading with the class
|
|
1652
|
+
`{.appendix}` marks the start: the sections after it are lettered (A, B, A.1) in LaTeX (`\appendix`) and Typst (a heading
|
|
1653
|
+
numbering of letters and a counter reset). It matters for a document that numbers its sections (`--number-sections`); without
|
|
1654
|
+
numbers Typst gets nothing and LaTeX's `\appendix` changes nothing visible. Other writers keep their own numbering and say once
|
|
1655
|
+
that the lettering is not made.
|
|
1656
|
+
|
|
1657
|
+
**Showing the comments of the text** (v3.29, `show-comments`). An `<!-- HTML comment -->` is invisible in every output. With
|
|
1658
|
+
`pdfmd-options: {show-comments: true}` (or `--show-comments` for one run, `--no-show-comments` to switch it off; also a row in
|
|
1659
|
+
`pdfmd --setup`) each one is shown: a box labelled *Comment* in LaTeX, Typst, HTML, EPUB and the HTML engines' PDFs, a real Word
|
|
1660
|
+
comment in a `.docx` (anchored on the paragraph after it, so Word's review pane lists them), `[comment: ...]` in italics for one
|
|
1661
|
+
inside a paragraph. The Markdown family (`--to gfm`, `markdown`) keeps the comment as it is; OpenDocument and PowerPoint drop
|
|
1662
|
+
it, with a note once. pdfmd's own markers stay invisible (`<!-- pdfmd: ... -->`, `<!-- pagebreak -->`, `<!-- toc -->`,
|
|
1663
|
+
`<!-- appendix -->`), and so does an empty comment. It is off unless asked and is not one of the kinds `markup: true` turns on.
|
|
1664
|
+
|
|
1577
1665
|
**PDF images in HTML.** A browser does not show a PDF in `<img>`, an SVG it does. For an HTML build (a web page, an
|
|
1578
1666
|
EPUB, a PDF through WeasyPrint) every image that is a PDF, `` or `<img src="plot.pdf">`, is converted to
|
|
1579
1667
|
an SVG with poppler's `pdftocairo` (or `mutool`, `pdf2svg`, `inkscape`) and stays vector; the first page is used and the
|
|
@@ -1831,6 +1919,17 @@ document or its metadata files say (the command line beats all of them);
|
|
|
1831
1919
|
`translit:` is the romanization packs of the name lookup. `PDFMD_CONFIG=other.yaml`
|
|
1832
1920
|
uses another file, `PDFMD_CONFIG=` (empty) none.
|
|
1833
1921
|
|
|
1922
|
+
**Settings for a folder** (v3.29): a `.pdfmd/config.yaml` in a document's folder, or in any folder above it, has the same
|
|
1923
|
+
`options:` for everything under it. The order, strongest first: the command line, the document's `pdfmd-options`, its metadata
|
|
1924
|
+
files, the folder settings (the nearest folder first, then the ones above it), your global `config.yaml`, pdfmd's own defaults.
|
|
1925
|
+
`inherit: false` in a folder's file stops the walk upward there. A folder cannot set what belongs to this computer (`translit`,
|
|
1926
|
+
`setup-ui`, `disabled`): they are ignored with a `WARN`. A mapping such as `stamp:` or `backup:` in a folder's file stays off
|
|
1927
|
+
until it says `enabled: true`, as in the global file. A build lists the folder files it used on its `FOUND` line
|
|
1928
|
+
(`--verbose`: `AUTO SETTINGS`). A folder's options cannot name code (a Lua filter or a preamble is read from the document's own
|
|
1929
|
+
front matter only), a `.pdfmd/config.yaml` owned by another user (a shared `/tmp`) is not read, and a path in it (`css: house.css`)
|
|
1930
|
+
is relative to the document, as everywhere, not to the folder file. Writing the file from `pdfmd --setup DIR`, and carrying it in
|
|
1931
|
+
an attached source, are not done yet.
|
|
1932
|
+
|
|
1834
1933
|
```yaml
|
|
1835
1934
|
translit: [greek, hangul]
|
|
1836
1935
|
options:
|
|
@@ -1324,6 +1324,12 @@ Water,18.015,1.20
|
|
|
1324
1324
|
`---`, `:--`, `:-:`, `--:` as in a pipe table; `align=` wins. If such a row is really data, say `separator="none"`.
|
|
1325
1325
|
`widths="5,1,1"` sets relative widths, and a second row with unequal dashes does too. Without either, pdfmd picks
|
|
1326
1326
|
widths that suit the contents.
|
|
1327
|
+
- **A spreadsheet** (v3.29) works as the file: `::: {.csv file="results.xlsx" sheet="Run 2"}` (`.xlsx`, `.xlsm`, `.xls`, `.ods`;
|
|
1328
|
+
`sheet=` is a name or a number counted from 1, the first sheet when it is left out). The sheet is read by `openpyxl` (xlsx and
|
|
1329
|
+
xlsm: the values the file stores, so a cell shown as `1.50` is `1.5`, a date is `2026-01-02`), else by `pandas`, else by
|
|
1330
|
+
LibreOffice (the sheet by number); none of them is a `WARN` that says what to install (`pip install openpyxl`). The converted
|
|
1331
|
+
CSV is kept in pdfmd's cache by the file's content, the attached source carries the spreadsheet itself, and
|
|
1332
|
+
`--expand-tables` reads it too.
|
|
1327
1333
|
- The first row is the header unless you add `header="false"`.
|
|
1328
1334
|
- Large files are capped at 10 rows × 7 columns, so a huge CSV can't
|
|
1329
1335
|
silently fill 40 pages. A cut table keeps both ends: the first 7 rows, a row
|
|
@@ -1399,6 +1405,15 @@ article class, and never over a document that formats its headings itself: a `ti
|
|
|
1399
1405
|
`\section` of its own, in the preamble, the `header-includes` or a metadata file, is named in a `CSS` note and nothing is added
|
|
1400
1406
|
(and when `titlesec` is not installed, one LaTeX warning says so). A family needs XeLaTeX or LuaLaTeX.
|
|
1401
1407
|
|
|
1408
|
+
### A cover: `cover`
|
|
1409
|
+
|
|
1410
|
+
`pdfmd-options: {cover: true}` puts the title block (title, subtitle, author, date) on a page of its own and starts the text
|
|
1411
|
+
on the next (v3.29): LaTeX's `titlepage` class option (for the article, report and book classes and KOMA's; another class is
|
|
1412
|
+
left alone), and a page break after the title block of an HTML-family PDF (WeasyPrint, a browser, Calibre) or an HTML page.
|
|
1413
|
+
`cover: picture.png` (relative to the document) puts that picture on the first page of such a PDF, before the title, and is the
|
|
1414
|
+
cover of an EPUB, so of the Kindle book Calibre makes from it (Pandoc's own `cover-image:` does the same for an EPUB). A
|
|
1415
|
+
Word, OpenDocument or Typst file says once that the key was not applied. Off by default: the title block stays on page 1.
|
|
1416
|
+
|
|
1402
1417
|
### Code: wrapping and line numbers
|
|
1403
1418
|
|
|
1404
1419
|
With a LaTeX engine a long line of code wraps at the margin instead of running off the page (a long path or option list
|
|
@@ -1539,6 +1554,79 @@ It is off unless asked (the document, a metadata file, or `pdfmd --setup` under
|
|
|
1539
1554
|
[KIND ...]` and `--no-pagebreak` decide for one run. A spelling already in the output's own language stays as written,
|
|
1540
1555
|
and slides leave a break out with a note. The built-in renderer (no Pandoc) reads the comment and TeX spellings anyway.
|
|
1541
1556
|
|
|
1557
|
+
**Callouts in every format** (v3.29, the first kind of *universal markup* after page breaks). GitHub's and Obsidian's
|
|
1558
|
+
`> [!NOTE]`, a fenced `::: note` and Quarto's `::: callout-tip` are a block quote or a div to Pandoc, and print as plain text.
|
|
1559
|
+
Ask for them and each becomes a box of the writer's own: LaTeX a `tcolorbox` (a plain indented quote when that package is not
|
|
1560
|
+
installed), Typst a tinted block, HTML, EPUB and the HTML engines' PDFs a `div.callout` with its style, every other writer
|
|
1561
|
+
(Word, OpenDocument, Markdown ...) a block quote with a bold title:
|
|
1562
|
+
|
|
1563
|
+
```yaml
|
|
1564
|
+
pdfmd-options:
|
|
1565
|
+
markup: callouts # or: markup: true (every kind there is)
|
|
1566
|
+
```
|
|
1567
|
+
|
|
1568
|
+
```markdown
|
|
1569
|
+
> [!warning] Mind the gap
|
|
1570
|
+
> The title is the rest of the first line, the body the lines after it.
|
|
1571
|
+
|
|
1572
|
+
::: {.tip title="Another way"}
|
|
1573
|
+
A fenced div takes `note`, `tip`, `important`, `warning` or `caution` as its class, `title=` for the title.
|
|
1574
|
+
:::
|
|
1575
|
+
```
|
|
1576
|
+
|
|
1577
|
+
The five kinds are GitHub's (`note`, `tip`, `important`, `warning`, `caution`); Obsidian's others map to them (`info`, `todo`,
|
|
1578
|
+
`example`, `abstract` to note; `success`, `check`, `hint` to tip; `question`, `help`, `faq` to important; `failure`, `danger`,
|
|
1579
|
+
`error`, `bug` to caution; `attention` to warning), and an unknown name is a note titled with it. A fold marker (`[!tip]-`) is
|
|
1580
|
+
dropped. Off unless asked (the document, a metadata file, or `pdfmd --setup` under *Universal markup*); `--markup [KIND ...]` and
|
|
1581
|
+
`--no-markup` decide for one run. The built-in renderer (no Pandoc) does not read it yet, and there is no Word shaded box yet.
|
|
1582
|
+
|
|
1583
|
+
**A table of contents where you put it** (v3.29, `markup: toc`). `[TOC]`, `[[_TOC_]]` and `<!-- toc -->` alone in a paragraph, or
|
|
1584
|
+
a raw `\tableofcontents` for a writer that is not LaTeX, become the contents at that place: LaTeX's `\tableofcontents` (filled in
|
|
1585
|
+
one build, with the page numbers), Typst's `#outline()`, a Word TOC field (Word offers to update it when the file is opened) and,
|
|
1586
|
+
for every other writer (HTML, EPUB, Markdown, OpenDocument ...), a nested list of links to the headings down to level 3, with a
|
|
1587
|
+
bold "Contents" above it. `markup: [callouts, toc]` or `markup: true` for both; `--markup toc` for one run. A marker inside a
|
|
1588
|
+
sentence is text.
|
|
1589
|
+
|
|
1590
|
+
**Centred text** (v3.29, `markup: center`). `<center>` ... `</center>` around blocks (the closing tag in its own paragraph),
|
|
1591
|
+
`<div align="center">`, `<div style="text-align: center">`, a fenced `::: center` and, for writers that are not LaTeX, a raw
|
|
1592
|
+
`\begin{center}` ... `\end{center}` all centre what they hold: LaTeX's `center` environment, Typst's `#align(center)[...]`, a
|
|
1593
|
+
`text-align` div in HTML, EPUB and the HTML engines' PDFs. Word and OpenDocument keep the text as it is and say so once (no
|
|
1594
|
+
centring for a block there yet). `markup: [callouts, toc, center]` or `true` for all; `--markup center` for one run.
|
|
1595
|
+
|
|
1596
|
+
**Highlighted text** (v3.29, `markup: highlight`). `==marked text==` (across several words, with emphasis inside, over a line
|
|
1597
|
+
break) is highlighted: LaTeX with `soul`'s `\hl` in a pale yellow (plain text when `soul` is not installed), Typst with
|
|
1598
|
+
`#highlight[...]`, HTML, EPUB and `--to gfm` with `<mark>`; Pandoc's own Markdown output keeps `==...==`, and Word and OpenDocument
|
|
1599
|
+
keep the text and say once that it is not highlighted. A lone `==` or one inside code stays as written; a closing `==` followed by
|
|
1600
|
+
punctuation (`==end==.`) works. `markup: [callouts, toc, center, highlight]` or `true` for all; `--markup highlight` for one run.
|
|
1601
|
+
|
|
1602
|
+
**Blocks kept on one page** (v3.29, `markup: keep`). A fenced `::: keep` (also `nobreak`, `keep-together`), a div with
|
|
1603
|
+
`style="break-inside: avoid"` and, for writers that are not LaTeX, a raw `\begin{samepage}` ... `\end{samepage}` hold what they
|
|
1604
|
+
contain on one page where it fits: LaTeX's `samepage` environment, Typst's `#block(breakable: false)[...]`, a `break-inside:
|
|
1605
|
+
avoid` div in HTML, EPUB and the HTML engines' PDFs. Word and OpenDocument keep the text and say once that it is not held.
|
|
1606
|
+
`--markup keep` for one run.
|
|
1607
|
+
|
|
1608
|
+
**Landscape pages** (v3.29, `markup: landscape`). A fenced `::: landscape`, a div with `style="page: landscape"` and, for writers
|
|
1609
|
+
that are not LaTeX, a raw `\begin{landscape}` ... `\end{landscape}` put what they hold on pages turned sideways, the document
|
|
1610
|
+
going back to portrait after it: LaTeX with `pdflscape` (the page is rotated in the PDF; `lscape`, or no turning, when it is not
|
|
1611
|
+
installed), Typst with `#page(flipped: true)[...]`, WeasyPrint and the browsers with a named page (`@page landscape`: the browsers
|
|
1612
|
+
get the document's paper turned; WeasyPrint's is its own A4 unless your own `@page landscape` says otherwise). Calibre's PDF cannot
|
|
1613
|
+
name page types, and Word and OpenDocument have no sections made from here: they keep the text and say once that no landscape page
|
|
1614
|
+
was made. `--markup landscape` for one run.
|
|
1615
|
+
|
|
1616
|
+
**Where the appendix starts** (v3.29, `markup: appendix`). A raw `\appendix`, `<!-- appendix -->` or a heading with the class
|
|
1617
|
+
`{.appendix}` marks the start: the sections after it are lettered (A, B, A.1) in LaTeX (`\appendix`) and Typst (a heading
|
|
1618
|
+
numbering of letters and a counter reset). It matters for a document that numbers its sections (`--number-sections`); without
|
|
1619
|
+
numbers Typst gets nothing and LaTeX's `\appendix` changes nothing visible. Other writers keep their own numbering and say once
|
|
1620
|
+
that the lettering is not made.
|
|
1621
|
+
|
|
1622
|
+
**Showing the comments of the text** (v3.29, `show-comments`). An `<!-- HTML comment -->` is invisible in every output. With
|
|
1623
|
+
`pdfmd-options: {show-comments: true}` (or `--show-comments` for one run, `--no-show-comments` to switch it off; also a row in
|
|
1624
|
+
`pdfmd --setup`) each one is shown: a box labelled *Comment* in LaTeX, Typst, HTML, EPUB and the HTML engines' PDFs, a real Word
|
|
1625
|
+
comment in a `.docx` (anchored on the paragraph after it, so Word's review pane lists them), `[comment: ...]` in italics for one
|
|
1626
|
+
inside a paragraph. The Markdown family (`--to gfm`, `markdown`) keeps the comment as it is; OpenDocument and PowerPoint drop
|
|
1627
|
+
it, with a note once. pdfmd's own markers stay invisible (`<!-- pdfmd: ... -->`, `<!-- pagebreak -->`, `<!-- toc -->`,
|
|
1628
|
+
`<!-- appendix -->`), and so does an empty comment. It is off unless asked and is not one of the kinds `markup: true` turns on.
|
|
1629
|
+
|
|
1542
1630
|
**PDF images in HTML.** A browser does not show a PDF in `<img>`, an SVG it does. For an HTML build (a web page, an
|
|
1543
1631
|
EPUB, a PDF through WeasyPrint) every image that is a PDF, `` or `<img src="plot.pdf">`, is converted to
|
|
1544
1632
|
an SVG with poppler's `pdftocairo` (or `mutool`, `pdf2svg`, `inkscape`) and stays vector; the first page is used and the
|
|
@@ -1796,6 +1884,17 @@ document or its metadata files say (the command line beats all of them);
|
|
|
1796
1884
|
`translit:` is the romanization packs of the name lookup. `PDFMD_CONFIG=other.yaml`
|
|
1797
1885
|
uses another file, `PDFMD_CONFIG=` (empty) none.
|
|
1798
1886
|
|
|
1887
|
+
**Settings for a folder** (v3.29): a `.pdfmd/config.yaml` in a document's folder, or in any folder above it, has the same
|
|
1888
|
+
`options:` for everything under it. The order, strongest first: the command line, the document's `pdfmd-options`, its metadata
|
|
1889
|
+
files, the folder settings (the nearest folder first, then the ones above it), your global `config.yaml`, pdfmd's own defaults.
|
|
1890
|
+
`inherit: false` in a folder's file stops the walk upward there. A folder cannot set what belongs to this computer (`translit`,
|
|
1891
|
+
`setup-ui`, `disabled`): they are ignored with a `WARN`. A mapping such as `stamp:` or `backup:` in a folder's file stays off
|
|
1892
|
+
until it says `enabled: true`, as in the global file. A build lists the folder files it used on its `FOUND` line
|
|
1893
|
+
(`--verbose`: `AUTO SETTINGS`). A folder's options cannot name code (a Lua filter or a preamble is read from the document's own
|
|
1894
|
+
front matter only), a `.pdfmd/config.yaml` owned by another user (a shared `/tmp`) is not read, and a path in it (`css: house.css`)
|
|
1895
|
+
is relative to the document, as everywhere, not to the folder file. Writing the file from `pdfmd --setup DIR`, and carrying it in
|
|
1896
|
+
an attached source, are not done yet.
|
|
1897
|
+
|
|
1799
1898
|
```yaml
|
|
1800
1899
|
translit: [greek, hangul]
|
|
1801
1900
|
options:
|