Tips, Tricks und Lösungen


Das LaTeX-changes-Paket
Ekkart Kleinod  • 

Diese Seite enthält Tips, Tricks und Lösungen für das changes-Paket.

\comment-Konflikt mit tikz externalization

Siehe Ticket 67.

Das Problem besteht darin, die TikZ-Bibliothek external zu nutzen, die zu einem Konflikt mit dem todo-Paket führt:

! Package tikz Error: Sorry, the system call 'lualatex -halt-on-error -interact
ion=batchmode -jobname "./example-figure0" "\def\tikzexternalrealjob{example}\i
nput{example}"' did NOT result in a usable output file './example-figure0' (exp
ected one of .epsi:.eps:.ps:). Please verify that you have enabled system calls
. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is also named 'w
rite 18' or something like that. Or maybe the command simply failed? Error mess
ages can be found in './example-figure0.log'. If you continue now, I'll try to
typeset the picture.

See the tikz package documentation for explanation.

Eine Lösung besteht darin, nicht todo für Kommentare zu nutzen (z.B. über \usepackage[commentmarkup=uwave]{changes}) Eine andere Lösung hat Yingsheng Huang (@Turukano) gefunden, einfach das todo-Makro umbenennen:

\makeatletter
\renewcommand{\todo}[2][]{\tikzexternaldisable\@todo[#1]{#2}\tikzexternalenable}
\makeatother

Zusammengefasst schaut Euch das Ticket und folgende Beispieldateien an:

Kommando bereits definiert - command already defined

Einige Pakete benutzen für ihre Kommandos dieselben Namen wie das changes-Paket, insbesondere \comment und \highlight sind keine originell benannten Kommandos.

In diesem Fall kann changes seinen Kommandos ein Präfix voranstellen, um Namenskollisionen zu vermeiden. Das wird über die Option commandnameprefix gesteuert.

Damit das klappt, muss das changes-Paket nach den anderen Paketen geladen werden oder commandnameprefix=always gewählt werden.

\documentclass{article}

\usepackage{comment}
\usepackage[commandnameprefix=ifneeded]{changes}

\begin{document}

    \chcomment{changes comment}

    \added{changes addition}

\end{document}

protect für Befehle, die Fehler erzeugen

Manchmal kann es helfen, vor den betreffenden Befehl \protect zu schreiben, um ihn zu schützen. Muss nicht klappen, ist oft den Versuch wert.

Dieser Code erzeugt bei \nonumber einen Fehler:

\documentclass{scrartcl}

\usepackage{changes}
\usepackage{amsmath}

\begin{document}

\added{
    \begin{alignat}{2}
        a &= b \nonumber\\
        b &= c
    \end{alignat}
}

\end{document}

Mit \protect tritt der Fehler nicht mehr auf:

\documentclass{scrartcl}

\usepackage{changes}
\usepackage{amsmath}

\begin{document}

\added{
    \begin{alignat}{2}
        a &= b \protect\nonumber\\
        b &= c
    \end{alignat}
}

\end{document}