如何垂直移动 \fbox,或者如何框住 \vbox 或 \vtop 并垂直移动它(通过基线)而不改变框的大小?

如何垂直移动 \fbox,或者如何框住 \vbox 或 \vtop 并垂直移动它(通过基线)而不改变框的大小?

我需要能够垂直移动 \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⟨可选tospread⟩⟨{横向材料⟩}
  • \vbox⟨可选tospread⟩⟨{垂直材料⟩}
  • \vtop⟨可选tospread⟩⟨{垂直材料⟩}
  • \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} 

在此处输入图片描述

相关内容