SVN-Multi vs. Hyperref vs. Nicht-ASCII-SVN-Info vs. Memoir-Header

SVN-Multi vs. Hyperref vs. Nicht-ASCII-SVN-Info vs. Memoir-Header

Hier ist der seltsame Fehler des Tages. Letztes Wochenende habe ich zum „Spaß“ mit Win 8 und TortoiseSVN herumgespielt. Plötzlich ließ sich mein LaTeX-Projekt nach einem Commit nicht mehr kompilieren.

Ich bin bei folgender MWE-Kombination angelangt

Stammdatei:

\documentclass[a4paper]{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\makepagestyle{test}
\makeoddfoot{test}{}{\sffamily\thepage}{}
\pagestyle{test}
\usepackage[filehooks]{svn-multi}
\usepackage[colorlinks]{hyperref}
\begin{document}

Test
\input{test2}

\end{document}

test2.tex

\svnidlong
{$HeadURL: https://url $}
{$LastChangedDate: 2015-07-26 15:59:20 +0200 (sø, 26 Jul 2015) $}
{$LastChangedRevision: 1 $}
{$LastChangedBy: daleif $}


\chapter{test}

test

Beachten Sie, dass die LastChangedDateInhalte in UTF8 vorliegen. Normalerweise arbeite ich unter Linux mit einem englischen Setup, daher wird dieser Teil an anderer Stelle Sun(ASCII) sein.

Hier sind meine Beobachtungen

Ich erhalte den Fehler

./test2.tex:8: Undefined control sequence.
GenericError  ...                                 
                                                    #4  errhelp @err@       ...
l.8 \chapter
            {test}
  1. Wenn ich die øMWE-Kompilierungen entferne
  2. ich entferne\sffamily aus der Fußzeile es kompiliert
  3. Wenn ich entfernehyperref wird es kompiliert
  4. Wenn ich die filehooksOption entferne aussvn-multi entferne , wird es kompiliert

Irgendeine Idee, was los ist?

(eine praktikable Lösung wäre auch zu erklären, wie man TortoiseSVN anweist, immer Englisch zu verwenden, ist die Abkürzung für das dänische Wort „søndag“ für Sonntag)

Antwort1

Dies ist ein klassisches \edef(oder ähnliches) Problem, das auf instabile Benutzereingaben angewendet wird: Es gibt ein \xdefin \svn@pushfilestack, das fehlschlägt, wenn Sie ein „unsicheres“ Token in einem der Teile haben, auf die es angewendet werden soll. Wie bei jeder LaTeX2e-Benutzereingabe besteht der richtige Ansatz darin, das LaTeX-Kernel- \protected@...Äquivalent zu verwenden

\documentclass[a4paper]{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\makepagestyle{test}
\makeoddfoot{test}{}{\sffamily\thepage}{}
\pagestyle{test}
\usepackage[filehooks]{svn-multi}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\svn@pushfilestack{\xdef}{\protected@xdef}{}{}
\makeatother
\usepackage[colorlinks]{hyperref}
\begin{document}

\input{test2}

\end{document}

Im Idealfall sollte dies in behoben werden svn-multi.

verwandte Informationen