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 |
---|---|---|
![]() |
Now admits package showlabels also. | reissner |
![]() |
Based on new rerun algorithm could reliably re-add classical glossary to manual. | reissner |
![]() |
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 |
![]() |
Tried with enabled assertions through `export MAVEN_OPTS="-ea"` Fixed certain points in code, deactivated and documented others in backlog. | reissner |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
In documentation added command \tool preparing a tools glossary. | reissner |
![]() |
from bibliography extracted bib on tools. | reissner |
![]() |
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 |
![]() |
header.tex: patch for package listings: take into account that \makeatletter, \makeatother and \xpatchcmd don't work inside an argument | reissner |
![]() |
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 |
![]() |
corrected default value for setting 'diffDirectory' | reissner |
![]() |
vmdiff: finds differences in both visual content and important metadata. | reissner |
![]() |
Versions of tools: gnuplot, exiftool, python, ... | reissner |
Release 2.0 – 2024-04-23
Type | Changes | By |
---|---|---|
![]() |
added several document classes to general usage: beamer, leaflet, scrlttr2, minimal | reissner |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
some injections are set executable and this action is even supervised, so a warning indicates if that goes wrong. | reissner |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
To PDF documents created added meta info. This is disentangled now from headers. injection headerSuppressMetaPdf suppresses the rest | reissner |
![]() |
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 |
![]() |
XXXXXXXXXXpartial support for destlabel. Would be good for HMTL and docs there. Rest on backlog. | reissner |
![]() |
Weak CI: could compile all documents in a CI pipeline, but diff did not yet work. So the test consist in successful compilation. | reissner |
![]() |
to prepare place in maven central: added gpg plugin and issue management. | reissner |
![]() |
Updated and extended default string for setting patternCreatedFromLatexMain | reissner |
![]() |
added items to backlog. | reissner |
![]() |
undergo buildParams.tex and pom4pdf.xml a filter inserting settings of this plugin. | reissner |
![]() |
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 |
![]() |
extended pattern 'patternWarnLatex' to detect warnings in log files. | reissner |
![]() |
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 |
![]() |
Design: e.g. - core package cannot depend on mojo package - layered architecture with low level services TexFileUtils - eliminated getTargetSet() | reissner |
![]() |
could update maven plugin framework because could find the critical code causing errors in class Target. | reissner |
![]() |
eliminated lot of warnings, also from ltex, extended dictionary, reformatted tex files. | reissner |
![]() |
in LatexProcessor.runDiffPdf concerning return values. | reissner |
![]() |
interpretation of return code (triggered by fix with with runDiffPdf and by introducing chktex) | reissner |
![]() |
base LatexProcessor.needRun on both log AND aux file. | reissner |
![]() |
fixed several default values in config of this maven plugin in pom. | reissner |
![]() |
in headers replaced booleans by \IfPackageLoadedTF and \IfClassLoadedTF | reissner |
![]() |
in header.tex: options of package rerunfilecheck which corrects page numbers in index. | reissner |
![]() |
in site: now use automatically generated site on goals. | reissner |
![]() |
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 |
![]() |
Added a lot of literature. | reissner |
![]() |
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 | |
![]() |
added litPub.bib to use in dependent projects like our quality management project https://github.com/Reissner/QMngMnt. | reissner |
![]() |
added documentation on files fdb_latexmk. Strictly speaking, this is needed in later versions invoking latexmk. | reissner |
![]() |
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 |
![]() |
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 |
![]() |
updated versions of converters, dependencies and plugins, java, ... parameterized a lot of versions. Replaced default pdflatex by lualatex updated logging mechanism. | reissner |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
updated parameters of inkscape: long form. | reissner |
![]() |
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 |
---|---|---|
![]() |
goal vrs works again. | reissner |
![]() |
support xdv format. In particular added warning WLP07. | reissner |
Release 1.7 – 2022-04-19
Type | Changes | By |
---|---|---|
![]() |
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 |
![]() |
Corrected .latexmkrc. Now works at least for pythontexInOut, but not for the manual still... no idea why | reissner |
![]() |
Eliminated bad boxes | reissner |
![]() |
In .gitignore eliminated files created by pythontex which were silently vital for success of tests. Not before now we have quality assured. | reissner |
![]() |
Eliminated dependency on emacs and auctex. This affects also .gitignore. | reissner |
![]() |
In pom now documentation is created with version 1.6 including pythontex. | reissner |
Release 1.6 – 2022-04-16
Type | Changes | By |
---|---|---|
![]() |
extracted new way to determine the latex main file from changex.xml into detMainFile.md. This preparatory for the next release. | reissner |
![]() |
pom: version updates | reissner |
![]() |
metadata: tried on pdfversion and added documentation | reissner |
![]() |
reworked manuals so that they compile for any tex engine and also for htlatex. | reissner |
![]() |
extended and restructured backlog for further releases. | reissner |
![]() |
added config for vscode, the new editor. | reissner |
![]() |
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 |
![]() |
including xdv alongside dvi on a minimum effort base. Still preparing a better support. | reissner |
![]() |
added document recorder.tex and its artifact. | reissner |
![]() |
added document latexEngines.tex and its artifact. Gained an overview over the tex engines above all xelatex | reissner |
![]() |
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 |
![]() |
added BuildFailureException TLP02 | reissner |
![]() |
added latexmkrc to support document development better. | reissner |
![]() |
added invocation of pythontex (depythontex not yet) including documentation. This is the core functionality for this release. | reissner |
![]() |
added converter depythontex (pythontex was added already.) | reissner |
![]() |
Generalized default value for patternLatexMainFile taking package names into account which contain `-` in addition to letters. | reissner |
![]() |
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 |
![]() |
Updated versions, version patterns and strings, also form e.g. inkscape, pdftotext, pdfinfo, exiftool, gnuplot. | reissner |
![]() |
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 |
![]() |
Added parameters 'mainFilesIncluded' and 'mainFilesExcluded' and added according warnings WPP05, WPP06 and WPP07. | reissner |
Release 1.5 – 2022-05-03
Type | Changes | By |
---|---|---|
![]() |
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 |
![]() |
Added VersionMojo to phase validate. To that end, added configuration versionsWarnOnly and convertersExcluded. | reissner |
![]() |
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 |
![]() |
Prepared for check in phase validate or initialize: Added a way to exclude converters. | reissner |
![]() |
Added rudimentary change management. | reissner |
![]() |
Added a readme.md file. | reissner |
![]() |
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 |
![]() |
Aligned licenses: eliminated contradictions: License delivered is what is given top level on github. | reissner |
![]() |
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 |
![]() |
Updated a lot of versions in pom. | reissner |
![]() |
Eliminated most of the javadoc failures. | reissner |
![]() |
Use maven enforcer plugin. | reissner |
![]() |
added docs for various packages. | reissner |
![]() |
added goal vrs displaying versions also of the converters and whether they are valid. | reissner |
![]() |
added exception TSS04 checking validity of targets. | reissner |
Release 1.4 – 2018-06-19
Type | Changes | By |
---|---|---|
![]() |
added goal help | reissner |
![]() |
email address: ernst.reissner@simuline.eu, site org.m2latex --> eu.simuline.m2latex also repo | reissner |
Release 1.3 – 2016-09-09
Type | Changes | By |
---|---|---|
![]() |
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 |
![]() |
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 |
![]() |
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 |
![]() |
added parameter tex4htOutputDirectory | reissner |
![]() |
added conversion to rtf via latex2rtf and parameter latex2rtfCommand | reissner |
![]() |
added conversion to odt and docx also via htlatex and dot2doc adding parameter odt2docCommand | reissner |
![]() |
added conversion of document to dvi and ps and conversion of graphic to eps besides pdf | reissner |
![]() |
added conversion to txt via pdftotext with parameter pdf2txtCommand | reissner |
![]() |
added support for makeindes along the same lines as bibtex also multiple indices and split ones. added glossaries adding parameters makeIndexCommand | reissner |
![]() |
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 |
![]() |
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 |
![]() |
added handling of toc, listoffigures, listoftables, listoflistings | reissner |
![]() |
added support for new graphic formats fig, gnuplot, jpg, png, svg with parameters fig2devCommand, | reissner |
![]() |
added selection of latex documents from all files with ending .tex | reissner |
![]() |
added javadoc plugin | reissner |
![]() |
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 |
![]() |
added a manual written in tex and to be compiled by this plugin and by ant task defined here. | reissner |
![]() |
added documentation of latex pacakges, tools, and file formats including self written ones on fig and dvi. | reissner |
![]() |
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 |
![]() |
added goal/task clear. Added goals grp (graphics) and chk (check) | reissner |
Release 1.2 – 2012-02-07
No changes in this release.