列表干扰了 Babel

列表干扰了 Babel

考虑这个脚本:

\documentclass{article}                                                                                                                                                                            
%\usepackage[latvian]{babel}
\usepackage{listings}
\begin{document}                                                                                                                                                                                          
\end{document}

我收到错误

(/usr/local/texlive/2018/texmf-dist/tex/latex/listings/listings.cfg))
(./latvianpres.aux)

! LaTeX Error: No counter 'chapter' defined.

如果我取消注释该行

%\usepackage[latvian]{babel}

问题是什么?如何解决?

答案1

这看起来像是拉脱维亚 babel 中的一个错误(正如 Ulrike Fischer 所说)。文件latvian.ldf(由 加载babel)定义\thechapter

\def\thechapter{%
  \ifx\chapter\undefined\relax\else
  \arabic{chapter}.\fi}

无论你使用的是带\chapters 还是不带 s 的类,都独立地进行。稍后,如果定义了计数器,则有条件地\AtBeginDocument listings定义计数器:lstlisting\thechapter

\newcounter{lstlisting}[chapter]

如果不是:

\newcounter{lstlisting}

\thechapter存在时(确实存在,当latvian.ldf加载时),listings尝试将lstlisting计数器挂接到chapter计数器,这会不是存在,则会出现错误。

你可以用这个来解决这个问题:

\documentclass{article}
\usepackage[latvian]{babel}
\usepackage{listings}

\let\THEchapter\thechapter
\let\thechapter\relax
\begin{document}
\let\thechapter\THEchapter

\end{document}

相关内容