将 doc/docstrip 与其他计算机语言一起使用

将 doc/docstrip 与其他计算机语言一起使用

文档中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 无法使用多行注释,因此您必须对目标语言使用单行注释方法。.stylatex <filename>.dtx.ins

相关内容