在 \texttt 内逐字使用

在 \texttt 内逐字使用

为什么我不能使用\begin{verbatim}inside \texttt

\texttt{ \small \begin{verbatim} 
iab <key> <expansion>
<key> is the string which should be expanded to <expansion>
\end{verbatim}}

这将引发一个错误。

我可以毫无问题地做到这一点,

{\tt \small \begin{verbatim} 
iab <key> <expansion>
<key> is the string which should be expanded to <expansion>
\end{verbatim}}

但我读过,\tt现在已经消失了。

答案1

环境verbatim和宏\verb会改变 catcode。当 TeX 从输入字符生成标记时,会使用 catcode。如果标记化已经完成,则 catcode 更改不会产生效果。如果逐字内容放在另一个宏的参数中(此处:),就会发生这种情况\texttt。可以使用带有 的组\ttfamily而不是 来避免这种情况\texttt

{% start group
\par % see below
\ttfamily\small % font changes
text bla bla ...
\begin{verbatim}
verbatim text ...
\end{verbatim}
text bla bla ...
\par % see below
}% end group

\small还会改变行距。TeX 在从段落生成行时使用段落末尾的行距值。因此,我\par在组的开始和结尾处明确添加了。

相关内容