如何在使用 dtx 文件时获取正确的 README

如何在使用 dtx 文件时获取正确的 README

我用的是 Joseph Wright 的模型 dtx 文件不幸的是,使用它的时候,生成的README.txt文件包含部分包代码,这当然是不想要的。

最后附上了一个相当长的最小示例。关于我的问题的重要部分就在最上面,据我所知,只有“文本”应该出现在 README.txt 中:

%<*readme>
Text
%</readme>

相反,README.txt 看起来像

Text
\endbatchfile
\def\shouldNotBeInReadme{really}

这是为什么?我做错了什么?

% \iffalse meta-comment
%<*internal>
\iffalse
%</internal>
%<*readme>
Text
%</readme>
%<readme>\endbatchfile
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
\expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\preamble
Preamble
\endpreamble
\postamble
Postamble
\endpostamble
\usedir{tex/latex/tikzscale}
\generate{
\file{\jobname.sty}{\from{\jobname.dtx}{package}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/tikzscale}
\generate{
\file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\nopreamble\nopostamble
\usedir{doc/latex/tikzscale}
\generate{
\file{README.txt}{\from{\jobname.dtx}{readme}}
}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
\else
\expandafter\endgroup
\fi
%</internal>
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tikzscale}[2012/09/10 v0.1 tikzscale LaTeX package]
%</package>
%<*driver>
\documentclass{ltxdoc}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
%\GetFileInfo{\jobname.sty}
%
%\title{Title}
%\author{Author}
%\date{Released \filedate}
%
%\maketitle
%
%\changes{v0.1}{2012/09/10}{First public release}
%
% Text
\def\shouldNotBeInReadme{really}
%
%
%\StopEventually{^^A
%  \PrintChanges
%^^A  \PrintIndex
%}
%
%\Finale

答案1

您有“未受保护”的代码行。如果您有一行.dtx未开始%且在保护“之外”的代码行,它将出现在每一个解压后的文件。如果你查看.sty.ins文件,你会看到。所以你想要

%    \begin{macrocode}
%<*package>
\def\shouldNotBeInReadme{really}
%</package>
%    \end{macrocode}

或者

% \iffalse
%<*package>
% \fi
%    \begin{macrocode}
\def\shouldNotBeInReadme{really}
%    \end{macrocode}
% \iffalse
%</package>
% \fi

或类似的东西。

与问题无关,但

%<readme>\endbatchfile

也是虚假的。

相关内容