我尝试在 的宏\savebox
周围使用。我能以某种方式保留换行符吗(在 MWE 中它们消失了)?\BODY
\NewEnviron
\documentclass{article}
\usepackage{environ}
\newsavebox{\mybox}
\NewEnviron{myenv}{%
\savebox{\mybox}{\BODY}
\usebox{\mybox}
}
\begin{document}
\begin{myenv}
A
B
\end{myenv}
\end{document}
该问题可能与environ
包无关,但这就是我正在尝试使用的。
或者:有没有办法确定的垂直和水平尺寸\BODY
?
答案1
在构建段落时,没有文本“自然宽度”的概念:TeX 将使用您指定的宽度,或者\linewidth
在您未指定的情况下使用。
然而,有一个varwidth
环境可以提供帮助:
\documentclass{article}
\usepackage{environ,varwidth}
\newsavebox{\mybox}
\NewEnviron{myenv}{%
\sbox{\mybox}{\begin{varwidth}{\linewidth}\BODY\end{varwidth}}%
The box is \texttt{\the\wd\mybox} wide
and \texttt{\the\dimexpr\ht\mybox+\dp\mybox} high.
}
\begin{document}
\begin{myenv}
A
B
\end{myenv}
\end{document}
如何处理这些尺寸取决于你。
\NewEnviron
无需使用:
\documentclass{article}
\usepackage{varwidth}
\newsavebox{\mybox}
\newenvironment{myenv}
{\begin{lrbox}{\mybox}
\begin{varwidth}{\linewidth}}
{\end{varwidth}%
\end{lrbox}%
The box is \texttt{\the\wd\mybox} wide and
\texttt{\the\dimexpr\ht\mybox+\dp\mybox} high.
}
\begin{document}
\begin{myenv}
A
B
\end{myenv}
\end{document}