我在使用 LaTeXbabel
软件包时遇到了一些问题。您可能知道,根据语言的不同,例如french
或english
,列表的显示样式不同是正常的itemize
(法语样式更紧凑,使用破折号而不是项目符号)。例如,
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\begin{document}
Blah. Blah blah!
\begin{itemize}
\item Item;
\item Other item.
\end{itemize}
To be continued\dots
\end{document}
产量
而用 替换english
,french
我们会得到
很好。但是现在,假设我已经为 加载了两种语言babel
,english
最后加载,并且我想通过 命令获得法语字体\selectlanguage
,即我编写以下代码:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[french,english]{babel}
\begin{document}
\selectlanguage{french}
Blah. Blah blah!
\begin{itemize}
\item Item;
\item Other item.
\end{itemize}
To be continued\dots
\end{document}
然后,我期望得到与之前相同的结果。但事实并非如此:虽然感叹号和分号前或点后的空格工作正常,但 itemize 样式仍然像英语一样!
这一事实该如何解释?(是软件包中的错误吗babel
?...)。当然,有没有人有好的解决方案(*)来避免这种令人讨厌的行为?
(*)当然,我可以在我的itemize
环境内部进行破解,以强制使用法语 itemize 样式(分别是之后的英语 itemize 样式\selectlanguage{english}
);但我的目标是通过单个命令使一切正常\selectlanguage{...}
......(此外,我希望获得一个可直接移植到任何语言的解决方案)。
PS:实际上我的目标是编写一个支持多种语言的包,根据用户希望使用的语言,行为会略有不同。因此,我必须在编写时加载所有可能的语言\RequirePackage[...]{babel}
,然后使用\selectlanguage
...但是我遇到了上面解释的问题,这让我很烦恼! :-(
答案1
根据文档:
从 2.2a 版开始,仅当法语为“主要语言”时,frenchb 才会改变列表、脚注和章节第一段的缩进的布局)[...] 否则 frenchb 不会改变有关列表、脚注和段落缩进的任何内容。
它还规定,如果法语是主要语言,那么列表的布局就会被修改各种语言。
\frenchbsetup
提供了全局包选项(使用 进行设置):
StandardLayout=true
如果法语是主要语言,则强制 frenchb 不修改列表的布局。GlobalLayoutFrench=false
如果法语是主要语言,则对列表进行修改仅有的在文件的部分内容中使用法语。
\frenchbsetup
是(在 LaTeX 风格中,经常出现“可前缀化”的想法,这可能不是一个好主意,并且很难混合不同的文档;也因为没有可用的“撤消对 foo 包的加载”)一个preamble-only
命令。
我没有在文档中看到命令来切换文档中途的列表自定义,可能有一些内部命令可用但我没有检查。因此,似乎您应该选择french
作为主要语言(上次加载的选项babel
),并且可能2.
选择上方,具体取决于您希望列表在其他语言的文档部分中如何显示。