Я работаю над повесткой дня в knitr (используя XeLaTeX). Я использую tikz
для скругленных краев вокруг tabular
окружения в ежемесячном обзоре. Это первая из нескольких страниц обзора:
Как вы видите, в верхней части страницы есть небольшое белое пространство. Я считаю, что это белое пространство соответствует расположению кода tikz (Как обсуждалось здесь:Как избежать пустого пространства, вызванного TikZ).
У меня вопрос: есть ли способ убрать это белое пространство?
- Я ищу решение, которое не требует увеличения полей страницы или уменьшения размера рисунков.
- ВопросыКак избежать пустого пространства, вызванного TikZиЦентрирование полностраничного изображения Tikz на странице без полей с помощью xelatex?кажется, спрашивают именно то, что я хочу, но ответы либо не применимы к моему случаю, либо я не могу понять, как применить ответы к моему случаю.
Вот 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 слишком велико, что привело бы к его перемещению на следующую страницу после пустой страницы.Поэтому я последовалПредложение Гонзолы Медины скрыть размеры изображения тикза. Это успешно удалило пустые страницы, но привело к появлению нежелательного белого пространства в верхней части каждой страницы.
решение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}