用||夹着代码表示引用代码,pgf manual.pdf里是如何实现的? 财富值5

2020-04-01 21:29发布

学习pgf manual.pdf。 (运行命令行:texdoc pgf,打开pgf manual.pdf。) 在阅读源代码时,查找到C:\texlive\2019\texmf-dist\doc\gen...

学习pgf manual.pdf。 (运行命令行:texdoc pgf,打开pgf manual.pdf。) 在阅读源代码时,查找到C:\texlive\2019\texmf-dist\doc\generic\pgf\text-en\pgfmanual-en-introduction.tex,其中第二段代码: ```tex I wish to…… For example, the code |\tikz \draw (0pt,0pt) -- (20pt,6pt);| ``` 效果为: I wish to…… For example, the code `\tikz \draw (0pt,0pt) -- (20pt,6pt);` 用`||`夹着代码表示引用代码,但我没有作者设置的cls文件或是说明。哪个可以帮我找一下在哪里,或是如何实现的?
2条回答
合肥-Renascence_5
2020-04-01 22:37
`tikz`原文中的命令就是你在群里发的那一串代码 ```tex { \catcode`\|=12 \gdef\pgfmanualnormalbar{|} \catcode`\|=13 \AtBeginDocument{\gdef|{\ifmmode\pgfmanualnormalbar\else\expandafter\verb\expandafter|\fi}} } ``` 解释一下这个代码的意思, `\catcode`用于设置字符的`分类码`(category code),所以第一句是设置`|`的分类码为12,也就是其他字符类, 然后第二句全局定义了一个宏`\pgfmanualnormalbar`,这个宏展开的结果就是当前的`|`的意思, 然后第三句设置`|`的分类码为13,也就是活动字符,简单来说,此时`|`就相当于一个宏。最后一句则是在`document`环境开始时插入一段代码,这段代码是全局重定义宏`|`,如果在数学模式下,它就相当于是普通的竖线`|`,如果不是,它就相当于是`\verb|`,当再次输入一个`|`时,就刚好变成了`\verb| |`。 实际上这里并没有实现真正的`global`,真正要`global`的话,代码如下 ```tex \documentclass{article} { \global\catcode`\|=12 \gdef\pgfmanualnormalbar{|} \global\catcode`\|=13 \AtBeginDocument{\gdef|{\ifmmode\pgfmanualnormalbar\else\expandafter\verb\expandafter|\fi}} } \begin{document} |\tikz \draw (0pt,0pt) -- (20pt,6pt);| \[|aaa|\] \end{document} ``` `\expandafter`这种命令确实太黑科技了,我反正自己写的话写不出来

一周热门 更多>