Ich arbeite an einer Agenda in knitr (mit XeLaTeX). Ich verwende tikz
für abgerundete Kanten um eine tabular
Umgebung in der Monatsübersicht. Dies ist die erste von mehreren Seiten der Übersicht:
Wie Sie sehen, gibt es oben auf der Seite einen kleinen weißen Bereich. Ich glaube, dieser weiße Bereich entspricht der Position des Tikz-Codes (wie hier erläutert:So vermeiden Sie durch TikZ verursachten Leerraum).
Meine Frage lautet: Gibt es eine Möglichkeit, dieses Leerzeichen zu entfernen?
- Ich suche nach einer Lösung, bei der weder die Seitenränder vergrößert noch die Abbildungsgröße verringert werden muss.
- Die FragenSo vermeiden Sie durch TikZ verursachten LeerraumUndGanzseitiges Tikz-Bild mit Xelatex auf der Seite ohne Ränder zentrieren?scheint genau das zu fragen, was ich möchte, aber entweder sind die Antworten auf meinen Fall nicht anwendbar oder ich konnte nicht herausfinden, wie ich die Antworten auf meinen Fall anwenden kann.
Hier ist ein MWE(mit einer einzelnen Zelle und ohne abgerundete Kanten; Hervorhebung manuell hinzugefügt):
\documentclass{book}
\usepackage[showframe]{geometry}
\setlength{\parindent}{0pt} %no indenting of first line
\usepackage{tikz} %for rounded corners (not in mwe)
\usepackage{adjustbox} %for scaling table to fill page
\begin{document}
\raisebox{-\height}[0pt][0pt]{%
\begin{adjustbox}{totalheight=\textheight, width = \linewidth}
\begin{tikzpicture}
\node(table){%
\begin{tabular}{c}
tabular \\
\end{tabular}
};
\draw (table.north west) rectangle (table.south east);
\end{tikzpicture}
\end{adjustbox}
}
\end{document}
Einige zusätzliche Informationen zum MWE:
ich benutzte
adjustbox
FrüherSkalieren Sie die Tabelle, um die gesamte Seite auszufüllen. Das resultierende Tikz-Bild ist zu groß, was dazu geführt hätte, dass das Bild nach einer leeren Seite auf die nächste Seite verschoben wurde.Ich folgte daherGonzola Medinas Vorschlag, die Abmessungen des Tikz-Bildes zu verbergen. Dadurch wurden die leeren Seiten erfolgreich entfernt, es entstand jedoch oben auf jeder Seite der unerwünschte weiße Raum.
Antwort1
Wenn ich die Anforderungen richtig verstehe, dann liegt das Problem meiner Meinung nach darin, dass die TeX-Box, die die enthält, tikzpicture
eine Tiefe ungleich Null hat. Im Folgenden verwende ich den local bounding box
Schlüssel, um das Bild explizit zu benennen (die Verwendung von current bounding box
funktioniert nicht) und verwende dann den baseline
Schlüssel, um die Grundlinie von tikzpicture
auf den unteren Rand des Bildes zu setzen, sodass die Box, die die enthält, tikzpicture
keine Tiefe hat.
\documentclass{book}
\usepackage[showframe]{geometry}
\setlength{\parindent}{0pt}
\usepackage{tikz}
\usepackage{adjustbox}
\begin{document}
\begin{adjustbox}{totalheight=\textheight, width=\linewidth}%
\begin{tikzpicture}[local bounding box=picture, baseline=(picture.south)]
\node (table) {Some content};
\draw (table.north west) rectangle (table.south east);
\end{tikzpicture}
\end{adjustbox}
\end{document}
Ein alternativer Ansatz besteht darin, den Begrenzungsrahmen des Bildes explizit auf zu setzen (0,0) (\textwidth, \textheight)
. Der Nachteil besteht darin, dass Sie sicherstellen müssen, dass sich alle Teile des Bildes innerhalb des von diesen Punkten beschriebenen Rechtecks befinden, da sie sonst über die Seiten hinausragen. Eine Möglichkeit, dies zu umgehen, besteht darin, das Koordinatensystem über \textwidth
und zu skalieren \textheight
, wie dieses ziemlich grelle Beispiel zeigt:
\documentclass{book}
\usepackage[showframe]{geometry}
\setlength{\parindent}{0pt}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\useasboundingbox (0,0) (\textwidth, \textheight);
\tikzset{x=\textwidth/10, y=\textheight/10}
\foreach \x in {0,...,9}
\foreach \y [evaluate={\r=rnd; \g=rnd; \b=rnd;}] in {0,...,9}
\fill [/utils/exec=\definecolor{.}{rgb}{\r,\g,\b}, fill=.]
(\x, \y) rectangle ++(1, 1);
\end{tikzpicture}
\end{document}