如何相对于文本定位 TikZ 图片?

如何相对于文本定位 TikZ 图片?

以下问题基本上已经被问到在此网站上(不是我提出的),但是没有一个答案能让我满意,所以我将再次提问,希望能得到有用的答案。

考虑以下包含两个句子的 LaTeX 文档。

\documentclass{article}
\usepackage{lipsum}

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

\begin{document}

\lipsum[1][1]\lipsum[1][2]

\end{document}

当使用此代码进行编译时pdflatex,会产生以下输出。

没有 TikZ 图片的简单文本文档

我想将一个 1cm 宽的 TikZ 正方形放置在大写字母 U 左下角下方 1cm 和右侧 1cm 处,如下图所示。(我用红点标出了参考点,但这个红点不应该出现在实际输出中。)

期望的输出

我怎样才能实现这个目标?

作为第一次尝试,我尝试了以下代码。

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

\newcommand{\mytikzrec}{%
\begin{tikzpicture}[baseline=2cm]%
\draw (0,0) rectangle (1,1);%
\end{tikzpicture}%
}

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

\begin{document}

\lipsum[1][1]\mytikzrec\lipsum[1][2]

\end{document}

这产生了以下输出。

第一次尝试

这有两个问题。首先,我设法将方块向下移动,但我不知道如何将方块向右移动。其次,正常的文本流被打乱了,这不是我想要的。文本应该像图片不存在一样流动,就像上面第一个代码示例的情况一样。

答案1

您可以使用tikzmarkTiZ 库:

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

\begin{document}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \tikzmarknode{U}{U}t purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.

\begin{tikzpicture}[remember picture,overlay]
\draw (U.south west) ++ (1,-1) rectangle ++ (1,-1);
% just for showing the distances
\draw[red,-latex] (U.south west) |- ++ (1,-1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我想建议一个变化Juan Castaño 的回答,它使用\tikzmark而不是\tikzmarknode,从而产生更简洁的代码。

\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) ++ (1,-1) rectangle ++(1,-1);%
\end{tikzpicture}
\end{document}

答案3

虽然Juan Castaño 回答更通用(学会使用\tikzmark真的很有用),更简单的答案是---隐藏你的Ti的大小Z 图片overlay,这样 LaTeX 就会认为它是 0 尺寸的东西:

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

\newcommand{\mytikzrec}{%
\begin{tikzpicture}[overlay]%
\draw (1,-1) rectangle ++(1,-1);%
\end{tikzpicture}%
}

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

\begin{document}

\lipsum[1][1]\mytikzrec\lipsum[1][2]

\end{document}

在此处输入图片描述

(请注意,Ti 使用的单位默认情况下,Z 在两个轴上都是 1cm,尽管您可以通过多种方式对其进行调整。

使用起来\tikzmark功能更强大,但通常需要多次编译才能完成。

相关内容