我正在使用libertine
和libertinust1math
包,与book
文档类结合。
我的论文序言很长(超过 1400 行),除了libertine
和libertinust1math
上面提到的包。
我的论文中有大量的书目条目,并且需要使用一些欧洲和亚洲语言的字符。 获得这些特征的最佳方法是什么,同时使我的论文中使用的几十个包产生副作用的可能性最小?
以下 MWE 仅包含我在论文中使用的一小部分软件包,它列出了我需要的字符。其中大部分字符我已经在内核命令中找到了。但是,下面用箭头标记的几个字符我仍在寻找。
对于这些字符——“带删除线的 D”、“带尾巴的 e”、“带斜线的 L”和“带斜线的 l”——似乎有多种方法可以获得它们。哪种方法可能产生的潜在副作用最少?
\documentclass[oneside,11pt]{book}
\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[
expansion = false ,
tracking = smallcaps ,
letterspace = 40 ,
final
]{microtype}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage{mathtools}
\usepackage{booktabs}
\usepackage{etoolbox}
\usepackage{siunitx}
\sisetup{%
detect-family, detect-shape, detect-weight,
product-units = power,
list-final-separator = {, and },
retain-explicit-plus,
input-comparators = {<=>\approx\ge\geq\gg\le\leq\ll\sim\lesssim\gtrsim}
}
\begin{document}
\begin{table}[!h]
\centering
\begin{tabular}{rlcll}
\toprule
& \~{a} & \verb|\~{a}| & ``a with tilde on top'' & Portuguese, Vietnamese, ...\\
& \'{c} & \verb|\'{c}| & ``c with acute accent'' & Polish, Croatian, ...\\
& \c{c} & \verb|\c{c}| & ``c with cedilla'' & French, Catalan, Portuguese, Turkish, Turkmen, ...\\
& \v{c} & \verb|\v{c}| & ``c with v on top'' & Czech, Croatian, Slovak, Slovene, Latvian, ...\\
$\rightarrow$ & D & ? & ``D with stroke'' & Serbo-Croatian, Vietnamese, ...\\
$\rightarrow$ & e & ? & ``e with tail'' & Polish, Lithuanian, ...\\
$\rightarrow$ & L & ? & ``L with slash'' & Polish, ...\\
$\rightarrow$ & l & ? & ``l with slash'' & Polish, ...\\
& \^{o} & \verb|\^{o}| & ``o with circumflex'' & French, ...\\
& \o & \verb|\o| & ``o with slash'' & Danish, Norwegian, Faroese, ...\\
& \v{R} & \verb|\v{R}| & ``R with v on top'' & Czech, ...\\
& \v{s} & \verb|\v{s}| & ``s with v on top'' & Czech, ...\\
& \H{u} & \verb|\H{u}| & ``u with double acute accent'' & Hungarian, ...\\
& \"{u} & \verb|\"{u}| & ``u with umlaut'' & German, Hungarian, Turkish, Turkmen, ...\\
& \'{y} & \verb|\'{y}| & ``y with acute accent'' & Czech, Slovak, Turkmen, Icelandic, ...\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案1
您在标题中提到了亚洲字符,其情况略有不同,但表中的所有示例都是标准乳胶命令和字体中可用的拉丁字母字符
因此在 xelatex 或 lualatex 中你可以使用
\documentclass{article}
\begin{document}
\~{a} \'{c} \c{c} \v{c} \DJ{} \k{e} \L{} \l{} \^{o} \o{} \v{R} \v{s} \H{u} \"{u} \'{y}
ã ć ç č Đ ę Ł ł ô ø Ř š ű ü ý
\end{document}
在 pdflatex 中,你(几乎总是这样)需要欧洲拉丁字母的 T1 编码,而不是默认的 OT1,否则 Ogonek 和斜线 D 将不可用,但与 lualatex 一样,你可以直接输入字符或通过标准 latex 重音命令输入字符
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\~{a} \'{c} \c{c} \v{c} \DJ{} \k{e} \L{} \l{} \^{o} \o{} \v{R} \v{s} \H{u} \"{u} \'{y}
ã ć ç č Đ ę Ł ł ô ø Ř š ű ü ý
\end{document}
您可以做更多的事情来告诉 LaTeX 有关所使用的语言的信息,以获得正确的连字符和其他功能,但不需要任何包来定义所使用的命令,只有字体选择是一个问题。
答案2
截至 2021 年,我认为最有可能顺利运行的格式是 NFC 格式的 UTF-8。幸运的是,您遇到的绝大多数文本已经是这种格式了。PDFTeX 无法支持组合字符,Unicode 引擎开箱即用,只支持 UTF-8,并且一些支持文件在 XeTeX 或 LuaTeX 中错误地在基本字符和其组合重音符之间插入了连字符。(当您阅读本文时,后一个错误可能已经修复。)UTF-8 可以在某些老式 TeX 命令无法使用的环境中工作,例如逐字文本。
消除 1980 年代技术债务的最好方法是使用 LuaLaTeX、Unicode 和 OpenType。如果您的出版商在 2021 年仍要求您在 PDFTeX 中使用传统的 8 位字体,您可以这样做:
\documentclass[polish,lithuanian,french,czech,vietnamese,english]{article}
\tracinglostchars=2 % Warn if a glyph is missing from the font!
\usepackage[T5, T1]{fontenc} % Plus whatever others you might need
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage{babel}
\usepackage{libertinus}
\usepackage{substitutefont}
\usepackage[paperwidth=10cm]{geometry} % Format the MWE for TeX.SX
% The Type-1 versions of Libertiine and Libertinus do not support Vietnamese,
% so we substitute Charter.
\substitutefont{T5}{\rmdefault}{mdbch}
\begin{document}
\foreignlanguage{polish}{Łódź,}
\foreignlanguage{lithuanian}{Panevėžys,}
\foreignlanguage{french}{Villefranche-sur-Saône,}
\foreignlanguage{czech}{Bohušovice nad Ohří}
and
\foreignlanguage{vietnamese}{Thủ Đức}
\end{document}
这 ”LaTeX 字体编码指南” 可以告诉您需要加载哪种 8 位传统字体编码。通常,更改为正确的语言就足够了。在少数情况下,您可能需要定义类似的东西{\fontencoding{T1}\selectfont\.{\textsc{\i}}}
来获取 İ。
PDFLaTeX 可以处理预组合的 UTF-8 字符,但不能处理分解的字符,因此您需要确保您的文档以 NFC 格式规范化为 UTF-8。\v{c}
除非您发现它们更方便输入,否则不再有任何理由偏爱诸如此类的命令。
您还会注意到,切换语言可以使带重音字符的单词连字。
如果您可以切换到 LuaLaTeX,那么使用 Unicode 和现代字体会更好。Libertinus做有越南语的字形,这些字形从未转换为传统的 8 位 TeX,但可以在 OpenType 字体中使用。您将获得一个可以搜索和复制的文档。与 PDFLaTeX 不同,LuaLaTeX 和 XeLaTeX 还可以处理组合字符。您还可以通常避免省略拉丁文、希腊文和西里尔文中个别单词的语言标签。
\documentclass[polish,lithuanian,french,czech,vietnamese,english]{article}
\tracinglostchars=2 % Warn if a glyph is missing from the font!
\usepackage{babel}
\usepackage{libertinus}
\usepackage[paperwidth=10cm]{geometry} % Format the MWE for TeX.SX
\begin{document}
\foreignlanguage{polish}{Łódź,}
\foreignlanguage{lithuanian}{Panevėžys,}
\foreignlanguage{french}{Villefranche-sur-Saône,}
\foreignlanguage{czech}{Bohušovice nad Ohří}
and
\foreignlanguage{vietnamese}{Thủ Đức}
\end{document}
\v{c}
如果您想使用诸如此类的命令,它们仍然有效。
对于某些语言(例如荷兰语、土耳其语或保加利亚语),您可能需要启用 OpenType 语言功能才能获得正确的字母形式和连字。在这种情况下,您需要将其替换\usepackage{libertinus}
为
\documentclass[turkish,english]{article}
\tracinglostchars=2 % Warn if a glyph is missing from the font!
\usepackage{babel}
\usepackage{libertinus}
\usepackage[paperwidth=10cm]{geometry} % Format the MWE for TeX.SX
\usepackage{unicode-math}
\babelfont{rm}
[Ligatures={Common,Discretionary,TeX}]{Libertinus Serif}
\babelfont{sf}
[Ligatures={Common,Discretionary,TeX}]{Libertinus Sans}
\babelfont{tt}
[Ligatures=TeX]{Libertinus Mono}
\setmathfont{Libertinus Math}
\begin{document}
\textsc{Peoria} and
\foreignlanguage{turkish}{\textsc{Türkiye}}.
\end{document}
Script=
这会将 OpenType 字体的和功能正确设置Language=
为您选择的语言。此处,将 的小写形式设置为i
英语I
和İ
土耳其语。