如何向 l3build 解压的文档提供图像

如何向 l3build 解压的文档提供图像

我有一个模块,我想用 l3build 来管理。解压 docstrip 文件会生成一个 tex 文件。 l3build doc排版生成的 tex 文件。但我不知道如何配置build.lua以使该过程能够查看应包含的任何图像。

我的 MWE 有四个文件(全部放在一个Github 仓库为方便起见)

文件树

├── build.lua
├── foo.dtx
├── foo.ins
└── support
    └── duck.png

foo.dtx

%<*foo>
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\includegraphics[
    width=\textwidth,
%<bar>angle=180,
]{duck}
\end{document}
%</foo>

foo.ins

\input docstrip.tex
\askforoverwritefalse
\generate{\file{bar.tex}{\from{\jobname.dtx}{foo,bar}}}
\endbatchfile

因此bar.tex有一条额外的线,它可以将图像旋转 180 度。

build.lua

module = "foo"

typesetsuppfiles = {"duck.png"}
typesetfiles = {"foo.dtx","bar.tex"}

鸭子.png

鸭子

命令:

l3build doc foo
  • duck.png复制到typesetdir
  • foo.dtx排版为typesetdir(我认为)
  • 结果:成功。 foo.pdf被移入maindir

命令:

l3build doc bar
  • bar.tex解压到unpackdir
  • texbar.tex在运行unpackdir
  • 结果:由于duck.png未找到而失败。

答案1

这应该是你的build.lua

module = "foo"

typesetsuppfiles = { "duck.png" }
typesetfiles = {"foo.dtx"}

目录结构应该是:

├── build.lua
├── foo.dtx
├── foo.ins
└── support
    └── duck.png

support是程序支持的官方目录名l3build

答案2

以下代码(是的,它很丑陋)适用于您提出的具体情况:

module = "foo"

--typesetsuppfiles = {"duck.png"}
typesetfiles = {"foo.dtx","bar.tex"}

function docinit_hook()
  errorlevel = cp("duck.png", "./support", unpackdir)
  if errorlevel ~= 0 then
    error("** Error!!: Can't copy duck.png from ./support to "..unpackdir)
    return errorlevel
  end
  errorlevel = cp("duck.png", "./support", typesetdir)
  if errorlevel ~= 0 then
    error("** Error!!: Can't copy duck.png from ./support to "..typesetdir)
    return errorlevel
  end
  return 0
end

答案3

我提交了一个问题到 l3build github 并且已经修复。感谢 Joseph 和 Marcel!

相关内容