我需要一个绝对定位textblock*
和一个浮动元素同时出现在同一个页面上。当textblock*
在里面写入时figure
,它会立即执行,因此在代码中出现的页面上可以看到figure
,但浮动元素最终放置的位置则不会显示。以下 MWE 导致以下输出。
我如何才能延迟执行宏(在本例中为 ),\mytextblock
直到浮动实际布置完毕?我能否以某种方式存储它并将其挂接到浮动的发货处?
\documentclass[a7paper]{scrbook}
\usepackage[absolute]{textpos}
\newcommand{\mytextblock}[1]{%
\begin{textblock*}{\textwidth}(0pt,0pt)
#1
\end{textblock*}%
}
\begin{document}
Some text.
\begin{figure}[p]
Figure content
\mytextblock{textblock content} % should appear on the same page as the figure
\end{figure}
\end{document}
输出:
相反,应该textblock*
位于 LaTeX 决定放置浮动的页面上:
答案1
这需要一个当前的 LaTeX(使用较旧的 LaTeX,你可以做类似的事情,例如使用 zref)和两个编译
\documentclass[a7paper]{scrbook}
\usepackage[absolute]{textpos}
\ExplSyntaxOn
\newcommand{\mytextblock}[2]
{
\RecordProperties{#2}{abspage}
\AddToHook{shipout/foreground}
{
\int_compare:nNnT{\RefProperty{#2}{abspage}}={\g_shipout_readonly_int}
{
\begin{textblock*}{\textwidth}(0pt,0pt)
#1
\end{textblock*}
}%
}
}
\ExplSyntaxOff
\usepackage{lipsum}
\begin{document}
Some text.
\begin{figure}[p]
Figure content
\rule{1cm}{0.6\textheight}
\mytextblock{textblock content1}{myfloat1} %
\end{figure}
\lipsum*[1-3]
\begin{figure}[p]
Figure content
\rule{1cm}{0.6\textheight}
\mytextblock{textblock content2}{myfloat2} %
\end{figure}
\end{document}