我试图通过使用\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 中提到的高度和深度的总和制作一个具有恒定高度的 parbox。
- 将 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}}