本地禁用 en 和 em 破折号连字符

本地禁用 en 和 em 破折号连字符

我使用的编程工具 ( coqdoc) 可以根据我的源代码生成 LaTeX 文档。手册的部分内容包括打印精美的代码列表和数学证明。

这些清单和证明相当数学繁重,因此没有包装在verbatim或 中。当在代码或证明中lstlistings发现连续的破折号(--或)时,它们会被直接转储到 LaTeX 输出中,因此会转换为和 ,因为文档是由 排版的。代码和证明清单包装在特定环境中,我可以更新它。---pdflatex

我可以在序言中添加什么内容来禁用特定环境中的 en 和 em 破折号连字符?

理想情况下,我希望得到如下内容:

\documentclass{article}
\usepackage[T1]{fontenc}
\renewenvironment{coqdoccode}{MAGIC HERE}{}

\begin{document}
This should be an an and an em dash: -- ---
\begin{coqdoccode}
  This should be two and three small dashes: -- ---
  This should still be ligatures: ff fi
\end{coqdoccode}
\end{document}

microtype似乎只能在整个文档级别禁用连字。

答案1

在环境中激活连字符coqdoccode,将其定义为连字符后跟零字距。

\documentclass{article}
\usepackage[T1]{fontenc}

\newcommand{\activatehyphen}{%
  \begingroup\lccode`~=`-
  \lowercase{\endgroup\def~}{\char`\-\kern0pt }%
  \catcode`\-=\active
}

\newenvironment{coqdoccode}
  {\flushleft\activatehyphen\ttfamily}
  {\endflushleft}

\begin{document}
This should be an an and an em dash: -- ---
\begin{coqdoccode}
  This should be two and three small dashes: -- --- \\
  This should still be ligatures: ff fi \\
\end{coqdoccode}
\end{document}

在此处输入图片描述

我添加它\ttfamily只是为了清楚起见,但这不是必要的。

\ttfamily这是定义中没有的结果

在此处输入图片描述

相关内容