Ich weiß, dass ich den Platzbedarf eines Tikz-Bildes leicht erhöhen kann, indem ich
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
y\tikz {\fill circle (2pt); \node[fit=(current bounding box), inner sep=2pt, draw] {};}x
\end{document}
Jetzt habe ich viele Tikzbilder, also habe ich versucht
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\tikzset{every picture/.append code={\node[fit=(current bounding box), inner sep=2pt, draw] {};}}
\begin{document}
y\tikz {\fill circle (2pt);}x
\end{document}
was mit fehlschlägt dimension too large
. Ich vermute, der Code wird mehrfach ausgewertet, oder was verursacht den Fehler?
Antwort1
Der Inhalt von every picture
wird zu Beginn von ausgeführt tikzpicture
, wenn die Begrenzungsbox Null mal Null ist. Dies führt vermutlich zu einer Division durch Null, die für den Fehler verantwortlich ist.
Sie möchten, dass der Code nicht am Anfang, sondern am Ende ausgeführt wird tikzpicture
. Die backgrounds
Bibliothek kann hierfür verwendet werden, indem ein background rectangle
leeres Element erstellt wird. Standardmäßig ist der Rand mit einer Linie eingerahmt. Geben Sie daher ein, draw=none
um ihn unsichtbar zu machen, und verwenden Sie , outer frame sep
um die Polsterung festzulegen.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\tikzset{every picture/.append style={show background rectangle,background rectangle/.style={draw=none,outer frame sep=2pt}}}
\begin{document}
y\tikz {\fill circle (2pt);}x
\end{document}
Aufgrund eines Okular-on-X-Fehlers ist die Bildgebung derzeit ausgesetzt. Wir entschuldigen uns für die Unterbrechung der visuellen Dienste.