\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 合适的height
或depth
参数。
您的示例中发生了什么?这是一张图片:
规则确实是 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}