描述列表项:使用 Ligatures=TeX、fonts、xeLaTeX 和 luaLaTeX 的选择性不当行为

描述列表项:使用 Ligatures=TeX、fonts、xeLaTeX 和 luaLaTeX 的选择性不当行为

我刚刚遇到了这个好奇的问题。有人能告诉我发生了什么吗?以下是 mwe:

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmonofont{Consolas}
\begin{document}
\texttt{
\begin{description}
\item[--help] Help
\item[-{}-help] Help
\end{description}}
\end{document}

结果如下:

LuaLaTeX:

在此处输入图片描述

XeLaTeX:

在此处输入图片描述

我用 Source Code Pro 代替 Consolas 获得了类似的结果。

现在,我对此有两个问题:

  1. -()-我认为这是“破坏”自动连字的规范方法。为什么 LuaLaTeX 会产生错误的输出?
  2. 为了反对\texttt{},描述列表 [item] 被设置为拉丁现代罗马字体,而不是 Consolas。为什么?

(顺便说一句,我很感激我可以用这个enumitem包来修复问题 #2,但在我看来,我不应该这么做。)

答案1

如果为标签设置了单色字体,则不需要断开连字,因为等宽字体是在没有选项的情况下加载的Ligatures=TeX

\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{enumitem}

\setmonofont{Consolas}

\newlist{ttdescriptioninner}{description}{1}
\setlist[ttdescriptioninner]{font=\ttfamily}
\newenvironment{ttdescription}
 {\ttfamily\ttdescriptioninner}
 {\endttdescriptioninner}

\begin{document}

\begin{ttdescription}
\item[--help] Help
\item[--help] Help
\end{ttdescription}

\end{document}

在此处输入图片描述

答案2

我感谢 Henri Menke 和 Ulrike Fischer 的观察。

  1. 我错了。-{}-不是打破连字符的规范方法;相反,正确的方法是-\kern0pt-
  2. 这并不表示 LuaLaTeX 存在错误,而是在处理-{}-
  3. enumitem包提供了调整项目标签排版的功能。

相关内容