Что является причиной этой \дискреционной ошибки?

Что является причиной этой \дискреционной ошибки?

Я хотел бы скомпилировать свою старую диссертацию LaTeX в PDF. Текст был создан в 1999 году (emTeX, я думаю), когда компьютеры и инструменты были немного другими -- прочитайте его, я возвращаюсь к LaTeX спустя 14 лет; это достаточно большой срок, чтобы все забыть :) В то время babel не использовался для чешского языка.

На данный момент (после нескольких попыток/неудач, извлечения информации из памяти и небольшого поиска) я преобразовал исходники в UTF-8 и изменил

\documentclass[a4paper,11pt]{report}
\usepackage{czech}

к

\documentclass[a4paper,11pt]{report}
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}

При запуске следующего pdflatex --versionв Windows 7

pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013/W32TeX)
kpathsea version 6.1.1
Copyright 2013 Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
Compiled with libpng 1.5.16; using libpng 1.5.16
Compiled with zlib 1.2.7; using zlib 1.2.7
Compiled with xpdf version 3.03

(и запустив bibtex для файла my.aux, и перезапустив несколько раз pdflatex pri98dis.tex, я все равно получаю сообщение о следующей проблеме:

) [141] (./pri98dis.aux (./dekuji.aux) (./abstrakt.aux)
! Missing \endcsname inserted.
<to be read again> 
                   \unhbox 
l.223 ...`\discretionary {-}{}{}step}{{3.1.5}{52}}

The control sequence marked <to be read again> should
not appear between \csname and \endcsname.

! Improper alphabetic constant.
<to be read again> 
                   \discretionary 
l.223 ...`\discretionary {-}{}{}step}{{3.1.5}{52}}

A one-character control sequence belongs after a ` mark.
So I'm essentially inserting \0 here.

! Extra \endcsname.
\@newl@bel ... \bbl@tempa \csname #1@#2\endcsname 
                                                  \def \bbl@tempb {#3}\@safe...
l.223 ...`\discretionary {-}{}{}step}{{3.1.5}{52}}

I'm ignoring this, since I wasn't doing a \csname.

)

LaTeX Warning: There were undefined references.


LaTeX Warning: There were multiply-defined labels.

Это [141]самая последняя страница документа. (Обратите внимание на , ! Missing \endcsname inserted.а затем на ! Extra \endcsname.)

В pri98dis.aux(принадлежит основному документу) строки 222 и 223 выглядят следующим образом:

\@writefile{toc}{\contentsline {paragraph}{Krok modelov\IeC {\'e}ho \IeC {\v c}asu.}{52}}
\newlabel{time\unhbox \voidb@x \kern \z@ \char `\discretionary {-}{}{}step}{{3.1.5}{52}}

По-видимому, он относится к следующей части источника:

\paragraph{Krok modelového času.}

... text of one paragraph...

\begin{verbatim}
    in('EvQue', 'head', ?head_time);                               { 1 }
    in('EvQue', 'list', head_time, ?next_time);                    { 2 }
    out('EvQue', 'head', next_time);                               { 3 }
\end{verbatim}
\label{time-step}

Похоже, что проблема каким-то образом вызвана \label{time-step}.

Как решить эту проблему?

(Спасибо и желаю вам счастливого Нового года и всех последующих дней.)

решение1

Скорее всего, это вызвано тем, что пакет (сокращение на языке Babel?) определяет, -что он активен, а затем пытается заставить его действовать «как обычно», определяя его как

\leavevmode\char`\-

Я получаю почти ту же ошибку (немного другой контекст, но то же самое)

time\unhbox \voidb@x \char `\discretionary {-}{}{}step

из следующего:

\documentclass{article}

\catcode`\-\active
\def-{\leavevmode\char`\-}

\begin{document}

aa \section{zzz\label{time-step}} aa

zzz\ref{time-step}

\end{document}

Если вы не хотите изменять макросы, простой способ избежать ошибки — не использовать -аргументы label, ref и cite.

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