framed.sty 在填充文档最后一页时删除以下 \label 命令

framed.sty 在填充文档最后一页时删除以下 \label 命令

在某些情况下,使用 framed.sty 时,框架环境之后发生的 \label 命令会丢失,并且不会将任何内容写入 .aux 文件。要实现这种情况,框架材料必须出现在文档的最后一页,并且必须完全填满最后一页。

这是一个有效的例子:

\documentclass{article}
\usepackage{framed}
\begin{document}

\begin{itemize}
  \item ref-foo: \ref{foo} \qquad  pageref-foo: \pageref{foo}
\end{itemize}

\begin{framed}
  First line of the framed text
 
  \vspace{6.78in} % length chosen to push final line to bottom of page
 
  Final line of the framed text

\end{framed}

\label{foo} 

\end{document}

如果您更改 \vspace 命令以使框架稍大一些,以便框架环境的最后一行出现在下一页,则 .aux 文件将包含 \newlabel{foo}{{}{1}}。同样,如果您更改 \vspace 命令以使框架稍小一些,则该 \newlabel 命令将位于 .aux 文件中。

有人可以建议一个解决方法吗?

编辑:我应该提到,如果在 \label 命令之前放置 \leavevmode,则会在文档中添加一个额外的(空白)页面。

相关内容