从源生成文件时*.dtx
,Docstrip 会丢弃以注释字符开头的行%
(除非它们包含保护符%<guard>content
)。使用类似包的实用程序排版文档时doc
,通常使用包含相同的文件,这会导致排版之前遗漏的材料,包括和\DocInput{file.dtx}
之间的未注释代码。\begin{macrocode}
\end{macrocode}
我想知道是否可以使用 Docstrip 处理其他语言的注释语法。例如,对于 python,%
必须将其替换为#
。其他语言使用多个字符来开始注释行,例如//
在 C 中。如果可以更改查找的字符doc
,则可以排版源文件,同时仍保持其原始语言的有效性和可执行性。
是否可以将%
符号更改为一个或多个其他字符\DocInput
?
答案1
我不相信doc
可以如此定制,除非您自己制作一个版本来查找其他字符。例如,\xmacro@code
中的宏doc
被定义为明确查找% \end{macrocode}
。
\catcode`\!=\catcode`\% ^^A In this section there must not be
^^A any exclamation marks.
^^A
\begingroup
\catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
\catcode`\{=12 \catcode`\}=12
\catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
!% \end{macrocode*}
! Next follows the actual definition of |\macro@code|;
! notice the
! use of the new escape character. We manage to get the argument
! surrounded by the string |\end{macrocode}|, but at the end
! however, in spite of the actual characters used during the
! definition of
! this macro, |\end| with the argument |{macrocode}|
! will be executed, to ensure a balanced environment.
! \begin{macrocode*}
|gdef|xmacro@code#1% \end{macrocode}[#1|end[macrocode]]
!% \end{macrocode*}
这段代码有点令人困惑,但关键部分是!
是注释,|
是\
,[
是{
,]
是}
。{
,}
和%
是正常符号,\
和 空格被激活。因此,以下行
|gdef|xmacro@code#1% \end{macrocode}[#1|end[macrocode]]
本质上
\gdef\xmacro@code#1% \end{macrocode}{#1\end{macrocode}}
除了%
必须有和四个空格之外。
据推测,您可以进行修改doc.sty
来处理类似的问题#
,但这似乎需要大量工作。
这纯粹是个人观点,但我发现文学程序非常难读。对我来说,阅读一个文件比阅读带有注释的文件.dtx
要难得多。同样,我发现.sty
tex.web很难阅读。更好的选择可能是使用专门为其他语言设计的工具,而不是试图强制doc
适应您的用例。