暂时切换到其他语言后,Babel 简写无法正确扩展。错误?

暂时切换到其他语言后,Babel 简写无法正确扩展。错误?

我无法用下面的 MWE 更好地描述这个问题。

复制步骤:

  1. 使用 Babel 创建双语文章(此处:american 和 ngerman)
  2. 将 Babel 德语简写添加到英语中(为了方便,我也经常这样做,以便"=也为英语启用它。)
  3. 在分段命令中使用简写。
  4. 本地切换语言。
  5. 在分段命令中再次使用简写。

实际结果:在步骤 3 中,标题和目录中的简写被正确扩展。在步骤 5 中,标题中的简写被正确扩展,但目录中按字面意思打印简写。

预期结果:速记应始终正确扩展。

梅威瑟:

\documentclass[american]{article}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[ngerman,american,main=american]{babel}

\useshorthands{"}
\addto\extrasamerican{\languageshorthands{american}\languageshorthands{ngerman}}

\begin{document}

\tableofcontents

\section{Lore"=ipsum}

The section title \verb#Lore"=ipsum# is correctly typeset in the TOC.
The shorthands work in the heading and in the TOC.

\begin{otherlanguage}{ngerman}
Ein Absatz in deutsch.
\end{otherlanguage}

\section{Lore"=ipsum}

After a temporary switch to a foreign language, the shorthands work only partially.
The section title \verb#Lore"=ipsum# is correctly typeset in the heading but not in the TOC.
Why?

\end{document}

答案1

没有错误;您陈述的\useshorthands{"}地方错误:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman,main=american]{babel}

\addto\extrasamerican{%
  \languageshorthands{ngerman}%
  \useshorthands{"}%
}

\begin{document}

\tableofcontents

\section{Lore"=ipsum}

The section title \verb#Lore"=ipsum# is correctly typeset in the TOC.
The shorthands work in the heading and in the TOC.

\begin{otherlanguage}{ngerman}
Ein Absatz in deutsch.
\end{otherlanguage}

\section{Lore"=ipsum}

After a temporary switch to a foreign language, the shorthands work only partially.
The section title \verb#Lore"=ipsum# is correctly typeset in the heading but not in the TOC.
Why?

\end{document}

在此处输入图片描述

有什么问题?使用\begin{otherlanguage}{ngerman}会导致\babel@toc{ngerman}{}写入.toc文件中;然后\end{otherlanguage}导致写入\babel@toc{american}{}

现在序列\babel@toc{ngerman}{}\babel@toc{american}{}需要\noextrasngerman被评估,这有助于

\bbl@deactivate {"}\umlauthigh \bbl@nonfrenchspacing

然后你就看到了问题。通过添加\useshorthands{"}\extrasamerican问题就解决了。

答案2

使用带星号的版本\useshorthands,即:

\useshorthands*{"}

手册中写道:“用户简写并非始终有效,因为它们可能会因语言而停用(例如,如果您使用“作为用户简写并从德语切换到法语,它们将停止工作)。因此,提供了一个带星号的版本 \useshorthands*{char},以确保简写始终处于激活状态。”

相关内容