我正在尝试定义一个新环境,其中输入文本放置在一个迷你页面内,其宽度等于输入文本的长度(类似于可变宽度框)。我希望在框上方添加一条水平线,其长度大于输入文本(例如 1.5*input-text-width),如下所示:
虽然有很多方法可以创建可变宽度的框,但我没有看到一种方法可以在框上画一条线,其长度与输入文本相关。我相信确定输入文本的长度是正确的方法。在新命令,长度很容易确定,因为输入文本可以称为#1。我的问题是如何确定新环境的输入文本长度。更确切地说,正文在新环境中定义?
最小工作示例是:
\documentclass{article}
\newenvironment{varlength}{
\begin{center}
\rule{0.9\textwidth}{0.8pt}
\begin{minipage}{0.6\textwidth}}{
\end{minipage}
\end{center}}
\begin{document}
\begin{varlength}
This is a text inside fixed length minipage with over-line
I want the same to be repeated for variable width box
\end{varlength}
\end{document}
答案1
“输入的长度”没有多大意义,因为 TeX 使用参数的当前值\hsize
(通常等于\textwidth
LaTeX 中的值)以固定大小排版段落。
您可以使用以下方法制作适应其内部材料大小的迷你页面varwidth
:
\documentclass{article}
\usepackage{varwidth}
\newsavebox{\varlengthbox}
\newenvironment{varlength}
{\begin{lrbox}{\varlengthbox}\begin{varwidth}{\textwidth}}
{\end{varwidth}\end{lrbox}
\begin{center}
\rule{1.5\wd\varlengthbox}{0.4pt}\\
\usebox{\varlengthbox}
\end{center}}
\begin{document}
\begin{varlength}
This is a text inside fixed length\\
minipage with over-line
I want the same to be repeated for\\
variable width box
\end{varlength}
\end{document}