我刚刚遇到了这个好奇的问题。有人能告诉我发生了什么吗?以下是 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 获得了类似的结果。
现在,我对此有两个问题:
-()-
我认为这是“破坏”自动连字的规范方法。为什么 LuaLaTeX 会产生错误的输出?- 为了反对
\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 的观察。
- 我错了。
-{}-
是不是打破连字符的规范方法;相反,正确的方法是-\kern0pt-
。 - 这并不表示 LuaLaTeX 存在错误,而是在处理
-{}-
- 该
enumitem
包提供了调整项目标签排版的功能。