以最少的潜在副作用排版欧洲和亚洲语言的特殊字符

以最少的潜在副作用排版欧洲和亚洲语言的特殊字符

我正在使用libertinelibertinust1math包,与book文档类结合。

我的论文序言很长(超过 1400 行),除了libertinelibertinust1math上面提到的包。

我的论文中有大量的书目条目,并且需要使用一些欧洲和亚洲语言的字符。 获得这些特征的最佳方法是什么,同时使我的论文中使用的几十个包产生副作用的可能性最小?

以下 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}

Libertinus/Charter 示例

这 ”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}

Libertinus 样本

\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}

Libertinus Serif 示例

Script=这会将 OpenType 字体的和功能正确设置Language=为您选择的语言。此处,将 的小写形式设置为i英语Iİ土耳其语。

相关内容