Babel 适用于德语和 langscibook,但不适用于西班牙语

Babel 适用于德语和 langscibook,但不适用于西班牙语

documentclass langscibook(基于scrbook)提供了选项booklanguage。默认值为。我过去english曾成功使用过frenchportuguese和。german

在内部,选项值被传递给 babel。

这将设置连字符并将“Contents”更改为“Table des matières”、“Conteúdo”、“Inhaltsverzeichnis”等等。

当我说booklanguage=spanish我确实获得了目录的“Índice general”时,但是此后编译停止了。

...
Runaway argument?
! Forbidden control sequence found while scanning use of \language@active@arg~.
<inserted text> 
                \par 
l.6 \maketitle
              
I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
...

以下作品

\documentclass[booklanguage=german]{langscibook}
\author{John Doe}
\title{The test}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{test}
123
\end{document}

当“德语”改为“西班牙语”时,它不再起作用:

\documentclass[booklanguage=spanish]{langscibook}
\author{John Doe}
\title{The test}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{test}
123
\end{document}

langscibook.cls 中的相关代码部分是

165ff 行

\DeclareStringOption{booklanguage}[english]
    \define@key{langscibook}{booklanguage}{%
        \renewcommand{\lsBookLanguage}{#1}}

1392 行

    \usepackage[\lsBookLanguage]{babel}

当我切换到 时{scrbook},就可以\usepackage[spanish]{babel}毫无问题地了。

总而言之,{scrbook}+ babel 适用于所有语言,但{langscibook}+ babel 适用于英语、德语、法语、葡萄牙语和中文,但不适用于西班牙语。我不明白这种行为的原因。任何提示都值得赞赏。

包含该文件的最小工作示例langscibook.cls可以在这里找到

https://www.overleaf.com/read/tdrjbmxxhbrp

答案1

spanish 将波浪号重新定义~为重音符号。但是该类在空格的标准含义中到处使用它,这会产生冲突。您可以告诉 babel-spanish 不要使用波浪号:

\documentclass[booklanguage={spanish,es-notilde}]{langscibook}

\author{John Doe}
\title{The test}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{test}
123
\end{document}

相关内容