这是这个问题我希望实现问题中描述的相同输出,即下图中红点下方 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}
这个输出符合我的预期,也符合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
精确定位正方形的第一个角,但还有其他选择。
\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);
产生完全相同的输出。