我知道可以使用\makeatletter
和\makeatother
来修改 LaTeX 包内部。我一直认为你必须先打开修改器块,再关闭它,但我发现这个
\makeatletter
\def\bbibitem#1{\item[]\if@filesw\immediate\write\@auxout{\string \bibcite {#1} {\the\value{\@listctr }}}\fi\ignorespaces}
\makeatletter % !
正在工作。
这不应该失败吗?为什么它有效?
答案1
如果您制作了@
一封“信件”但没有将其恢复为“其他”,那么就会发生两三件事。
您可以
@
在文档中使用名称访问内部命令。\@
变成控制字而不是控制符号,因此foo\@ .
空格被删除,而通常foo\@ .
会显示空格(就像在 之后不会删除空格一样\$
)由非字母分隔的分隔参数
@
或显式\ifcat
测试的 catcode 测试@
将失败(但这些可能只发生在人工测试文档中)