Estoy trabajando en una agenda en knitr (usando XeLaTeX). Lo uso tikz
para bordes redondeados alrededor de un tabular
entorno en la descripción general mensual. Esta es la primera de varias páginas de la descripción general:
Como puede ver, hay un pequeño espacio en blanco en la parte superior de la página. Creo que este espacio en blanco corresponde a la ubicación del código tikz (como se analiza aquí:Cómo evitar los espacios vacíos causados por TikZ).
Mi pregunta es: ¿hay alguna manera de eliminar este espacio en blanco?
- Estoy buscando una solución que no requiera aumentar los márgenes de la página ni disminuir el tamaño de las figuras.
- Las preguntasCómo evitar los espacios vacíos causados por TikZy¿Centrar la imagen Tikz de página completa en una página sin márgenes con xelatex?Parece preguntar exactamente lo que quiero, pero las respuestas no son aplicables a mi caso o no pude descubrir cómo aplicar las respuestas a mi caso.
Aquí hay un MWE(con una sola celda y sin bordes redondeados; resaltado agregado manualmente):
\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}
Alguna información adicional sobre el MWE:
Yo
adjustbox
solíaescalar la tabla para llenar toda la página. La imagen tikz resultante es demasiado grande, lo que habría empujado la imagen a la página siguiente después de una página vacía.Por eso seguíLa sugerencia de Gonzola Medina de ocultar las dimensiones de la imagen tikz. Esto eliminó con éxito las páginas en blanco, pero resultó en espacios en blanco no deseados en la parte superior de cada página.
Respuesta1
Si entiendo los requisitos correctamente, entonces creo que el problema es que el cuadro TeX que contiene tikzpicture
tiene una profundidad distinta de cero. A continuación, uso la local bounding box
clave para nombrar explícitamente la imagen (usar current bounding box
no funciona) y luego uso la baseline
clave para establecer la línea base de la tikzpicture
imagen en la parte inferior de modo que el cuadro que contiene tikzpicture
no tenga profundidad.
\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}
Un enfoque alternativo es establecer explícitamente el cuadro delimitador de la imagen en (0,0) (\textwidth, \textheight)
. El inconveniente es que debes asegurarte de que todas las partes de la imagen estén dentro del rectángulo descrito por estos puntos, de lo contrario sobresaldrán por los lados. Una forma de evitar esto podría ser escalar el sistema de coordenadas \textwidth
y, \textheight
como muestra este ejemplo bastante llamativo:
\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}