
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 LastChangedDate
contiene sø
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}
- Si elimino las
ø
compilaciones de MWE - Elimino
\sffamily
del pie de página que compila. - Si lo elimino
hyperref
se compila - Si elimino la
filehooks
opción desvn-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, 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 \xdef
problema \svn@pushfilestack
que 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
.