babel 在多种语言中支持连字符 "=

babel 在多种语言中支持连字符 "=

为什么连字符不能用于多种语言?参见代码:

\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,ngerman]{babel}

\begin{document}
Mein deutscher Bindestrich"=Test.

\selectlanguage{english}
My english Hyphon"=Test. <--- Here should be a - and not "=
\selectlanguage{ngerman}
\end{document}

答案1

\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,ngerman]{babel}
\useshorthands{"}
\addto\extrasenglish{\languageshorthands{ngerman}}
\begin{document}
Mein deutscher Bindestrich"=Test.

\foreignlanguage{english}{%
My english Hyphon"=Test. <--- Here should be a - and not "=}

\end{document}

顺便说一句:\selectlanguage只有当您想完全切换到另一种语言(日期、标题等)时使用才有意义。

答案2

其无法立即发挥作用的原因在于 LaTeX 的多语言支持历史。

最初,LaTeX(就像普通的 TeX)不支持(或仅支持极少)除英语以外的其他语言。因此,欧洲的用户开始为自己的语言构建语言支持包。早期的一些语言支持包包括germanfrench和其他几个。它们都可以作为独立包使用,无需任何 LaTeX 格式的支持。

另一个进展是,用宏调用替换 LaTeX 中的固定字符串(例如字符串“目录”),这样就更容易自定义它们,而无需重写 LaTeX 中的功能代码。这个版本的 LaTeX 被称为“iLaTeX”(国际 LaTeX),是 LaTeX2e 之前流传的众多不兼容变体之一。

因此,当 Johannes 致力于 Babel 时,他已经拥有大量“国家”语言支持包,他所做的就是提供一个通用框架,以允许 LUG(本地用户组)推动其语言的发展。

因此,有些语言使用许多简写(例如德语),而其他语言则不然,并且有时使用的简写在不同语言中具有不同的含义。

这不是一个令人非常满意的情况,但再次需要考虑兼容性情况:基本思想是,例如,独立包german可以被替换而\usepackage[german]{babel}不会破坏现有文档,并且这样的事情也要求不要在没有必要的情况下扩展接口,因为这也可能使文档无效。

解决方法是在文档序言中明确启用额外的简写(如果有人想使用的话),而如何做到这一点在 Babel 文档中有解释,Herbert 给出的答案中也有展示。

答案3

简写是和的语言定义文件"=的一部分。 的定义文件不包含任何简写。由于简写是随语言打开和关闭的,因此默认情况下,即使加载了/定义,它也不适用于英文文本部分。可能的解决方案在babelgermanngermanenglish"=germanngermanbabel:将德语简写添加到英语作为主要文档语言

相关内容