我使用的编程工具 ( 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
这是定义中没有的结果