我有一个非常简单的表格(对于最小示例甚至更简化),其中有一些突出显示。通过使用\colorbox
and \tikz\node
(带和不带inner sep
参数),我在文本周围创建了框,但每个选项的行高不同。即使使用例如仅\tikz\node
固定内部分隔符,突出显示位置文本...也是错误的。有没有办法突出显示某些单词而不移动一行中的所有单词高度?
编辑:谢谢 Paul Stanley,您的描述非常准确,让我理解了 tikz 和 colorbox。下面是现在对我有用的“简单”解决方案。
\documentclass[12pt]{article}
\usepackage{subcaption}
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{arrows, backgrounds, positioning}
\usepackage{xcolor}
\begin{document}
\newcommand{\highlighted}[1]{\colorbox{orange!35}{\strut#1}}
\newcommand{\highlightRed}[1]{\colorbox{red!20}{\strut#1}}
\tikzset{every picture/.style={remember picture}}
\begin{table*}[b!]
\caption{Example challenges data integration with missing,
\colorbox{red!20}{wrong or misspelled} values or
\colorbox{orange!35}{semantic ambiguities}.}
\begin{subtable}[t]{\textwidth}\centering
\captionsetup{justification=centering,singlelinecheck=false}
\caption{Example person entities in source A.}
\begin{tabular}{lllll}
\toprule
ID & \highlighted{name} & \highlighted{surname} & \highlighted{birthPlace} & type \\
\midrule
\tikz\node[inner sep=.4pt, anchor=base] (a1) {A1}; & GottfriedWilhelm & Leibniz & Leipzig (Germany) & \highlighted{person} \\
\multicolumn{5}{c}{\ldots}\\
\bottomrule
\end{tabular}
\end{subtable}
\vspace{0.6cm}
\begin{subtable}[t]{\textwidth}\centering
\captionsetup{justification=centering,singlelinecheck=false}
\caption{Example person entities in source B.}
\begin{tabular}{llll}
\toprule
ID & \highlighted{label} & \highlighted{place\_of\_birth} & type \\
\midrule
\tikz[baseline]\node[anchor=base,inner sep=.4pt] (b0) {B0}; & Gottfried \highlightRed{W. Leibn\"utz} & \highlightRed{Stagira (Greece)} & \highlighted{philosopher} \\
\multicolumn{4}{c}{\ldots}\\
\bottomrule
\end{tabular}
\end{subtable}
\end{table*}
\begin{tikzpicture}[overlay, remember picture]
\path[thick, <->, >=latex, black] (a1) edge [bend right = 85, left] node
[above, text width=3.5cm, rotate=90] {\small{equivalence relation}} (b0);
\end{tikzpicture}
\end{document}
编辑:添加了完整的代码示例,仍在处理图片
答案1
我认为你被两件事困扰:在 tikz 中定位基线和锚点的问题,以及“分离”(无论是颜色框还是 tikz 节点)取决于框的实际内容的事实,并且“姓氏”(x 高度的连续字母)看起来与“出生地”(有三个字母高于 x 高度)或“golly”(有三个字母低于 x 高度)不同。
您可以在此图中看到点,每个点都只是一个\colorbox
。您会遇到同样的问题tikz
,它似乎也在计算其与字符边界框的分离。
处理这个问题最简单的方法是将一个幻影和标准尺寸的人物放入框中。因此,使用\colorbox{orange!35}{\strut xxxxxx}
(等)可以得到。
尽管毫无疑问还有其他方法(例如,绘制tikz
矩形然后添加文本)。
对于tikz
版本,我认为您还需要设置baseline
( \tikz[baseline]\node...
) 并可能将其用作base
锚点。就我个人而言,我不会混合使用colorbox
和tikz
方法,并且倾向于认为这colorbox
只是突出显示的更简单的选项。类似
\newcommand{\highlighted}[1]{\colorbox{orange!35}{\strut#1}}
可能会有帮助。