考虑这个脚本:
\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}
无论你使用的是带\chapter
s 还是不带 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}