如何 \smash 所有带降部的字母

如何 \smash 所有带降部的字母

有没有办法可以系统地减少字母下降部分的高度?

我在这里获得了有关规范带有降部行后的间距的帮助: 防止带有降部的字母(g、q、y……)影响行距 但下降线也会弄乱很多其他东西。例如,我需要它们不影响表达式周围框的高度。

\documentclass{article}
\usepackage{color}
\newcommand{\mybox}[1]{\fcolorbox{black}{blue}{\parbox{0.8\textwidth}{#1}}}
\begin{document}
\begin{minipage}[t]{2cm}
\hrule
\mybox{blah blah blah blah}
\end{minipage}%
\begin{minipage}[t]{2cm}
\hrule
\mybox{blah blah blah glah}
\end{minipage}
\end{document}

根据最后一行是否有下降部分,这会给出不同的框高度,而我不需要它。

我想找到一种方法来系统地 \smash 所有下降部,因为它可以防止在我需要垂直对齐一致的项目中再次出现此类问题。

enter image description here

编辑:好吧,对于这个带有框的特定示例,我可以在参数后添加 \vphantom{g}\vspace{-1pt}(假设下降部的大小大约为 1pt)。我仍然想知道是否有更通用的方法来消除下降部占用的空间。

答案1

此解决方案使用\raisebox。 的默认基线\parbox是中心。 要忽略最后一行的下降部分,您需要使用\parbox[b]

\documentclass{article}
\usepackage{color}
\newcommand{\mybox}[1]{\fcolorbox{black}{blue}{\raisebox{0pt}[\height][0pt]{\parbox[b]{0.8\textwidth}{#1}}}}
\begin{document}
\begin{minipage}[t]{2cm}
\hrule
\mybox{blah blah blah blah}
\end{minipage}
\begin{minipage}[t]{2cm}
\hrule
\mybox{blah blah blah glah}
\end{minipage}
\end{document}

demo

答案2

在应用之前,我截断了暂时设置的\fcolorbox底部对齐的深度。\parbox\box0

\documentclass{article}
\usepackage{color}
\newcommand{\mybox}[1]{%
  \fcolorbox{black}{blue}{%
  \setbox0=\hbox{\parbox[b]{0.8\textwidth}{#1}}\dp0=0pt\relax\box0}%
}
\begin{document}
\begin{minipage}[t]{2cm}
\hrule
\mybox{blah blah blah blah}
\end{minipage}%
\begin{minipage}[t]{2cm}
\hrule
\mybox{blah blah blah glah}
\end{minipage}
\end{document}

enter image description here

相关内容