我对文档中 # 符号的外观不满意,于是看了看这个问题。我尝试创建一个简单的宏来替换
#
和
\texttt{\#}
我以为一个简单的
\renewcommand{\#}{\texttt{\#}}
可以解决问题。但是,我得到了一个致命的错误。
[25] [26] [27] [28] [29] (c:/texlive/2017/texmf-dist/tex/latex/base/t1cmtt.fd)
! TeX capacity exceeded, sorry [grouping levels=255].
\hmode@bgroup ->\leavevmode \bgroup
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on Thesis.log.
出了什么问题?为什么?我怎样才能成功创建我需要的宏?
答案1
您不能像那样根据命令本身来定义命令,因为找到后,\#
TeX 会将其替换为\texttt{\#}
,然后再替换为,\texttt{\texttt{\#}}
依此类推。
特定案例的解决方案
\renewcommand{\#}{\texttt{\symbol{`\#}}}
因为 的标准定义\#
是 的简化形式\symbol{`\#}
。
对于\command
仅生成文本的其他情况,
\let\standardcommand=\command
\renewcommand{\command}{\texttt{\standardcommand}}
会工作。