我尝试\RequirePackage[spanish,es-tabla]{babel}
在我自己的类(即我的 .cls 文件)中使用该命令,但出现以下错误:
命令 \labelenumi 已定义。
我发现的一个临时解决方案是使用命令\RequirePackage[spanish,english,es-tabla]{babel}
,但这会导致 ToC、LoF 和 LoT 的标题发生变化,因为我用
\addto\captionsspanish{
\renewcommand{\contentsname}%
{\center\normalsize\MakeUppercase{contenido}}%
}
\addto\captionsspanish{%
\renewcommand{\listfigurename}%
{\center\normalsize\MakeUppercase{lista de figuras}}%
}
\addto\captionsspanish{%
\renewcommand{\listtablename}%
{\center\normalsize\MakeUppercase{lista de tablas}}%
}
有没有什么解决办法?
提前致谢。
编辑:myclass.cls 和 test.tex 的 mwe
我的类名.cls
\NeedsTeXFormat{LaTeX2e}[2017/04/15]
\ProvidesClass{myclass}[2018/06/09 Standard LaTeX document class]
\let\labelenumi\relax
\RequirePackage[spanish,es-tabla]{babel}
... %here the code is the same of the book class
\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright}
\ProcessOptions
... %here the code is the same of the book class
\endinput
测试.tex
\documentclass{myclass}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
... % other packages
\addto\captionsspanish{%
\renewcommand{\contentsname}%
{\center\normalsize\MakeUppercase{contenido}}%
}
\addto\captionsspanish{%
\renewcommand{\listfigurename}%
{\center\normalsize\MakeUppercase{lista de figuras}}%
}
\addto\captionsspanish{%
\renewcommand{\listtablename}%
{\center\normalsize\MakeUppercase{lista de tablas}}%
}
\begin{document}
\end{document}
编辑:它适用于
我的类名.cls
\NeedsTeXFormat{LaTeX2e}[2017/04/15]
\ProvidesClass{myclass}[2018/06/09 Standard LaTeX document class]
... %here the code is the same of the book class
\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright}
\ProcessOptions
... %here the code is the same of the book class
\RequirePackage[spanish,es-tabla]{babel}
\addto\captionsspanish{% Replace "english" with the language you use
\renewcommand{\contentsname}%
{\center\normalsize\MakeUppercase{contenido}}%
}
\addto\captionsspanish{%
\renewcommand{\listfigurename}%
{\center\normalsize\MakeUppercase{lista de figuras}}%
}
\addto\captionsspanish{%
\renewcommand{\listtablename}%
{\center\normalsize\MakeUppercase{lista de tablas}}%
}
\endinput
答案1
您必须在文件 命令\RequirePackage[spanish,es-tabla]{babel}
之前调用。\endinput
.cls
原因是:
\RequirePackage 通常在文件中调用.sty
(通常在包中调用)。包必须在 \documentclass 之后调用... 因此,包(如babel
这里)将处理先前定义的命令,但 documentclass 没有理由这样做,也没有检查它。