即使是空的,盒子也具有相同的垂直高度

即使是空的,盒子也具有相同的垂直高度

我正在尝试在一个或多个文本行周围绘制一个垂直框(用于预填充表单中的字段),但某些字段可能为空,在这些情况下,框的垂直高度应与框内只有一行(甚至只有一个字符)内容时相同。

我目前正在\field为此定义一个命令,如下所示:

\newcommand{\field}[1]{
    \framebox[\textwidth][l]{        
        \parbox[l]{0.96\textwidth}{
            \raggedright #1 \addvspace{0.1\baselineskip}
        }
    }
}

但是这会给我一个“缺失项目”错误,因为\addvspace它不是垂直模式。如果我添加一个\par来解决这个问题,那么在最后一行文本之后,框的垂直填充太多了。如果我\addvspace完全删除,那么当框中没有文本时,框的高度不够。

有人能否建议创建一个框的最佳方法,该框与页面宽度相同,高度至少为一行文本(即使是空的),但可以扩展以包含多行文本?

答案1

\strut通常,人们会在开头包含一个。还请注意,宏定义中有一些虚假空格(您需要一些战略性放置%)。请参阅%行末百分号 ( ) 有什么用?我还猜测您使用的.96\textwidth结果来自一些过满的\hboxes。您也可以调整此宽度以完美适合文本块...

这也许就是您所追求的:

\newcommand{\field}[1]{%
  \noindent%
  \framebox[\linewidth][l]{%
    \parbox[t]{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{%
      \raggedright\strut#1%
    }%
  }%
}

以下是它的用法平均能量损失

在此处输入图片描述

\documentclass{article}
\newcommand{\field}[1]{%
  \noindent%
  \framebox[\linewidth][l]{%
    \parbox[t]{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{%
      \raggedright\strut#1%
    }%
  }%
}

\begin{document}
\field{Some test}

\field{}

\field{I'm trying to draw a vertical box around one or more lines of
  text (for a field in a pre-filled form), but some of the fields may
  be empty and in these cases, the box should be the same vertical 
  height as when there is only one line (or even just one character) 
  of content within the box.}
\end{document}

根据您的使用情况,您也可以考虑以 结尾\strut,如果最后一行没有降部,则留出足够的空间。

相关内容