使用 LuaLaTeX 在文本模式下使用中间点/标点

使用 LuaLaTeX 在文本模式下使用中间点/标点

在法语中,字符“·”(U+00B7)有时用于表示中性语言。它与pdflatexUTF-8 配合良好:

% !TEX TS-program = pdflatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\begin{document}
Bonjour à tou·te·s!
\end{document}

pdflatex

但如果我使用lualatexpolyglossiafontspec使用此代码

% !TEX TS-program = lualatex
% !TEX encoding = UTF-8 Unicode

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{french}

\begin{document}
Bonjour à tou·te·s!
\end{document}

路拉泰克斯

它不再起作用了。

如何在 LuaLaTeX 中使用标点符号,polyglossia以及fontspec

答案1

我建议如下:

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{french}

%\catcode`\·=13 \def\cdottext{$\cdot$} \let·\cdottext
\catcode`\·=13 \def\cdottext{\ensuremath\cdot} \let·\cdottext % @Manuel; more robust

\begin{document}
Bonjour à tou·te·s!
\end{document}

它使其处于·活动状态并\lets插入一个\cdot(而不是字体文件中可能错误的字形)。

答案2

拉丁现代字体中的字符的宽度不正确,高度也可能不正确。

\documentclass{article}
\usepackage{ifxetex,ifluatex}
\newif\ifunicode
\ifxetex\unicodetrue\else\ifluatex\unicodetrue\fi\fi

\ifunicode
  \usepackage{fontspec}
  \usepackage{polyglossia}
  \setmainlanguage{french}
\else
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage[french]{babel}
\fi

\usepackage{newunicodechar}

\ifunicode
% fix middle dot in Latin Modern
\newunicodechar{·}{\makebox[0.27em]{·}}
\fi

\begin{document}

Bonjour à tou·te·s!

\end{document}

使用 LuaLaTeX 运行

在此处输入图片描述

使用 pdflatex 运行

在此处输入图片描述

使用 LuaLaTeX 或 XeLaTeX 降低点数

变成\newunicodechar{·}{\makebox[0.27em]{·}}

\newunicodechar{·}{\ensuremath{{\cdot}}}

在此处输入图片描述

仅供比较,如果 LuaLaTeX 将主字体设置为 Libertinus Serif,我们得到的结果没有\newunicodechar修复,

在此处输入图片描述

不同的修复

另一种可能性是从另一种字体中取中间的点。如果我们添加

\newfontfamily{\cmu}{CMU Serif}

并做

\newunicodechar{·}{{\cmu ·}}

输出是

在此处输入图片描述

稍微复杂一点的是使其也适应无衬线字体系列。

答案3

这是expl3@AlexG 答案的一个版本。

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{french}

\ExplSyntaxOn
\char_set_catcode_active:n { `\· }
\cs_new_protected:Npn · { \ensuremath\cdot }
\ExplSyntaxOff

\begin{document}
Bonjour à tou·te·s!
\end{document}

在此处输入图片描述

相关内容