如何移动 tikzmark?

如何移动 tikzmark?

我希望 tikzmark 位于表格行的中心,可选参数似乎不起作用或者我误用了它:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz,array}

\usetikzlibrary{tikzmark}

\begin{document}

\renewcommand{\arraystretch}{1.2}

\begin{tabular}{|c|}\noalign{\tikzmark[yshift=-5pt]{Z0}}\hline
foo
\end{tabular}

\tikz[overlay,remember picture]
    \fill[orange] (pic cs:Z0) circle (.5pt) ;

\begin{tabular}{|c|}\noalign{\tikzmark[yshift=-5pt]{Z1}}
foo
\end{tabular}

\tikz[overlay,remember picture]
    \fill[orange] (pic cs:Z1) circle (.5pt) ;

\end{document}

答案1

\begin{tikzpicture}[yshift=-5pt]我猜这和为什么不将 向下移动 的原因是一样的tikzpicture。该选项应用于tikzpicture图表坐标系中的 的内容,但不会影响tikzpicture基线/页面上的 的位置。

另一方面,foo\raisebox{5pt}{\tikzmark{Z0}}\tikzmark{Z1}bar \tikz[overlay,remember picture] \draw[orange] (pic cs:Z0) -- (pic cs:Z1);它是有效的,因为它在页面上\raisebox移动,就像字母一样。tikzmarkx

把一个放在\raisebox里面\noalign是行不通的,但可以采用一种稍微迂回的方式这样做:

代码输出

\documentclass{article}
\usepackage{tikz,array}

\usetikzlibrary{tikzmark}

\begin{document}

\renewcommand{\arraystretch}{1.2}

\begin{tabular}{|c|}\noalign{\tikzmark{top}}\hline
\raisebox{5pt}{\tikzmark{baseline}}foo
\end{tabular}

\begin{tikzpicture}[overlay,remember picture]
    % if you want to use the same coordinate multiple times
    % it makes sense to define a named \coordinate
    \coordinate (foo) at ({pic cs:top} |- {pic cs:baseline});

    \fill[orange] (foo) circle[radius=.5pt];
\end{tikzpicture}

% foo can of course be used in other tikzpictures as well
\tikz[remember picture,overlay]
   \draw [->] (foo) -- ++(1cm,1cm);

\end{document}

相关内容