为了获得完整的文档,我想维护并解释我的dtx
文件中的 Makefile。
出现了两个问题:
docstrip
总是给生成的文件添加扩展名(\file{Makefile}{\from{\jobname.dtx}{make}}
)中的选项卡
Makefile
未保留并被删除(all: [[TAB]]lualatex $(NAME).tex
)
这是我的 MWE:
%\iffalse
%<*internal>
\iffalse
%</internal>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
\expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\nopreamble\nopostamble
\generate{
\file{Makefile}{\from{\jobname.dtx}{make}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/\jobname}
\generate{
\file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
\else
\expandafter\endgroup
\fi
%</internal>
%<*driver>
\documentclass{ltxdoc}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
%\fi
%\iffalse
%<*make>
%\fi
% \section{The Makefile}
% \begin{macrocode}
NAME = testfile
% \end{macrocode}
% The default command
% \begin{macrocode}
all:
lualatex $(NAME).tex
% \end{macrocode}
%\iffalse
%</make>
%\fi
\endinput
编辑
在终端中第一次运行后,lualatex DOCUMENT.dtx
我得到了 makefile。然后我不能直接运行make
,而必须输入make --makefile=Makefile.tex
并得到错误*** missing separator. Stop.
答案1
在发布的 dtx 代码中没有制表符(因为网站将它们更改为空格),但如果我将制表符放回 Makefile 部分并修改.ins
为
\catcode9=12
\generate{
\file{Makefile}{\from{\jobname.dtx}{make}}
luatex
然后,如果我在 .ins 上使用,制表符就会写入 Makefile 。(Makefile.tex
但是会调用生成的文件。(无扩展名的文件在 TeX 中很棘手)
lualatex $(NAME).tex
因此,如果你在下面的文件中用制表符替换之前的空格,那么
luatex file.dtx
将产生file.ins
并
luatex file.ins
将生成一个Makefile.tex
带有标签的(至少在 cygwin texlive 2018 luatex 上)
%\iffalse
%<*internal>
\iffalse
%</internal>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
\expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\nopreamble\nopostamble
\catcode9=12
\generate{
\file{Makefile}{\from{\jobname.dtx}{make}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/\jobname}
\generate{
\file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
\else
\expandafter\endgroup
\fi
%</internal>
%<*driver>
\documentclass{ltxdoc}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
%\fi
%\iffalse
%<*make>
%\fi
% \section{The Makefile}
% \begin{macrocode}
NAME = testfile
% \end{macrocode}
% The default command
% \begin{macrocode}
all:
lualatex $(NAME).tex
% \end{macrocode}
%\iffalse
%</make>
%\fi
\endinput