颜色框高度

颜色框高度

我试图通过使用\colorbox类似的方式来“突出显示”一个句子的两个部分:

\colorbox{red}{This is} \colorbox{blue}{a great sentence.}

问题是,第二部分中高度颜色框稍大一些,因为它包含一个g延伸到基线以下的。结果,两个颜色框在底部没有对齐,看起来不太理想。

我该如何让这两个盒子对齐?

答案1

您可以使用\strut

{\colorbox{red}{\strut This is} \colorbox{blue}{\strut a great sentence.}}

LaTeX/TEX 定义\strut为宽度为零的不可见框,其刚好延伸到基线的上方和下方。

答案2

让我们比较一下并决定您更喜欢哪一个:)

替代文本


\documentclass{article}

\usepackage[paperwidth=10cm,paperheight=10cm]{geometry}
\usepackage{graphicx}
\usepackage{xcolor}


\usepackage{calc}

%Define a reference depth. 
%You can choose either relative or absolute.
%--------------------------
\newlength{\DepthReference}
\settodepth{\DepthReference}{g}%relative to a depth of a letter.
%\setlength{\DepthReference}{6pt}%absolute value.

%Define a reference Height. 
%You can choose either relative or absolute.
%--------------------------
\newlength{\HeightReference}
\settoheight{\HeightReference}{T}
%\setlength{\HeightReference}{6pt}


%--------------------------
\newlength{\Width}%

\newcommand{\MyColorBox}[2][red]%
{%
    \settowidth{\Width}{#2}%
    %\setlength{\fboxsep}{0pt}%
    \colorbox{#1}%
    {%      
        \raisebox{-\DepthReference}%
        {%
                \parbox[b][\HeightReference+\DepthReference][c]{\Width}{\centering#2}%
        }%
    }%
}

\setlength{\fboxsep}{1pt}
\begin{document}

\noindent @Thomas \hrulefill\colorbox{red}{This is} \colorbox{blue}{a great sentence.}\hrulefill

\vspace{5mm}

\noindent @Yiannis \hrulefill{\colorbox{red}{\strut This is} \colorbox{blue}{\strut a great sentence.}}\hrulefill

\vspace{5mm}

\noindent @xport \hrulefill\MyColorBox{This is} \MyColorBox[blue]{a great sentence.}\hrulefill


\end{document}

编辑1:

我的上述想法可以解释如下:

  1. 我选择最高的字母作为常见高度的参考。
  2. 我选择最深的字母作为常见深度的参考。
  3. 然后根据步骤 1 和 2 中提到的高度和深度的总和制作一个具有恒定高度的 parbox。
  4. 将 parbox 向下移动到步骤 2 中提到的深度。

答案3

\documentclass[a5paper,12pt]{article}

\usepackage{soul,xcolor}
\sethlcolor{red}
\begin{document}

\hl{This is} \hl{\strut a great sentence.}

\end{document}

答案4

一个简单方便的解决方案是定义一个自定义命令,用颜色标记文本。它需要两个参数,颜色和要标记的文本。文本周围的彩色框是使用包创建的adjustbox。为了确保框填满整个行高,我们\strut在文本前面添加了颜色。

\usepackage{adjustbox}
\newcommand{\marktext}[2]{\adjustbox{bgcolor=#1}{\strut #2}}

相关内容