Tips, Tricks und Lösungen
Das LaTeX-changes-Paket
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:
- example.tex - das Beispiel bei dem der Fehler auftritt
- quickfix.tex - das gleiche Beispiel mit dem Bugfix von @Turukano
- example_uwave.tex - das gleiche Beispiel mit dem uwave-Workaround
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}