我需要能够垂直移动 \vtop 或 \vbox 而不改变框大小,但它会卡在基线上(您可以上下填充框的内容,但似乎无法在任何垂直方向上将框本身移离基线)。
由于我需要直观地跟踪框的大小,因此我将框放在 \fbox 内。让我们以以下代码为起点。
\documentclass[border=5mm,varwidth]{standalone}
\usepackage{color}
\pagecolor{black}
\color{white}
\fboxrule0.1pt
\fboxsep0pt
\begin{document}
\newbox\hX
\setbox\hX\hbox{X}
\fbox{x}\fbox{\vbox{\copy\hX}}
% how to move second \fbox such that capital x slides up or down without changing vertical size of the \fbox frame?
\end{document}
答案1
如果您\fbox
只是要跟踪大小,则应将其设置\fboxsep
为负数\fboxrule
。
使用\raisebox
。
顺便说一句,\setbox\hX=\hbox{X}\vbox{\copy\hX}}
是一种复杂的方法,与输入 相同X
。唯一的区别是您不启动水平模式,但这与您使用它的环境无关。
\documentclass[border=5mm,varwidth]{standalone}
\setlength{\fboxrule}{0.1pt}
\setlength{\fboxsep}{-\fboxrule}
\newcommand{\movebox}[2][0pt]{\raisebox{#1}{\fbox{#2}}}
\begin{document}
\movebox{x}\movebox[-5pt]{X}\movebox{x}\movebox[-\height]{X}
\end{document}
在参数中,\raisebox
您可以使用\height
和\depth
,它们指的是被移动的框的自然高度和深度。当然,\movebox{x}
这与键入相同x
,但我使用它是为了统一。
技术说明。
LaTeX 的命令\raisebox
依赖于 TeX 原语\raise
,其语法是
\raise
⟨dimen⟩⟨盒子⟩
其中 ⟨dimen⟩ 是任何合法的尺寸(显式的,或后跟一个\dimen
或\skip
寄存器的可选因子,在后一种情况下\dimen
通过删除拉伸和收缩分量强制转换为一个),而 ⟨box⟩ 是任何盒子规范:
\hbox
⟨可选to
或spread
⟩⟨{
横向材料⟩}
\vbox
⟨可选to
或spread
⟩⟨{
垂直材料⟩}
\vtop
⟨可选to
或spread
⟩⟨{
垂直材料⟩}
\box
⟨注册号码⟩ 或\copy
⟨注册号码⟩\lastbox
⟨box⟩ 可以是任何类型的盒子。操作\raise
只是将其参考点向下移动(如果维度参数为负,则向上移动)指定的量,并相应地固定构造的盒子的高度和深度。
限制是\raise
不能可在垂直模式下使用。还有\lower
一种是对称工作的;\lower10pt
与和相反相同\raise-10pt
。
答案2
如果我理解你想要什么,\raisebox
那么很简单:
\documentclass[border=5mm,varwidth]{standalone}
\usepackage{color}
\pagecolor{black}
\color{white}
\fboxrule0.1pt
\fboxsep0pt
\begin{document}
\newbox\hX
\setbox\hX\hbox{X}
\fbox{x}\raisebox{\dimexpr1ex+0.2pt}{\fbox{\vbox{\copy\hX}}}\raisebox{-0.35\height}{\fbox{\vbox{\copy\hX}}}
\end{document}