我正在尝试回答我之前提出的一个问题:美国高中教科书的弧线表示法更佳
我写了一条新命令
\documentclass{article}
\usepackage{graphicx}
\newcommand\arc[1]{%%
\setbox9=\hbox{#1}%%
\ooalign{%%
\raisebox{\ht9}{%%
\resizebox{\wd9}{\dimexpr1.75\height}{%%
\rotatebox{90}{)}}}\cr#1}}
\begin{document}
\arc{ABC}
\arc{A}
\arc{AB}
\end{document}
运行正常。但是,当我尝试按如下方式定义时,问题出现了:
\newcommand\arc[1]{%%
\setbox9=\hbox{#1}%%
\ooalign{%%
\raisebox{\ht9}{%%
\resizebox{\wd9}{\dimexpr1.75\height}{%%
\rotatebox{-90}{(}}}\cr#1}}
我尝试过各种方法来避免这种情况(例如将旋转的材料包裹在自己的盒子里),但都无济于事。
为什么第二种方法不起作用?
答案1
如果我做
\sbox0{\rotatebox{-90}{(}}\the\ht0
我明白了0.0pt
,这应该可以解释这个问题。为什么?让我们看看当我输入
(\rotatebox{-90}{(}\vrule height0.1pt depth 0.1pt width 4pt
(\vrule
只显示基线的位置):
这是括号边界框的图片:
(再次强调,规则显示了基线)。
如果我做
\newcommand\arc[1]{{%%
\sbox\arcbox{#1}%%
\ooalign{%%
\raisebox{\ht\arcbox}{%%
\resizebox{\wd\arcbox}{\dimexpr1.75\height}{%%
\rotatebox[origin=c]{-90}{(}}}\cr#1}}}
(请注意多出的一对括号)我从中得到\arc{ABC}
,
还请注意,我声明\newsavebox\arcbox
;最好避免随机使用临时寄存器。
总是确保它\ooalign
在一个组内。
解释:当你旋转而不指定中心时,将使用左下角。因此,旋转 -90 度的框将总是导致高度为零。