维护一个带有其自己的 .tex 文档的 .sty 文件

维护一个带有其自己的 .tex 文档的 .sty 文件

我想在同一个文件中维护:

  • 设置一个宏
  • 一份.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

迪泰克画廊https://www.ctan.org/tex-archive/info/dtxgallery

答案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文件。该脚本决定是否保留一行,无论它是否以 开头%__%

相关内容