Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing dependencies #45

Merged
merged 1 commit into from
May 7, 2024
Merged

Conversation

sneakers-the-rat
Copy link
Contributor

Running from a basictex install, found a number of dependencies that are missed in the dockerfile (i assume they're installed in the base image).

Also added a note to install the hack font, which is done in the docker image but not mentioned in README

@tarleb
Copy link
Collaborator

tarleb commented May 5, 2024

The LaTeX packages are already part of the default pandoc/latex image (see pandoc/dockerfiles.

The comment on Hack would be a good addition though.

@sneakers-the-rat
Copy link
Contributor Author

Probably would be good to document these for ppl who dont want to run it from the dockerfile along with that, no?

@tarleb
Copy link
Collaborator

tarleb commented May 6, 2024

In general yes. The problem is that such lists have the tendency to go out of date. So if we do document them, then we should also describe how to update the list. It currently contains 221 packages:

$ docker run --rm --entrypoint=tlmgr openjournals/inara list --only-installed
i ae: Virtual fonts for T1 encoded CMR-fonts
i algorithmicx: The algorithmic style you always wanted
i algorithms: A suite of tools for typesetting algorithms in pseudo-code
i amscls: AMS document classes for LaTeX
i amsfonts: TeX fonts from the American Mathematical Society
i amsmath: AMS mathematical facilities for LaTeX
i atbegshi: Execute stuff at \shipout time
i atveryend: Hooks at the very end of a document
i auxhook: Hooks for auxiliary files
i babel: Multilingual support for LaTeX, LuaLaTeX, XeLaTeX, and Plain TeX
i babel-basque: Babel contributed support for Basque
i babel-czech: Babel support for Czech
i babel-danish: Babel contributed support for Danish
i babel-dutch: Babel contributed support for Dutch
i babel-english: Babel support for English
i babel-finnish: Babel support for Finnish
i babel-french: Babel contributed support for French
i babel-german: Babel support for documents written in German
i babel-hungarian: Babel support for Hungarian (Magyar)
i babel-italian: Babel support for Italian text
i babel-norsk: Babel support for Norwegian
i babel-polish: Babel support for Polish
i babel-portuges: Babel support for Portuges
i babel-spanish: Babel support for Spanish
i babel-swedish: Babel support for typesetting Swedish
i babelbib: Multilingual bibliographies
i beamer: A LaTeX class for producing presentations and slides
i biber: A BibTeX replacement for users of BibLaTeX
i biber.x86_64-linuxmusl: x86_64-linuxmusl files of biber
i biblatex: Sophisticated Bibliographies in LaTeX
i bibtex: Process bibliographies (bib files) for LaTeX or other formats
i bibtex.x86_64-linuxmusl: x86_64-linuxmusl files of bibtex
i bidi: Bidirectional typesetting in plain TeX and LaTeX, using XeTeX
i bigintcalc: Integer calculations on very large numbers
i bitset: Handle bit-vector datatype
i bookmark: A new bookmark (outline) organization for hyperref
i booktabs: Publication quality tables in LaTeX
i caption: Customising captions in floating environments
i carlisle: David Carlisle's small packages
i cleveref: Intelligent cross-referencing
i cm: Computer Modern fonts
i cmap: Make PDF files searchable and copyable
i collection-basic: Essential programs and files
i collection-context: ConTeXt and packages
i collection-latex: LaTeX fundamental packages
i colorprofiles: Collection of free ICC profiles
i colortbl: Add colour to LaTeX tables
i context: The ConTeXt macro package
i context-account: A simple accounting package
i context-algorithmic: Algorithm handling in ConTeXt
i context-animation: Generate fieldstack based animation with ConTeXt
i context-annotation: Annotate text blocks
i context-bnf: A BNF module for ConTeXt
i context-chromato: ConTeXt macros for chromatograms
i context-cmscbf: Use Computer Modern bold Caps and Small-caps in ConTeXt
i context-cmttbf: Use Computer Modern Typewriter bold font in ConTeXt
i context-construction-plan: Construction plans in ConTeXt
i context-cyrillicnumbers: Write numbers as cyrillic glyphs
i context-degrade: Degrading JPEG images in ConTeXt
i context-fancybreak: Overfull pages with ConTeXt
i context-filter: Run external programs on the contents of a start-stop environment
i context-french: Support for writing French in ConTeXt
i context-fullpage: Overfull pages with ConTeXt
i context-gantt: GANTT module for ConTeXt
i context-gnuplot: Inclusion of Gnuplot graphs in ConTeXt
i context-handlecsv: Data merging for automatic document creation
i context-inifile: An ini-file pretty-printer, using ConTeXt
i context-layout: Show ConTeXt layouts
i context-letter: ConTeXt package for writing letters
i context-lettrine: A ConTeXt implementation of lettrines
i context-mathsets: Set notation in ConTeXt
i context-notes-zh-cn: Notes on using ConTeXt MkIV
i context-rst: Process reStructuredText with ConTeXt
i context-ruby: Ruby annotations in ConTeXt
i context-simplefonts: Simplified font usage for ConTeXt
i context-simpleslides: A module for preparing presentations
i context-title: Place document titles
i context-transliterator: Transliterate text from 'other' alphabets
i context-typearea: Something like Koma-Script typearea
i context-typescripts: Small modules to load various fonts for use in ConTeXt
i context-vim: Generate ConTeXt syntax highlighting code from vim
i context-visualcounter: Visual display of ConTeXt counters
i context.x86_64-linuxmusl: x86_64-linuxmusl files of context
i csquotes: Context sensitive quotation facilities
i ctablestack: Catcode table stable support
i dehyph: German hyphenation patterns for traditional orthography
i draftwatermark: Put a grey textual watermark on document pages
i dvipdfmx: An extended version of dvipdfm
i dvipdfmx.x86_64-linuxmusl: x86_64-linuxmusl files of dvipdfmx
i dvips: A DVI to PostScript driver
i dvips.x86_64-linuxmusl: x86_64-linuxmusl files of dvips
i ec: Computer modern fonts in T1 and TS1 encodings
i embedfile: Embed files into PDF
i enctex: A TeX extension that translates input on its way into TeX
i environ: A new interface for environments in LaTeX
i epstopdf-pkg: Call epstopdf "on the fly"
i etex: An extended version of TeX, from the NTS project
i etex-pkg: E-TeX support package
i etexcmds: Avoid name clashes with e-TeX commands
i etoolbox: e-TeX tools for LaTeX
i euenc: Unicode font encoding definitions for XeTeX
i euler: Use AMS Euler fonts for math
i eurosym: Metafont and macros for Euro sign
i everyshi: Take action at every \shipout
i fancyhdr: Extensive control of page headers and footers in LaTeX2e
i fancyvrb: Sophisticated verbatim text
i filehook: Hooks for input files
i firstaid: First aid for external LaTeX files and packages that need updating
i fix2col: Fix miscellaneous two column mode features
i float: Improved interface for floating objects
i fontsetup: A front-end to fontspec, for selected fonts with math support
i fontspec: Advanced font selection in XeLaTeX and LuaLaTeX
i footnotehyper: hyperref aware footnote.sty
i fp: Fixed point arithmetic
i framed: Framed or shaded regions that can break across pages
i geometry: Flexible and complete interface to document dimensions
i gettitlestring: Clean up title references
i glyphlist: Adobe Glyph List and TeX extensions
i graphics: The LaTeX standard graphics bundle
i graphics-cfg: Sample configuration files for LaTeX color and graphics
i graphics-def: Colour and graphics option files
i grfext: Manipulate the graphics package's list of extensions
i grffile: Extended file name support for graphics (legacy package)
i hatching: MetaPost macros for hatching interior of closed paths
i hopatch: Load patches for packages
i hycolor: Implements colour for packages hyperref and bookmark
i hyperref: Extensive support for hypertext in LaTeX
i hyperxmp: Embed XMP metadata within a LaTeX document
i hyperxmp.x86_64-linuxmusl: x86_64-linuxmusl files of hyperxmp
i hyph-utf8: Hyphenation patterns expressed in UTF-8
i hyphen-base: core hyphenation support files
i hyphen-basque: Basque hyphenation patterns.
i hyphen-czech: Czech hyphenation patterns.
i hyphen-danish: Danish hyphenation patterns.
i hyphen-dutch: Dutch hyphenation patterns.
i hyphen-english: English hyphenation patterns.
i hyphen-finnish: Finnish hyphenation patterns.
i hyphen-french: French hyphenation patterns.
i hyphen-german: German hyphenation patterns.
i hyphen-hungarian: Hungarian hyphenation patterns.
i hyphen-italian: Italian hyphenation patterns.
i hyphen-norwegian: Norwegian Bokmal and Nynorsk hyphenation patterns.
i hyphen-polish: Polish hyphenation patterns.
i hyphen-portuguese: Portuguese hyphenation patterns.
i hyphen-spanish: Spanish hyphenation patterns.
i hyphen-swedish: Swedish hyphenation patterns.
i hyphenex: US English hyphenation exceptions file
i ifmtarg: If-then-else command for processing potentially empty arguments
i ifplatform: Conditionals to test which platform is being used
i iftex: Am I running under pdfTeX, XeTeX or LuaTeX?
i infwarerr: Complete set of information/warning/error message macros
i intcalc: Expandable arithmetic operations with integers
i jmn: special fonts for ConTeXt
i knuth-lib: Core TeX and Metafont sources from Knuth
i knuth-local: Knuth's local information
i kpathsea: Path searching library for TeX-related files
i kpathsea.x86_64-linuxmusl: x86_64-linuxmusl files of kpathsea
i kvdefinekeys: Define keys for use in the kvsetkeys package
i kvoptions: Key value format for package options
i kvsetkeys: Key value parser with default handler support
i l3backend: LaTeX3 backend drivers
i l3kernel: LaTeX3 programming conventions
i l3packages: High-level LaTeX3 concepts
i latex: A TeX macro package that defines LaTeX
i latex-bin: LaTeX executables and man pages
i latex-bin.x86_64-linuxmusl: x86_64-linuxmusl files of latex-bin
i latex-fonts: A collection of fonts used in LaTeX distributions
i latex-lab: LaTeX laboratory
i latexconfig: configuration files for LaTeX-related formats
i latexmk: Fully automated LaTeX document generation
i latexmk.x86_64-linuxmusl: x86_64-linuxmusl files of latexmk
i letltxmacro: Let assignment for LaTeX macros
i lineno: Line numbers on paragraphs
i listings: Typeset source code listings using LaTeX
i lm: Latin modern fonts in outline formats
i lm-math: OpenType maths fonts for Latin Modern
i logreq: Support for automation of the LaTeX workflow
i ltxcmds: Some LaTeX kernel commands for general use
i ltxmisc: Miscellaneous LaTeX packages, etc
i lua-alt-getopt: Process application arguments the same way as getopt_long
i lua-uni-algos: Unicode algorithms for LuaTeX
i luacode: Helper for executing lua code from within TeX
i luahbtex: LuaTeX with HarfBuzz library for glyph shaping
i luahbtex.x86_64-linuxmusl: x86_64-linuxmusl files of luahbtex
i lualatex-math: Fixes for mathematics-related LuaLaTeX issues
i lualibs: Additional Lua functions for LuaTeX macro programmers
i luaotfload: OpenType 'loader' for Plain TeX and LaTeX
i luaotfload.x86_64-linuxmusl: x86_64-linuxmusl files of luaotfload
i luatex: The LuaTeX engine
i luatex.x86_64-linuxmusl: x86_64-linuxmusl files of luatex
i luatexbase: Basic resource management for LuaTeX code
i makecmds: The new \makecommand command always (re)defines a command
i makeindex: Makeindex development sources
i makeindex.x86_64-linuxmusl: x86_64-linuxmusl files of makeindex
i manfnt-font: Knuth's "manual" fonts
i marginnote: Notes in the margin, even where \marginpar fails
i mathspec: Specify arbitrary fonts for mathematics in XeTeX
i memoir: Typeset fiction, non-fiction and mathematical books
i metafont: A system for specifying fonts
i metafont.x86_64-linuxmusl: x86_64-linuxmusl files of metafont
i metapost: A development of Metafont for creating graphics
i metapost.x86_64-linuxmusl: x86_64-linuxmusl files of metapost
i mflogo: LaTeX support for Metafont logo fonts
i mflogo-font: Metafont logo font
i mfnfss: Packages to typeset oldgerman and pandora fonts in LaTeX
i mfware: Supporting tools for use with Metafont
i mfware.x86_64-linuxmusl: x86_64-linuxmusl files of mfware
i microtype: Subliminal refinements towards typographical perfection
i modes: A collection of Metafont mode_def's
i mptopdf: mpost to PDF, native MetaPost graphics inclusion
i mptopdf.x86_64-linuxmusl: x86_64-linuxmusl files of mptopdf
i ms: Various LaTeX packages by Martin Schroder
i multirow: Create tabular cells spanning multiple rows
i natbib: Flexible bibliography support
i newcomputermodern: Computer Modern fonts including matching non-latin alphabets
i npp-for-context: ConTeXt plugin for Notepad++
i oberdiek: A bundle of packages submitted by Heiko Oberdiek
i orcidlink: Insert hyperlinked ORCiD logo
i pagesel: Select pages of a document for output
i parskip: Layout with zero \parindent, non-zero \parskip
i pdfescape: Implements pdfTeX's escape features using TeX or e-TeX
i pdflscape: Make landscape pages display as landscape
i pdftex: A TeX extension for direct creation of PDF
i pdftex.x86_64-linuxmusl: x86_64-linuxmusl files of pdftex
i pdftexcmds: LuaTeX support for pdfTeX utility functions
i pgf: Create PostScript and PDF graphics in TeX
i plain: The Plain TeX format
i polyglossia: An alternative to babel for XeLaTeX and LuaLaTeX
i preprint: A bundle of packages provided "as is"
i pslatex: Use PostScript fonts by default
i psnfss: Font support for common PostScript fonts
i pspicture: PostScript picture support
i refcount: Counter operations with label references
i rerunfilecheck: Checksum based rerun checks on auxiliary files
i scheme-basic: basic scheme (plain and latex)
i scheme-infraonly: infrastructure-only scheme (no TeX at all)
i scheme-minimal: minimal scheme (plain only)
i selnolig: Selectively disable typographic ligatures
i seqsplit: Split long sequences of characters in a neutral way
i setspace: Set space between lines
i soul: soul - Hyphenation for letterspacing, underlining, and more
i stmaryrd: St Mary Road symbols for theoretical computer science
i stringenc: Converting a string between different encodings
i subfig: Figures broken into subfigures
i symbol: URW 'Base 35' font pack for LaTeX
i tcolorbox: Coloured boxes, for LaTeX examples and theorems, etc
i tex: A sophisticated typesetting engine
i tex-ini-files: Model TeX format creation files
i tex.x86_64-linuxmusl: x86_64-linuxmusl files of tex
i texlive-common: TeX Live documentation (common elements)
i texlive-en: TeX Live manual (English)
i texlive-msg-translations: translations of the TeX Live installer and TeX Live Manager
i texlive-scripts: TeX Live infrastructure programs
i texlive-scripts.x86_64-linuxmusl: x86_64-linuxmusl files of texlive-scripts
i texlive.infra: basic TeX Live infrastructure
i texlive.infra.x86_64-linuxmusl: x86_64-linuxmusl files of texlive.infra
i tipa: Fonts and macros for IPA phonetics characters
i titlesec: Select alternative section titles
i tlshell: GUI frontend (tcl/tk-based) for tlmgr
i tlshell.x86_64-linuxmusl: x86_64-linuxmusl files of tlshell
i tools: The LaTeX standard tools bundle
i translator: Easy translation of strings in LaTeX
i trimspaces: Trim spaces around an argument or within a macro
i ulem: Package for underlining
i unicode-data: Unicode data and loaders for TeX
i unicode-math: Unicode mathematics support for XeTeX and LuaTeX
i uniquecounter: Provides unlimited unique counter
i upquote: Show "realistic" quotes in verbatim
i url: Verbatim with URL-sensitive line breaks
i xcolor: Driver-independent color extensions for LaTeX and pdfLaTeX
i xdvi: A DVI previewer for the X Window System
i xdvi.x86_64-linuxmusl: x86_64-linuxmusl files of xdvi
i xetex: An extended variant of TeX for use with Unicode sources
i xetex.x86_64-linuxmusl: x86_64-linuxmusl files of xetex
i xetexconfig: crop.cfg for XeLaTeX
i xkeyval: Extension of the keyval package
i xstring: String manipulation for (La)TeX
i xunicode: Generate Unicode characters from accented glyphs
i xurl: Allow URL breaks at any alphanumerical character
i zapfding: URW 'Base 35' font pack for LaTeX

@sneakers-the-rat
Copy link
Contributor Author

sure sure, understood there's some balance there.

so thinking specifically about the use case here, it's ultimately a thin wrapper around pandoc, so it would be nice to be able to run it without needing the full docker container (eg. for proofing papers or creating JOSS-like papers in other contexts). What would it take for that to be the case? If you have a full version of TeX installed it's no problem since you install every package of CTAN by default, but distributions like basictex don't do that, so we need to install some but not all of those packages. Adding those deps to the docker image is a form of passive documentation (that shouldn't affect functionality of the docker image, bc it should just skip installing those since they already are in the base image).

IMO it would be nice to have a self-contained template, so we are keeping our internal infra at the same level that we expect of the packages that we review. That would mean making a more formal LaTeX class that uses \RequirePackage or DEPENDS.txt.

The things I have added are ones that are directly used in the template:

or are otherwise required.

So short of restructuring our templates into CTAN packages (which would probably be a pain) I think adding these deps would be nice, and then when we make changes to the templates that add/remove dependencies we add/remove them from this dockerfile, OR we could add a line in the README like "go to the root docker image and install all these packages" which would be less precise (ie. require more installs than necessary) but wouldn't require changing the docker file here.

@tarleb
Copy link
Collaborator

tarleb commented May 7, 2024

That's a good argument. I'm merging this.

However, I can't guarantee that this list will stay like this. I think it would be equally, if not more, beneficial to only list the packages that are required on top of those required by pandoc (listed here). But let's use your version for now.

@tarleb tarleb merged commit 3215120 into openjournals:main May 7, 2024
1 check passed
@tarleb
Copy link
Collaborator

tarleb commented May 7, 2024

I've cleaned up and documented the list in pandoc/dockerfiles and the list here. Please let me know if there are further improvements that we could make.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants