Svn-multi против hyperref против не-ascii svn info против заголовков memoir

Svn-multi против hyperref против не-ascii svn info против заголовков memoir

Вот странная ошибка дня. На прошлых выходных ради "развлечения" я игрался с Win 8 и TortoiseSVN. Внезапно после коммита мой проект LaTeX перестал компилироваться.

Я остановился на следующей комбинации MWE

Основной файл:

\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

Обратите внимание, что LastChangedDateсодержит в UTF8. Обычно я работаю в Linux с английской настройкой, поэтому в других местах эта часть будет Sun(ascii)

Итак, вот мои наблюдения.

Я получаю сообщение об ошибке

./test2.tex:8: Undefined control sequence.
GenericError  ...                                 
                                                    #4  errhelp @err@       ...
l.8 \chapter
            {test}
  1. Если я удалю øMWE скомпилируется
  2. Я удаляю \sffamilyиз футера, который он компилирует
  3. Если я удалю, hyperrefто скомпилируется
  4. Если я уберу filehooksопцию из svn-multi, он скомпилируется

Есть идеи, что происходит?

(Возможным решением было бы также объяснить, как заставить TortoiseSVN всегда использовать английский язык, это сокращение от датского слова søndag, означающего воскресенье)

решение1

Это классическая проблема ' \edef(или аналогичная) примененная к хрупкому пользовательскому вводу': есть \xdefin, \svn@pushfilestackкоторый терпит неудачу, если у вас есть 'небезопасный' токен внутри любой из частей, к которым он пытается применить его. Как и в случае с любым пользовательским вводом LaTeX2e, правильный подход заключается в использовании \protected@...эквивалента ядра LaTeX

\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}

В идеале это должно быть исправлено в svn-multi.

Связанный контент