编辑

编辑

baseline当我在 TikZ 图片中使用键时overlay,图片突然具有非零深度:

\documentclass[]{article}
\usepackage{tikz}

\begin{document}
\begin{minipage}[t]{4cm}
abc\\
abc\tikz[overlay,opacity=0.5,red,baseline={(3,3)}]\filldraw (0,0)rectangle (3,3);def\\
abc
\end{minipage}
\end{document}

输出

这是一个错误吗?

编辑

我已经提交了错误报告https://sourceforge.net/p/pgf/bugs/345/。我不确定这是否是一个真正的错误,但在我看来,至少文档应该提到基线的这个副作用。

答案1

我不会认为这是一个错误,因为它们的用法完全正交。突然引入深度的原因是因为这是 baseline 所做的。这是因为 baseline 引入了对\pgf@picminy和 的修改\pgf@picmaxy。它们分别设置为 16000 和 -16000 并进行相应的测试(尽管只测试了 max,因为任何点都会修改 max)。 的相关部分\endpgfpicture

          % Shift baseline outside:
          \pgf@relevantforpicturesizefalse% 
          \pgf@process{\pgf@baseline}\showthe\pgf@y%
          \xdef\pgf@shift@baseline{\the\pgf@y}%

相反,您可以使用合适的变换,正如 Paul Gaborit 所展示的(这些变换是图片局部的,不会泄漏到外部放置机制);

\documentclass[]{article}
\usepackage{tikz}

\begin{document}
\begin{minipage}[t]{4cm}
abc\\
abc\tikz[overlay,
         opacity=0.5,red,
         shift={(-1.5,-1.5)}]
      \filldraw (0,0)rectangle (3,3);def\\
abc
\end{minipage}
\end{document}

在此处输入图片描述

答案2

在我看来,这似乎是一个错误。您可以baseline通过以下方式模拟yshift(使用-3cm):

\documentclass[]{article}
\usepackage{tikz}

\begin{document}
\noindent abc\\
abc\tikz[opacity=0.5,red,overlay,yshift=-3cm]\filldraw (0,0)rectangle (3,3);def\\
abc
\end{document}

答案3

无论如何,您可以使用\rlap和达到相同的效果\raisebox

\documentclass[]{article}
\usepackage{tikz}

\begin{document}
\begin{minipage}[t]{4cm}
abc\\
abc\rlap{\raisebox{-\height}[0pt][0pt]%
{\tikz[opacity=0.5,red]{\filldraw (0,0)rectangle (3,3);}}}def\\abc
\end{minipage}
\end{document} 

覆盖

相关内容