我想使用 TikZ 元素绝对放置在页面上。不幸的是,无论我做什么,TikZ 图片都会被视为字符,这导致它在不放置在另一个段落中时被视为段落。
我知道以下问题,但他们的解决方案在这里不起作用(除非我错过了什么):
最小示例
\documentclass{article}
\usepackage{tikz}
\begin{document}
\section{Some section}
\subsection{Some subsection}%
\tikz[remember picture,overlay,baseline]{\node at (current page.center){bla};}%
\begin{quote}
This text has too much distance to the subsection heading.
\end{quote}
\end{document}
请注意文本前面的大间隙。如果我删除 TikZ 命令,它就会消失。(TikZ 放置的文本“bla”在示例中不可见,但这里并不关心。)
当然,在这个最小的例子中,我可以将 TikZ 图片放在引号后面,但我的实际情况更复杂,涉及一些宏和类似的东西,这使得移动 TikZ 命令不是普遍适用的解决方案。如果有帮助,想象一下整个quote
环境都是动态的\input
,并且不能触及和命令\section
。\subsection
答案1
即使您正在使用remember picture,overlay
,TikZ 仍然会在部分命令之后留下零维,\hbox
从而导致在引用环境之前开始一个段落。
你可以通过以下方式达到同样的效果:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\section{Some section}
\subsection{Some subsection}%\tikz[remember picture,overlay,baseline]{\node at (current page.center){bla};}%
\mbox{}%
\begin{quote}
This text has too much distance to the subsection heading.
\end{quote}
\end{document}
我建议将 TikZ 图片调用放在不会创建这种多余段落的地方。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\section{Some section}
\subsection{Some subsection}%
\begin{quote}
\tikz[remember picture,overlay,baseline]{\node at (current page.center){bla};}%
This text has too much distance to the subsection heading.
\end{quote}
\end{document}
结果是
答案2
您可以使用\everypar
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\section{Some section}
\subsection[Some subsection]{Some subsection}
\everypar=\expandafter{%
\the\everypar\tikz[remember picture,overlay,baseline]{\node at (current page.center){bla};}%
\everypar={}}
\begin{quote}
This text has too much distance to the subsection heading.
\end{quote}
\subsection{Some subsection}
\begin{quote}
This text has too much distance to the subsection heading.
\end{quote}
\end{document}