类文件中的 \RequirePackage 错误

类文件中的 \RequirePackage 错误

我尝试\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 没有理由这样做,也没有检查它。

相关内容