我正在 knitr 中製定議程(使用 XeLaTeX)。我在每月概述中用於環境tikz
周圍的圓角邊緣。tabular
這是概述的幾頁中的第一頁:
正如您所看到的,頁面頂部有一個小的空白區域。我相信這個空白對應於 tikz 程式碼的位置(正如這裡所討論的:如何避免TikZ造成的空白)。
我的問題是:有沒有辦法刪除這個空白?
- 我正在尋找一種不需要增加頁邊距或減少圖形尺寸的解決方案。
- 問題如何避免TikZ造成的空白和使用 xelatex 將全頁 Tikz 圖像在頁面上居中而沒有邊距?似乎確切地問了我想要什麼,但要么答案不適用於我的案例,要么我無法弄清楚如何將答案應用於我的案例。
這是一個 MWE(只有一個單元格且沒有圓角邊緣;手動添加突出顯示):
\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}
有關 MWE 的一些額外資訊:
我
adjustbox
曾經縮放表格以填滿整個頁面。產生的 tikz 圖像太大,這會將圖像推到空白頁面之後的下一頁。我因此跟隨Gonzola Medina 關於隱藏 tikz 影像尺寸的建議。這成功地刪除了空白頁面,但導致每頁頂部出現不必要的空白。
答案1
如果我正確理解了需求,那麼我認為問題在於包含 的 TeX 框tikzpicture
具有一些非零深度。在下面,我使用local bounding box
鍵明確命名圖片(使用 不起作用current bounding box
),然後使用baseline
鍵將 的基線設定tikzpicture
到圖片的底部,這樣包含 的框tikzpicture
就沒有深度。
\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}
另一種方法是明確地將圖片的邊界框設為(0,0) (\textwidth, \textheight)
。缺點是您必須確保圖片的所有部分都位於這些點所描述的矩形內,否則它們會伸出邊緣。解決這個問題的一種方法可能是縮放座標系\textwidth
,\textheight
正如這個相當花哨的例子所示:
\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}