如何相对于 \tikzmark 定位 TikZ 图片?

如何相对于 \tikzmark 定位 TikZ 图片?

这是这个问题我希望实现问题中描述的相同输出,即下图中红点下方 1cm 和右侧 1cm 处的一个 1cm 宽的正方形(该点不应出现在输出中):

期望输出

这个答案,我尝试使用tikzmark包,但与答案不同,我尝试使用命令\tikzmark而不是\tikzmarknode。我的尝试基于列出的第一个示例软件包tikzmark文档在第 10 页,即以下代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\title{}
\author{}
\date{}

\begin{document}
\[
\tikzmark{a} e^{i \pi/2} = i
\]
This\tikz[remember picture,overlay,baseline=0pt] \draw[->] (0,1em)
to[bend left] ([shift={(-1ex,1ex)}]pic cs:a); is an important
equation.
\end{document}

产生以下输出(编译两次后): TikZ 手册中给出的第一个示例的输出

这个输出符合我的预期,也符合tikzmark文档中显示的图纸。

基于此示例,我尝试使用以下代码解决原始问题:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usepackage{lipsum}

\title{}
\author{}
\date{}

\begin{document}

\lipsum[1][1]\tikzmark{x}\lipsum[1][2]

\begin{tikzpicture}[remember picture,overlay]%
\draw (pic cs:x) ++ (1cm,-1cm) rectangle (1cm,-1cm);%
\end{tikzpicture}
\end{document}

这产生了以下输出(编译两次后):

我的尝试

这与我预期的不一样,原因有二。首先,形状是矩形,而不是正方形。其次,它位于标记的左侧,而不是右侧。

为何我的代码无法按预期运行?该如何修复?

答案1

您需要使用 仔细绘制正方形,rectangle++以便第二个角从第一个角绘制。在这里,我使用库calc精确定位正方形的第一个角,但还有其他选择。

tikz 相对于 tikzmark

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\usepackage{lipsum}

\title{}
\author{}
\date{}

\begin{document}

\lipsum[1][1]\tikzmark{x}{}\lipsum[1][2]

\begin{tikzpicture}[remember picture,overlay]%
    \filldraw[red,opacity=0.5] (pic cs:x) circle(2pt);
    \draw ($(pic cs:x) + (1,-1)$) rectangle ++ (1,-1);%
\end{tikzpicture}
\end{document}

如果不使用calc库,您可以像这样调整初始命令:

\draw (pic cs:x) ++ (1,-1) rectangle ++(1,-1);

产生完全相同的输出。

相关内容