同一行不同大小的字体垂直对齐

同一行不同大小的字体垂直对齐

在 XeTeX 中,如果我有一行有两种字体大小,我该如何安排较小的字体与行的中心或顶部对齐?

例如

\newfontinstance\biggoth[Color=000000,Scale=5.0]{Cloister Black}
\newfontinstance\smallgoth[Color=000000,Scale=2.0]{Cloister Black}


\biggoth Hello \smallgoth World

“Hello”与行底对齐。

我很感激任何想法和意见。

答案1

通常,TeX 会将所有字符(和方框)的基线保持在相同高度。对于单个单词,您可以按照 chl 的建议,使用 来提高文本的高度\raisebox。与其猜测要提高多少,不如将单词放入方框中(可能带有支柱),测量其高度,然后适当提高。

\documentclass{article}
\newcommand*\raiseup[1]{%
        \begingroup
        \setbox0\hbox{\tiny\strut #1}%
        \leavevmode
        \raise\dimexpr \ht\strutbox - \ht0\box0
        \endgroup
}
\begin{document}
Here's some text. Here's a raised \raiseup{word}.
\end{document}

替代文本

答案2

也许你可以玩一下\raisebox,例如

\biggoth Hello \raisebox{.5ex}{\smallgoth World}

替代文本

答案3

这是另一种可能性,与 TH. 的建议非常相似:

\documentclass{minimal}
\usepackage{fontspec}
\newfontinstance\biggoth[Color=000000,Scale=5.0]{Cloister Black}
\newfontinstance\smallgoth[Color=000000,Scale=2.0]{Cloister Black}
\newsavebox{\mybox}
\newcommand*{\tlap}[1]{%
  \sbox{\mybox}{#1}%
  \raisebox{-\ht\mybox}{\usebox{\mybox}}%
}
\newcommand*{\mlap}[1]{%
  \sbox{\mybox}{#1}%
  \raisebox{-0.5\ht\mybox}{\usebox{\mybox}}%
}
\begin{document}
\tlap{\biggoth Hello}
\tlap{\smallgoth World}

\mlap{\biggoth Hello}
\mlap{\smallgoth World}
\end{document}

替代文本

相关内容