我尝试编译这个非常小的 LaTeX 代码,它曾经可以工作但现在不再能用了:
\documentclass{article}
\usepackage{babel}
\babelprovide[main,import]{french}
\frenchsetup{ItemLabels=\textendash,og=«,fg=»}
\begin{document}
empty
\end{document}
现在\frenchsetup
似乎尚未定义。
知道为什么吗?
仅供参考,这是 pandoc 生成的代码的简化,它曾经可以工作,但现在不再有效。
我使用 TexLive 2020(在 Debian 稳定版上发行,也就是bullseye
截至今天)。
答案1
\babelprovide[main,import]{french}
设置区域设置到法语,它为法语提供了正确的连字符,设置了标题(fi\tableofcontents
打印“Table des matières”)和日期:\today
将以法语打印当前日期。
\babelprovide[main,import]{french}
才不是加载语言定义文件french.ldf
,特别\frenchsetup
是不是定义过,但从未定义过,正如@egreg 指出的那样。更重要的是,法语中没有为高标点符号 (:;!?) 提供自动空格。
答案2
Babel 文档说,当.ldf
为您的语言提供了文件时,您应该使用它。所以这\usepackage[french]{babel}
仍然是您所需要的。
我知道您使用 Pandoc,它只处理\babelprovide
定义 Babel 语言的方式。
假设你的文档源是 Markdown,解决方法是在开头设置一些 YAML 变量:
---
classoption: french
header-includes:
- |
```{=latex}
\let\languageshorthands\LanguageShortHands
\frenchbsetup{og=«,fg=»}
\usepackage{xspace}
```
...
这会将语言选项传递给 LaTeX 文档类(article
默认情况下)。Babel 将继承它。
它还恢复了 Pandoc 默认 LaTeX 模板中的一个命令,该命令抑制了有关空格和标点符号以及脚注和其他内容的法语印刷规则。
最后,它配置«
并»
在 LaTeX 源中正确生成法国海鸠(具有适当的不可破坏的精细空间),并且该xspace
包用于处理关闭海鸠之后需要(或不需要)的常规空间。
您甚至可以使用\og
和\fg
宏。