![将 doc/docstrip 与其他计算机语言一起使用](https://linux22.com/image/244857/%E5%B0%86%20doc%2Fdocstrip%20%E4%B8%8E%E5%85%B6%E4%BB%96%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%AF%AD%E8%A8%80%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8.png)
文档中package
提到,它可用于删除除 (La)TeX 之外的其他计算机语言文件。我正在寻找一种以文学方式记录其他语言(例如 JavaScript)的方法。
/*
Some comment lines
here and here.
*/
function Apple (type) {
this.type = type;
this.color = "red";
this.getInfo = function() {
return this.color + ' ' + this.type + ' apple';
};
}
有人能发布一个这种用法的最小示例(MWE)吗?还有其他策略可以使用吗?
答案1
也许这里给出的最简单的演示是实际使用的演示:使用 DocStrip 和.dtx
包含 TeX 和 Lua 代码的格式。我将使用我自己的包中使用的“一体化”格式.dtx
:这是可选的,但可以使编写演示变得更容易一些。
这里的关键思想是改变用作起始注释字符串的内容,以便 LaTeX 注释以 开始,%%
而 Lua 注释以 开始--
。注释字符串存储为\MetaPrefix
,并通过 包含在前导和后导中\edef
。因此,您需要做的是\let\MetaPrefix\relax
,然后定义所需的前导和后导,然后将其设置为适当的字符串。LaTeX 有一个设置:\DoubleperCent
。对于 Lua,直接输入内容很容易。
% \iffalse meta-comment
%<*internal>
\iffalse
%</internal>
%<*readme>
Some information here, perhaps :-)
%</readme>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
\expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\let\MetaPrefix\relax
\preamble
Some preamble text
\endpreamble
\postamble
Some postamble text
\endpostamble
\def\MetaPrefix{-- }
\generate{\file{\jobname.lua}{\from{\jobname.dtx}{lua}}}
\let\MetaPrefix\DoubleperCent
\generate{\file{\jobname.sty}{\from{\jobname.dtx}{latex}}}
%</install>
%<install>\endbatchfile
%<*internal>
\generate{\file{\jobname.ins}{\from{\jobname.dtx}{install}}}
\nopreamble\nopostamble
\usedir{doc/latex/siunitx}
\generate{\file{README.txt}{\from{\jobname.dtx}{readme}}}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
\else
\expandafter\endgroup
\fi
%</internal>
%<*driver>
\documentclass{ltxdoc}
%\DisableImplementation
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \begin{macrocode}
%<*lua>
demo = { }
demo.module = { name = "demo" }
%</lua>
% \end{macrocode}
%
% \begin{macrocode}
%<*latex>
\def\filename{demo}
%</latex>
% \end{macrocode}
如果您运行,您将从上面tex <filename>.dtx
提取出.lua
和文件,然后可以看到提取已按要求完成。运行还将创建一个文件,您可能希望单独使用该文件。据我所知,DocStrip 无法使用多行注释,因此您必须对目标语言使用单行注释方法。.sty
latex <filename>.dtx
.ins