编辑

编辑

为了获得完整的文档,我想维护并解释我的dtx文件中的 Makefile。

出现了两个问题:

  1. docstrip总是给生成的文件添加扩展名(\file{Makefile}{\from{\jobname.dtx}{make}}

  2. 中的选项卡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

Makefile

编辑

在终端中第一次运行后,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

相关内容