跨多个页面的保存框

跨多个页面的保存框

有没有办法让文本savebox跨越多页?在以下 MWE 中,文本无法容纳在一页中,因此文本被推到下一页,文本被截断。

\documentclass{article}
\usepackage{lipsum}
\newsavebox{\mybox}
\newcounter{test}
\begin{document}
\savebox{\mybox}{
  \setcounter{test}{10}
  \begin{minipage}{1.0\linewidth}
    \lipsum[1-10]
  \end{minipage}}
My counter is: \thetest.

\usebox{\mybox}
\end{document}

我知道我可以定义命令而不是使用savebox,但是正如 MWE 所示,我savebox对设置的使用是必要的。具体来说,我使用它来处理框中的 LaTex 命令(setcounter在这个特定的 MWE 中),打印一些结果,然后输出框的内容。

答案1

我认为你用错了工具。最好依靠\label-\ref机制。

无论如何,您可以使用较低级别的方法,通过设置\vbox排版和存储的方法。

然后可以将盒子“拆箱”,但是为了保留前导,需要一些技巧。

\documentclass{article}
\usepackage{lipsum}

\newsavebox{\mybox}
\newcounter{test}

\newcommand{\mpbox}[1]{%
  \setbox\mybox=\vbox{
    \everypar{\strut\everypar{}}%
    #1\par\xdef\belowprevdepth{\the\prevdepth}
  }%
}
\newcommand{\usempbox}{%
  \par\edef\aboveprevdepth{\the\prevdepth}%
  \setbox\mybox=\vbox{\prevdepth\aboveprevdepth\unvbox\mybox}
  \unvbox\mybox\prevdepth\belowprevdepth
}
\begin{document}

\mpbox{
  \setcounter{test}{10}
    \lipsum[1-10]
}

My counter is: \thetest.

\usempbox
some other text

\end{document}

在此处输入图片描述

答案2

这难道不是\edef您想要的,为了捕获\thetest定义宏时(即格式化的计数器值)的扩展?

\documentclass{article}
\usepackage{lipsum}

\newcounter{test}
\setcounter{test}{10}

% Make sure the commands aren't already defined
\newcommand*{\myFirstCommand}{}
\newcommand*{\mySecondCommand}{}

\edef\myFirstCommand{%
  \unexpanded{%
    \lipsum[1-3]\par
    \begingroup\bfseries              % Just to put some emphasis
    My counter is: %
  }%
  \thetest.\endgroup
}

\stepcounter{test}

\edef\mySecondCommand{%
  \unexpanded{%
    \lipsum[4-8]\par
    \begingroup\bfseries              % Just to put some emphasis
    My counter is: %
  }%
  \thetest.\endgroup
}

% Just to show that this doesn't influence what \myFirstCommand and
% \mySecondCommand expand to.
\setcounter{test}{0}

\begin{document}

\myFirstCommand

\mySecondCommand

Blah. No more \verb|\bfseries| here.

\end{document}

在此处输入图片描述

相关内容