在 luatex 中添加图像

在 luatex 中添加图像

我想使用 Lua 函数来重现 的效果\includegraphics{testimg}。这意味着图像“testimg.pdf”将在以下示例中居中显示。

\documentclass{minimal}
\begin{document}
\centering

Some text.

\directlua{
  tex.print("Text from Lua.")
  a = img.new({filename="testimg.pdf", height="200bp"})
  img.write(a)
}

Some more text.

\end{document}

虽然文本确实居中显示,但图像却显示在页面左侧。显然,我做错了。有什么提示吗?

答案1

您要做的img.write()是将节点直接写入输出流,而无需了解当前状态(\centering)。当您处于水平模式时,一切都很好。当您处于垂直模式时,节点只会插入到流中,也就是说

在此处输入图片描述

所有 hlist 都有一个左跳跃和一个右跳跃(对于\centering),而图像没有。您必须自己插入左跳跃和右跳跃。

如果你安装了 graphviz,你可以尝试 viznodelist (https://gist.github.com/pgundlach/556247)从页面生成lua文件gv文件:

\usepackage{atbegshi}
...
\AtBeginShipout{%
  \directlua{
     require("viznodelist")
     viznodelist.nodelist_visualize(tex.box["AtBeginShipoutBox"],"nodes.gv")
  }}

并查看生成的文件nodes.gv

答案2

使用

\noindent
\makebox[\textwidth]{%
\directlua{
  tex.print("Text from Lua.")
  a = img.new({filename="testimg.pdf", height="200bp"})
  img.write(a)
}}

然后它与文本一起居中。

相关内容