我正在尝试使用 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