Svn-multi vs hyperref vs non-ascii svn info vs 회고록 헤더

Svn-multi vs hyperref vs non-ascii svn info vs 회고록 헤더

오늘의 이상한 오류는 다음과 같습니다. 지난 주말 "재미"를 위해 저는 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

UTF8에 어떻게 LastChangedDate포함되어 있는지 참고하세요. 나는 보통 영어 설정으로 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있습니다 . LaTeX2e 사용자 입력과 마찬가지로 올바른 접근 방식은 이에 상응하는 LaTeX 커널을 사용하는 것입니다.\xdef\svn@pushfilestack\protected@...

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

관련 정보