在某些情况下,使用 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,则会在文档中添加一个额外的(空白)页面。