使用 lualatex 时会出现不需要的 en-dash 连字符,但使用 xelatex 时不会出现这种情况

使用 lualatex 时会出现不需要的 en-dash 连字符,但使用 xelatex 时不会出现这种情况

我正在尝试从 Pandoc Markdown README 文档生成 PDF 文档。这是 MWE:

\documentclass[english,]{article}
\usepackage[T1]{fontenc}
\usepackage{ifxetex,ifluatex}

\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[utf8]{inputenc}
\else % if luatex or xelatex
  \ifxetex
    \usepackage{mathspec}
    \usepackage{xltxtra,xunicode}
  \else
    \usepackage{fontspec}
  \fi
\fi

\defaultfontfeatures{Ligatures=TeX}
\setmonofont[Scale=MatchLowercase]{DejaVu Sans Mono}

\begin{document}
\texttt{-{}-enable-debugging}
\end{document}

当我使用(beta-0.76.0-2013070111(TeX Live 2013 / Debian)(rev 4627))生成PDF时,lualatex它会创建一个短划线而不是排版--

不需要的破折号图片

短破折号是不需要的。XeLaTeX 不会这样做。我想要两个破折号。

更新

最后,我创建了一个补丁,让 Pandoc 使用-\/-而不是 来-{}-避免连字。

答案1

错误在于声明

\defaultfontfeatures{Ligatures=TeX}

在加载 mono 字体之前。这会将常见的 TeX 连字添加到常规集合中,特别是会变成--短破折号。


顺便说一句,您不应该加载xltxtraxunicodexltxtra它有一些功能,但您不太可能真的需要它们。fontspec在 的旧版本中,它曾经被推荐过。现在它完成了 的主要功能xltxtra,并且还加载了xunicode。由于只mathspec加载fontspec该包就足够了。

也避免fontenc使用 XeLaTeX 和 LuaLaTeX。将其放在 pdflatex 特定部分。

相关内容