Svn-multi vs hyperref vs información svn no ascii vs encabezados de memorias

Svn-multi vs hyperref vs información svn no ascii vs encabezados de memorias

Aquí está el extraño error del día. El fin de semana pasado, por "diversión", estuve jugando con Win 8 y TortoiseSVN. De repente, después de una confirmación, mi proyecto LaTeX ya no se compiló.

Me queda el siguiente combo MWE

Archivo maestro:

\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

Observe cómo LastChangedDatecontiene en UTF8. Normalmente trabajo en Linux con una configuración en inglés, por lo que en otros lugares esa parte será Sun(ascii)

Así que aquí están mis observaciones.

me sale el error

./test2.tex:8: Undefined control sequence.
GenericError  ...                                 
                                                    #4  errhelp @err@       ...
l.8 \chapter
            {test}
  1. Si elimino las øcompilaciones de MWE
  2. Elimino \sffamilydel pie de página que compila.
  3. Si lo elimino hyperrefse compila
  4. Si elimino la filehooksopción de svn-multi, se compila

¿Alguna idea de lo que está pasando?

(una solución viable también sería explicar cómo decirle a TortoiseSVN que siempre use inglés, es la abreviatura de la palabra danesa søndag para domingo)

Respuesta1

Este es un problema clásico \edef(o similar) aplicado a la entrada frágil del usuario: hay un \xdefproblema \svn@pushfilestackque falla si tiene un token "inseguro" dentro de cualquiera de las partes a las que intenta aplicarlo. Al igual que con cualquier entrada de usuario de LaTeX2e, el enfoque correcto es utilizar el \protected@...equivalente del kernel de 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}

Idealmente, esto debería solucionarse en svn-multi.

información relacionada