\vrule 中“高度”参数的不同效果

\vrule 中“高度”参数的不同效果
\documentclass[a4paper]{article}
\usepackage{xcolor}
\usepackage{geometry}
\geometry{showframe}
\geometry{left=1cm,right=1cm,top=1cm,bottom=1cm}


\begin{document}
\parindent0pt
\fboxsep0pt
\fboxrule1pt
\textcolor{red}{\vrule width 1pt height 1pt}\\% I get a vrule with a height of 1pt as I expect.
\fbox{\parbox{1in}{aa\\AA}}%
\textcolor{red}{\vrule width 1pt height 1pt}% What I want is a vrule with a height of 1pt, so that it aligns with the bottom line of `\fbox` How can I get such a line by \vrule?
\fbox{\parbox{1in}{aa\\AA}}
\end{document}

在此处输入图片描述

答案1

的工作\vrule原理取决于上下文。如果您未指定height,则规则将与封闭框一样高。1如果width指定,则默认为 0.4pt。相同将会发生depth,这似乎是您不知道的因素。

示例(纯 TeX 格式):

\hbox{\vrule a}

\hbox{\vrule b}

\hbox{\vrule Xy}
\bye

在最后一个例子中,您会看到深度也进行了调整以匹配封闭框的深度。

如果您的盒子恰好高度为零,那么将用于\vrule,因此它将是不可见的(但它会贡献其宽度)。

请注意,该框可能是“隐式的”:如果您\vrule在段落中间使用,其高度和深度将默认为\hbox在段落制作过程中构建的高度和深度,\vrule最终将在其中排版。

在此处输入图片描述

如果你想具体的高度或深度,你必须告诉 TeX 合适的heightdepth参数。

您的示例中发生了什么?这是一张图片:

在此处输入图片描述

规则确实是 1pt 高,但它和封闭框一样深,封闭框恰好包含一个\parbox以基线为中心的框(取公式轴高度)。更简单的图片:

\hbox{\vrule height 1pt Xy}

在此处输入图片描述

您可以看到高度(基线以上的范围)为 1pt,但深度是封闭框的深度。

脚注

1由于\vrule是水平命令,因此封闭框必然是\hbox(像所示示例中那样明确,或者在构建段落期间构建)。

你的目标

\documentclass[a4paper]{article}
\usepackage{xcolor}

\newcommand{\fparboxwithruleinfront}[4][.]{%
  \textcolor{#1}{\rule{1pt}{#2}}%
  \raisebox{\depth}{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{1pt}\fbox{\parbox{#3}{#4}}}%
}

\begin{document}

\fparboxwithruleinfront[red]{1pt}{1in}{aa\\AA}

\bigskip

\fparboxwithruleinfront{4pt}{1in}{aa\\AA}

\end{document}

在此处输入图片描述

相关内容