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}