Latex-Maven-Plugin

Release History

Version Date Description 2.1 2023-08-28 build with latexmk and generalized reproducibility, readed glossary 2.0 2024-04-23 1.8 2022-04-20 Essentially, added support for xdv format. 1.7 2022-04-19 Essentially, made all documents compilable with latexmk 1.6 2022-04-16 Main feature: minimum support for pythontex. Added support for unregistred converters. Added inclusion/exclusion of latex main files. 1.5 2022-05-03 First release with change management. This includes version of this software but also of the converters used. 1.4 2018-06-19 TBD 1.3 2016-09-09 Renamed plugin 1.2 2012-02-07 TBD

Release 2.1 – 2023-08-28

Type Changes By Fix Based on new rerun algorithm could reliably re-add classical glossary to manual. reissner Fix Rerun algorithms now based on hash of files aux, idx, glo and pytxcode. The new algorithm is better in that it is correct for pytxcode, taking into account pythontex. reissner Fix Tried with enabled assertions through `export MAVEN_OPTS="-ea"` Fixed certain points in code, deactivated and documented others in backlog. reissner Fix Using getter methods for filtering command names in injections instead of parameters directly, fixes the problem for commands without category, that the parameter is `name:category` but what is needed is `name` returned by the getter. reissner Add Feature that for filtering injections not only fields annotated @RuntimeParameters (parameters), but also getter methods (i.e. methods without parameters) annotated @RuntimeParameters. Apply this to injection latexmkrc fixes the problem with filtering names of commands without a category (see the according fix). reissner Add added parameter latexmkUsage on usage of latexmk: NotAtAll, AsBackend, Fully added parameters latexmkCommand and latexmkOptions. All this is fully functional and integrates well with document development with latexmk reissner Add added magic comment latexmk with latexmk short for latexmk=true but also latexmk=false is possible. Generalized magic comment chkDiff into chkDiff=true|false, where old chkDiff is short for chkDiff=true. reissner Add Injection .latexmkrc can now read magic comments and extract information from the opening. For example it reads chkDiff and program (compiler). This is used when invoking latexmk from this builder but also if invoking manually for document development. For example latexmk reading magic comments in comfortable when initiating reproducibiltiy checks. latexmk knows whether to create reproducible or not. Magic comments override settings in the pom and allow individual treatment of each document. reissner Add Unlike before when reproducibiliby checks worked only for files with restricted metadata, as e.g. data had to be always 1970-01-01, the only restriction is now the timezone UTC. This is a useful restriction as it allows reproducibility in time and space. The concept behind is that when an original PDF is present, the new PDF is compiled with the enviroment variables setting timestamp/timezone read from the original PDF ensuring that timezone is UTC. A third setting ensures that timestamp affects both metadata and visible data. This works also from within latexmk. To that end, injection latexmkrc is extended considerably, for example reading magic comments of TEX files but also metadata from PDF files. reissner Add reimplemented ntlatex which has functionality like invoking latexmk: - now adapts to the settings without need to reinstall. - reads magic comments This is now important as latexmk may not recompile in any case wanted. reissner Add Systematic logging of infos in processing (after preprocessing) Essentially, the new system reflects the structure of the program: - in outer loop visit all latex main files accordingly display the name of the latex main file to be 'processed' The word process is the same as used for graphic files in preprocessing. If a magic comment overwrites the compiler given by configuration: display an info message. The compiler covers more than one target. - inside first adapt the targets according to the document class (see docClassesToTargets), if present magic comments. Log when setting targets is overwritten that way. - inner loop: pass through the targets For special targets (currently pdf only) log if usage of latexmk or chkdiff are overwritten by magic comments. Finally, notify if chkdiff succeeded so we know it has been performed. (else the build fails anyway) reissner Fix In documentation added command \tool preparing a tools glossary. reissner Add from bibliography extracted bib on tools. reissner Fix logging: file are no longer absolute but relative to the project folder. This improves overview and is more secure, as the environment is no longer exposed. reissner Fix header.tex: patch for package listings: take into account that \makeatletter, \makeatother and \xpatchcmd don't work inside an argument reissner Fix latexmk may be correct even if target is not updated. Took this into account as this is very special. Note also that ntlatex has been generalized accordingly. reissner Fix corrected default value for setting 'diffDirectory' reissner Fix vmdiff: finds differences in both visual content and important metadata. reissner Update Versions of tools: gnuplot, exiftool, python, ... reissner

Release 2.0 – 2024-04-23

Type Changes By Add added several document classes to general usage: beamer, leaflet, scrlttr2, minimal reissner Add Low level addition: The pattern 'patternLatexMainFile' used to detect latex main files has been extended and offers now more functionality: - PassOptionsToPackage is necessary because now crucial packages are loaded in a standardized header. But the options depend on the document, e.g. on its class - newbool, setbool is required e.g. for beamer clas - DocumentMetadata will have many usecases e.g. setting pdf version. To support it, even the class of regular expressions had been extended because structures may be nested in arbitrary depth - input is a fallback if even more specific patter would be needed - arguments are generalized in a subtile way - argument of documentclass/style is generalized This allows to define options influencing more than one package unlike PassOptionsToPackage Besides matching, also this pattern can extract pieces of information: - magic comments. In this version the latex compiler and the target. That way, both can be specified for the document individually overwriting the basic setting. - the documentclass which is also used to restrict the target. E.G. beamer, leaflet and letter are restricted to pdf. reissner Add High level addition: support of magic comments: this allows to treat particular documents individually, - compiling with pdflatex instead of default lualatex - setting targets individually This affects parameter patternCreatedFromLatexMain. Magic comments overwrite other settings. reissner Add High level addition: make output formats depend on document class (e.g. no html for beamer or letter). using parameter 'docClassesToTargets'. But as a consequence, need a defined set of document classes and let detect the document class via the 'patternLatexMainFile'. Others are processed with warning and targets cannot be restricted. reissner Add goal inj with parameter: injecting files are - config files .latexmkrc, .chktexrc with lot of improvements - headers - header.tex intended to be input always - headerGrp for graphic - headerSuppressMetaPdf used in conjunction with reproducibility of PDFs - instVScode4tex.sh, - ntlatex for support of monitoring reproducibility of PDFs - pythontexW and depythontexW for including code into latex documents To that end, added @RuntimeParameter, which unlike @Parameter persists at runtime In Settings: toString now based on reflection. In Settings: introduced filtering omg. Also extended clr cleaning all what inj creates added parameter injections and added property latex.injections for command line use Some injections are influenced by the config, some are executable. reissner Add some injections are set executable and this action is even supervised, so a warning indicates if that goes wrong. reissner Add injections as properties. In particular scripts are likely to be put in workspace that way, because this is done once. Injections to be updated each build run, are better injected classically via plugin config. reissner Add developped header.tex, which is intended as always to be included, further: added A4 opt ion to geometry, added option destlabel to hyperref, tocbibind, microtype, anyfontsize (e.g. for beamer), xurl, babel, csquote, ... but also extracted includes related with graphics and meta info into separate headers or into the tex file itself. Eliminated also packages: ifthen replaced by \IfClassLoadedTF and \IfPackageLoadedTF. Tricked about useful ordering. So far it is possible to include header.tex always preceeded or followed by other package loading. reissner Add concept for creating reproducible documents which allows dates. The core idea is to use SOURCE_DATE_EPOCH and FORCE_SOURCE_DATE. To create a document of diffing use ntlatex (no time latex) which is one of the new injections reissner Add To PDF documents created added meta info. This is disentangled now from headers. injection headerSuppressMetaPdf suppresses the rest reissner Add For document development: support \include instead of \input and use this in the manual. That speeds up the pdf conversion and requires just removal of additional aux files. reissner Add XXXXXXXXXXpartial support for destlabel. Would be good for HMTL and docs there. Rest on backlog. reissner Add Weak CI: could compile all documents in a CI pipeline, but diff did not yet work. So the test consist in successful compilation. reissner Add to prepare place in maven central: added gpg plugin and issue management. reissner Add Updated and extended default string for setting patternCreatedFromLatexMain reissner Add added items to backlog. reissner Add undergo buildParams.tex and pom4pdf.xml a filter inserting settings of this plugin. reissner Fix because of a bug in package hyperref disable loading of auxhook before loading hyperref and enable after in order not to affect package transparency reissner Fix extended pattern 'patternWarnLatex' to detect warnings in log files. reissner Fix xelatex never enters if branch of \ifpdf! Take this into account for - suppression of meta info - creation of html and related with 'tex4ht' that reissner Fix Design: e.g. - core package cannot depend on mojo package - layered architecture with low level services TexFileUtils - eliminated getTargetSet() reissner Fix could update maven plugin framework because could find the critical code causing errors in class Target. reissner Fix eliminated lot of warnings, also from ltex, extended dictionary, reformatted tex files. reissner Fix in LatexProcessor.runDiffPdf concerning return values. reissner Fix interpretation of return code (triggered by fix with with runDiffPdf and by introducing chktex) reissner Fix base LatexProcessor.needRun on both log AND aux file. reissner Fix fixed several default values in config of this maven plugin in pom. reissner Fix in headers replaced booleans by \IfPackageLoadedTF and \IfClassLoadedTF reissner Fix in header.tex: options of package rerunfilecheck which corrects page numbers in index. reissner Add in site: now use automatically generated site on goals. reissner Add documentation on the web site. before it was mainly the manual in PDF format. Now replace apt by md and md.vm unify. Used automatic generation of documentation. Had to adapt apidocs of Mojos. Added a lot of examples. reissner Add Added a lot of literature. reissner Add To manual added lots of material on document development and preferred usage reissner updated literature. Now for the updated literature the reference name includes the date. This shall be now a general rule but this is realized only if something changes. reissner Add added litPub.bib to use in dependent projects like our quality management project https://github.com/Reissner/QMngMnt. reissner Add added documentation on files fdb_latexmk. Strictly speaking, this is needed in later versions invoking latexmk. reissner Add modified .latexmkrc and the headers so that latexmk with that file yields the same result as this software with default settings. This is a bunch of changes. Also added bib2gls so that also with bib2gls this works as we want for this software (prepare release 2.1) Turned .latexmkrc into a resource and added to pom accordingly. Let .latexmkrc undergo a filter inserting settings of this plugin. This is to synchronize. Note that this is not completed. Correct .latexmkrc creating figures from mpost. Added to site reissner Add took chktex into account; added also lots of warnings based on the return value in particular introduced .chktexrc as a resource added goal chk and added to targets and to the default set. Note that chk does not emit output files. Added link to .chktexrc injected to each folder containing tex files. Also .chktexrc is synchronized with header.tex: there are commands functionally equivalent with known commands but arguments not checked by chktex. They are named xxxNoChk{...} reissner Update updated versions of converters, dependencies and plugins, java, ... parameterized a lot of versions. Replaced default pdflatex by lualatex updated logging mechanism. reissner Fix in goal vrs generalized patterns for versions to make correct for general texlive. and took into account that a tool may be never used and thus not installed. reissner Fix in goal vrs now take also languages java (this is a java plugin), python for (de)pythontex and perl (for latexmk) into account and also built tools maven and ant. reissner Add document minTikz.tex showing that fig2dev can export 'everything' lossless in tikz format. Here, all kinds of objects can be exported, but still not clear whether this is true with all options. This illustrates documentclass 'minimal' and is preparatory for rework on fig files. reissner Add rework on mpost: much better and also simpler results and better documentation. In particular, read log files and scan for warnings and errors. luamplib, documentation reissner Add updated parameters of inkscape: long form. reissner Add for tool ebb: add parameter createBoundingBoxes and added explanation of fine type xbb and bb reissner

Release 1.8 – 2022-04-20

Type Changes By Fix goal vrs works again. reissner Add support xdv format. In particular added warning WLP07. reissner

Release 1.7 – 2022-04-19

Type Changes By Fix Extracted chapters from manual, renamed manual: shorter name, now pythontex works with latexmk. This is a workaround for a bug either in latexmk or in lualatex. All works fine for other latex engines. reissner Fix Corrected .latexmkrc. Now works at least for pythontexInOut, but not for the manual still... no idea why reissner Fix Eliminated bad boxes reissner Update In .gitignore eliminated files created by pythontex which were silently vital for success of tests. Not before now we have quality assured. reissner Update Eliminated dependency on emacs and auctex. This affects also .gitignore. reissner Update In pom now documentation is created with version 1.6 including pythontex. reissner

Release 1.6 – 2022-04-16

Type Changes By Add extracted new way to determine the latex main file from changex.xml into detMainFile.md. This preparatory for the next release. reissner Update pom: version updates reissner Add metadata: tried on pdfversion and added documentation reissner Fix reworked manuals so that they compile for any tex engine and also for htlatex. reissner Add extended and restructured backlog for further releases. reissner Add added config for vscode, the new editor. reissner Add added a lot of external documentation and also restructured. This affects also the literature file lit.bib. Focus is on engines, recorder option, distributions, metapost, ... reissner Fix including xdv alongside dvi on a minimum effort base. Still preparing a better support. reissner Add added document recorder.tex and its artifact. reissner Add added document latexEngines.tex and its artifact. Gained an overview over the tex engines above all xelatex reissner Add added documentation for pythontex and depythontex going beyond the manual but needed for implementation of this software. Added references to original software by Poore reissner Add added BuildFailureException TLP02 reissner Add added latexmkrc to support document development better. reissner Add added invocation of pythontex (depythontex not yet) including documentation. This is the core functionality for this release. reissner Add added converter depythontex (pythontex was added already.) reissner Fix Generalized default value for patternLatexMainFile taking package names into account which contain `-` in addition to letters. reissner Update Turned lualatex into the default. This is a kind of update because the former default pdflatex starts to outdate. Nevertheless, a strong motivation is pythontex: I want to create figures without memory restrictions, which is offered by lualatex. reissner Update Updated versions, version patterns and strings, also form e.g. inkscape, pdftotext, pdfinfo, exiftool, gnuplot. reissner Add Added support for unregistered converters specifying their category for safety. This is needed for the moment for (de-)pythontex. Although removed in later releases is useful in its own right. reissner Add Added parameters 'mainFilesIncluded' and 'mainFilesExcluded' and added according warnings WPP05, WPP06 and WPP07. reissner

Release 1.5 – 2022-05-03

Type Changes By Add Added check for reproducibility. This is a step towards a clean release management as this shall remove the dependency of this plugin to itself, potentially the same version. reissner Add Added VersionMojo to phase validate. To that end, added configuration versionsWarnOnly and convertersExcluded. reissner Add Added validity checks on converters: registered, in correct category. In the course of this, added a lot of exceptions: TSS05, TSS06, TSS07 and TSS08 reissner Add Prepared for check in phase validate or initialize: Added a way to exclude converters. reissner Add Added rudimentary change management. reissner Add Added a readme.md file. reissner Update Converter gnuplot from gp to pdf changed version and command line interface. Likewise for inkscape, the converter from svn to pdf. Added according manuals. Updated converters again and again. reissner Fix Aligned licenses: eliminated contradictions: License delivered is what is given top level on github. reissner Add Handling of versions: now in a separate resource file for access from markdown, latex and java (the latter to come). Also updated several times and proved for now that the format is useful. Among the changes: reissner Update Updated a lot of versions in pom. reissner Fix Eliminated most of the javadoc failures. reissner Add Use maven enforcer plugin. reissner Add added docs for various packages. reissner Add added goal vrs displaying versions also of the converters and whether they are valid. reissner Add added exception TSS04 checking validity of targets. reissner

Release 1.4 – 2018-06-19

Type Changes By Add added goal help reissner Update email address: ernst.reissner@simuline.eu, site org.m2latex --> eu.simuline.m2latex also repo reissner

Release 1.3 – 2016-09-09

Type Changes By Update Renamed plugin due to new convention into latex-maven-plugin and changed version. (without release plugin) CAUTION: Thus no snapshot release was created and so there is more than one checkin with a release version, i.e. no snapshot. reissner Update Updated java version to 1.5, replaced javadoc tags by annotations, updated junit to 4.12, replaced easymock by mockito, updated all to eu.simuline.m2latex reissner Add Made rerun mechanism configurable: added parameter patternNeedAnotherLatexRun containing a pattern to regocnize need to rerun from log file and added parameter maxNumReruns signifying a maximum number of reruns. reissner Add added parameter tex4htOutputDirectory reissner Add added conversion to rtf via latex2rtf and parameter latex2rtfCommand reissner Add added conversion to odt and docx also via htlatex and dot2doc adding parameter odt2docCommand reissner Add added conversion of document to dvi and ps and conversion of graphic to eps besides pdf reissner Add added conversion to txt via pdftotext with parameter pdf2txtCommand reissner Add added support for makeindes along the same lines as bibtex also multiple indices and split ones. added glossaries adding parameters makeIndexCommand reissner Add now in one run conversion in many formats can be done and made configurable through the parameter targets. There are goals to create a specified output format e.g running mvn latex:pdf or all formats configured by mvn latex:cfg reissner Add added detection of failures and warnings for latex, htlatex auxiliary programs like bibtex. In particular added parameters patternErrLatex, patternErrMakeindex Made display of warnings and box-warnings over/underfull configurable adding parameters debugWarnings and debugBadBoxes Detected errors and warnings on conversions due to monitoring of files to be created. TBD: just mere existence, but could be also modification time. Added warnings on files skipped. reissner Add added handling of toc, listoffigures, listoftables, listoflistings reissner Add added support for new graphic formats fig, gnuplot, jpg, png, svg with parameters fig2devCommand, reissner Add added selection of latex documents from all files with ending .tex reissner Add added javadoc plugin reissner Add added ant tasks besides the maven plugin dividing the software in mojos defining a mavan plugin, ant tasks and core classes in separate packages. reissner Add added a manual written in tex and to be compiled by this plugin and by ant task defined here. reissner Add added documentation of latex pacakges, tools, and file formats including self written ones on fig and dvi. reissner Add processing in source directories which is considered the working directory and move of results into target directory. Also clean goal and task to restore the source directory. This eases development of latex files considerably because one can invoke the needed tools directly without using this plugin/task. Also one can use forward/backward search between editor and viewer. But the viewer has to be in the source directory then. Nevertheless cleaning up works. reissner Add added goal/task clear. Added goals grp (graphics) and chk (check) reissner

Release 1.2 – 2012-02-07

No changes in this release.