如何在 .dtx 文件中包含仅前导命令?

如何在 .dtx 文件中包含仅前导命令?

我正在尝试使用 Doc 和 DocStrip 编写我的第一个包,但在将仅包含前言的命令纳入文档时遇到了问题。例如,我想将其包含\allowdisplaybreaks在内。但 Doc 似乎试图使命令可用于文档,但由于包含在文档部分中,\begin{macrocode} ... \end{macrocode}因此失败了。\allowdisplaybreaks

有没有办法可以阻止 Doc 将某些命令视为宏(这些命令在文档编写期间也应该可用)?

编辑:为了更精确:这

%\begin{macro}{\allowdisplaybreaks}
% page breaks allowed in long formulas
%    \begin{macrocode}
\allowdisplaybreaks
%    \end{macrocode}
%\end{macro}

是我的 .dtx 文件的一部分,但在运行它时我收到“未定义的控制序列”错误,但如果我\allowdisplaybreaks用一些替换它就可以了\newcommand

编辑 2:这是 package.dtx

% \iffalse
%<*driver>
\ProvidesFile{package.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{package}
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{package}[2004/11/05]
\usepackage{amsmath}

\begin{document}
    \DocInput{package.dtx}
\end{document}
%</driver>
% \fi

%\begin{macro}{\allowdisplaybreaks}
% page breaks allowed in long formulas
%    \begin{macrocode}
\allowdisplaybreaks
%    \end{macrocode}
%\end{macro}
% \Finale
\endinput

如上所述,我收到“!未定义的控制序列。l.24 \allowdisplaybreaks”错误。

答案1

\usepackage{amsmath}您在文档中使用了,但如果您想要允许在文档中显示中断,则需要添加它。相反,如果您的包代码正在使用\allowdisplaybreaks,那么它可能应该有\RequirePackage{amsmath}

% \iffalse
%<*driver>
\ProvidesFile{package.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{package}
%
%<*driver>
\documentclass{ltxdoc}
\usep*ackage{package}[2004/11/05]
\usepackage{amsmath}
\allowdisplaybreaks
\begin{document}
    \DocInput{package.dtx}
\end{document}
%</driver>
% \fi
%\begin{macro}{\allowdisplaybreaks}
% page breaks allowed in long formulas
%    \begin{macrocode}
\RequirePackage{amsmath}
\allowdisplaybreaks
%    \end{macrocode}
%\end{macro}
% \Finale
\endinput

相关内容