谢谢这个答案,我写了这样的代码:
\documentclass{article}
\NewDocumentCommand\foo{v}{\texttt{#1}}
\catcode`\|\active
\AtBeginDocument{\catcode`\|\active\def|{\foo|}}
\catcode`\| 12 %
\begin{document}
$a_|b|$
\end{document}
我越来越:
! Missing { inserted.
<to be read again>
\tex_let:D
l.15 $a_|
b|$.
但是,$a |b|$
运行正常。也$a_{|b|}$
可以运行。是否可以修复此问题并使其可以使用$a_|b|$
(没有花括号|b|
)?
答案1
事实上,一些命令(作为未记录的扩展的偶然序列)不会对可怕的输入结构(例如x_\text{foo}
或)产生错误,但这x^\frac12
并不意味着需要将此类内容复制到其他地方。记录的 latex 语法始终用括号括住下标。
话虽如此,假设您想忽略此建议……
\documentclass{article}
\NewDocumentCommand\foox{v}{\texttt{#1}\egroup}
\catcode`\|\active
\def\foo{\bgroup\foox}
\AtBeginDocument{\catcode`\|\active\def|{\bgroup\foox|}}
\catcode`\| 12 %
\begin{document}
$a_|b|$
\end{document}