\tikzmark
всегда работает как до, так и после одиночной ячейки или \multirow
, а также после \multicolumn
.
Нодоа \multicolumn
выдает ошибку:
! Misplaced \omit.
\multispan ->\omit
\@multispan
l.55 \tikzmark{cmc}\multicolumn{2}{c}{A and B}
& C\tikzmark{dmc} \\
I expect to see \omit only after tab marks or the \cr of
an alignment. Proceed, and I'll ignore this case.
Вот MWE:
\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{tikzmark, calc}
\usepackage{array}
\usepackage{multirow}
\renewcommand{\arraystretch}{1.4}
\begin{document}
All these ones work:
\begin{tabular}{ccc}
\tikzmark{a}A & B & \tikzmark{b}C \\
D & E & F \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:a) -- (pic cs:b);
\end{tikzpicture}
\begin{tabular}{ccc}
A\tikzmark{c} & B & C\tikzmark{d} \\
D & E & F \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:c) -- (pic cs:d);
\end{tikzpicture}
\begin{tabular}{ccc}
\tikzmark{amr}\multirow{2}{*}{A and D} & B & \tikzmark{bmr}C \\
& E & F\\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:amr) -- (pic cs:bmr);
\end{tikzpicture}
\begin{tabular}{ccc}
\multirow{2}{*}{A and D}\tikzmark{cmr} & B & C\tikzmark{dmr} \\
& E & F\\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:cmr) -- (pic cs:dmr);
\end{tikzpicture}
\begin{tabular}{ccc}
\multicolumn{2}{c}{A and B}\tikzmark{amc} & C\tikzmark{bmc} \\
D & E & F \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:amc) -- (pic cs:bmc);
\end{tikzpicture}
But this one doesn't work:
\begin{tabular}{ccc}
\tikzmark{cmc}\multicolumn{2}{c}{A and B} & C\tikzmark{dmc} \\
D & E & F \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:cmc) -- (pic cs:dmc);
\end{tikzpicture}
\end{document}
решение1
Вам следует поместить \tikzmark
внутри , \multicolumn
поскольку это считается текстом (\null). \multirow
OTOH просто накладывает текст на следующие несколько строк, предполагая постоянный интервал между строками. Это примерно то же самое, что и \smash{\begin{tabular}[t]...\end{tabular}}
.
Обратите внимание: если \multicolumn
шире двух столбцов, то \hfill
s не нужны.
\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{tikzmark, calc}
\usepackage{array}
\usepackage{multirow}
\renewcommand{\arraystretch}{1.4}
\begin{document}
\begin{tabular}{ccc}
\multicolumn{2}{c}{\tikzmark{cmc}\hfill A and B\hfill\null} & C\tikzmark{dmc} \\
D wider & E & F \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw (pic cs:cmc) -- (pic cs:dmc);
\end{tikzpicture}
\end{document}