我想在同一个文件中维护:
- 设置一个宏
- 一份
.tex
记录此事的文件
它看起来像
% macros.sty
% The macros part
\def\N{\mathbb{N}}
\def\Z{\mathbb{Z}}
\def\C{\mathbb{C}}
% The documenting part
\section*{Mathematical objects}
The commands \verb+\N+, \verb+\Z+ and \verb+\C+ prints $\N$, $\Z$ and $\C$.
我如何才能轻松实现这一点?我的第一个想法是编写一个脚本,注释所有未注释的行并取消注释所有注释的行。它会.tex
从文件中生成一个文档.sty
。(因此“记录部分”应该在文件中注释.sty
)
您想到了更好的解决办法吗?
谢谢
答案1
LaTeX2e 软件包通常使用dtx格式。
.dtx 文件是文件扩展名为 .dtx 的文本文件,其中包含包文档和用户手册以及 .sty 文件等的代码以及对该代码的注释。
当你编写 .dtx 文件时,通常使用以下方式编写文档部分:文档包裹。
通常,您可以使用 (pdf)LaTeX 编译器编译该 .dtx 文件来获得包含文档、手册和可能有注释的源的 pdf 文件。
为了从 .dtx 文件中提取/生成 .sty 文件等,通常文档条包被使用。
人们经常使用文件扩展名来编写文本文件.ins。
这些 .ins 文件包含从 .dtx 文件中提取/生成 .sty 文件等的指令。
使用 (La)TeX 编译 .ins 文件时,该 .ins 文件将加载文档条包,并通过该包执行从.dtx 文件中提取/生成.sty 文件等的指令。
但你也可以在 .dtx 文件本身中有一个部分,它会导致加载文档条并在进一步处理.dtx 文件以创建包含包文档、用户手册和注释源等的.pdf 文件之前提取/生成.sty 文件等。
如果你对 dtx 格式和包感兴趣,这里有一些 CTAN 的链接文档和文档条:
文档条— 从文件中删除注释:https://www.ctan.org/pkg/docstrip
文档 — 格式化 LaTeX 文档:https://www.ctan.org/pkg/doc
文本 — 编写.dtx 和 .ins 文件的教程:https://www.ctan.org/pkg/dtxtut
答案2
按照你所说的方式使用的标准机制是乳胶源和可能大多数贡献包所使用的系统doc/docstrip
,但是如果你想要改变并且更接近你问题中的格式,如果你将其保存为macros.sty
% macros.sty
\ifcat a@
% The macros part
\RequirePackage{amsfonts}
\def\N{\mathbb{N}}
\def\Z{\mathbb{Z}}
\def\C{\mathbb{C}}
\expandafter\endinput\fi
% The documenting part
\documentclass{article}
\usepackage{macros}
\begin{document}
\section*{Mathematical objects}
The commands \verb+\N+, \verb+\Z+ and \verb+\C+ prints $\N$, $\Z$ and $\C$.
\end{document}
然后pdflatex macros.sty
会产生
答案3
我解决这个问题的方法是将.sty
文件写为
% macros.presty
% The macros part
\def\N{\mathbb{N}}
\def\Z{\mathbb{Z}}
\def\C{\mathbb{C}}
%__%%The documenting part
%__%\section*{Mathematical objects}
%__%The commands \verb+\N+, \verb+\Z+ and \verb+\C+ prints $\N$, $\Z$ and $\C$.
然后我有一个脚本将其转换macros.presty
为.sty
文件或.tex
文件。该脚本决定是否保留一行,无论它是否以 开头%__%
。