Adjustbox não reduz larguras de tabela e tikzpicture

Adjustbox não reduz larguras de tabela e tikzpicture

Estou redesenhando notas de aula para uma aula universitária, já que os alunos queriam ler as notas em seus tablets, leitores de e-books, etc. Então, escrevi um Makefile com diferentes alvos para diferentes tamanhos de página. O único problema que tenho são algumas figuras PGF/TikZ e algumas tabelas que são grandes demais para caber em um papel pequeno.

eu gostaria de usaradjustboxreduzir o tamanho das tabelas e figuras desenhadas em PGF/TikZ, caso sejam muito grandes para caber no tamanho de papel definido. No entanto, isso realmente não funciona.

\documentclass[10pt]{article}

% set page size with geometry
\usepackage[nohead,%
    nofoot,%
    nomarginpar,%
    paperwidth=106.68mm,%
    paperheight=142.24mm,%
    tmargin=2.5mm,%
    rmargin=2.5mm,%
    bmargin=2.5mm,%
    lmargin=2.5mm]{geometry}

\usepackage{float}

\usepackage{tikz}

\usepackage{adjustbox}

%define lengths for maximum figure and table width and height
\newlength{\maxtabfigwidth}
\newlength{\maxtabfigheight}

\setlength{\maxtabfigwidth}{\textwidth}
\setlength{\maxtabfigheight}{\textheight}

% decrease height a bit letting captions fit to one page
\addtolength{\maxtabfigheight}{-2.5em}

\pagestyle{empty}

\begin{document}

\section*{Example \#1}

The width of the table isn't reduced to \texttt{\textbackslash{}maxtabfigwidth}.

\begin{adjustbox}{center,%
    max width={\maxtabfigwidth},%
    max totalheight={\maxtabfigheight},%
    captionbelow={A wide table},%
    float={table}[h!]}
\begin{tabular}{p{6cm}p{6cm}}
\hline
wide & table \\\hline
\end{tabular}
\end{adjustbox}

\section*{Example \#2}

The width of the tikzpicture isn't reduced to \texttt{\textbackslash{}maxtabfigwidth}.

\begin{adjustbox}{center,%
    max width={\maxtabfigwidth},%
    max totalheight={\maxtabfigheight},%
    captionbelow={A wide tikzpicture},%
    float={figure}[H]}
\begin{tikzpicture}
\fill[black] (0cm, 0cm) -- (0cm, -3cm) -- (12cm, -3cm) -- (12cm, 0cm) -- cycle;
\end{tikzpicture}
\end{adjustbox}

\section*{Example \#3}

The height of the tikzpicture is reduced to\texttt{\textbackslash{}maxtabfigheight}, however it is not centered.

\begin{adjustbox}{center,%
    max width={\maxtabfigwidth},%
    max totalheight={\maxtabfigheight},%
    captionbelow={A tall tikzpicture},%
    float={figure}[H]}
\begin{tikzpicture}
\fill[black] (0cm, 0cm) -- (0cm, -15cm) -- (5cm, -15cm) -- (5cm, 0cm) -- cycle;
\end{tikzpicture}
\end{adjustbox}

\end{document}

eu

Então a questão é o que estou perdendo ou fazendo de errado? Existe alguma outra abordagem para reduzir tabelas e figuras se elas não couberem em um papel pequeno?

Responder1

Existem dois problemas. A primeira é que você precisa calcular os valores de \maxtabfigwidthe \maxtabfigheightposteriormente, porque geometryseus cálculos no início do documento.

O segundo problema é que a ordem das opções adjustboxé significativa. Em particular centerdeve ir atrás max widthe max totalheight.

\documentclass[10pt]{article}

% set page size with geometry
\usepackage[nohead,%
    nofoot,%
    nomarginpar,%
    paperwidth=106.68mm,%
    paperheight=142.24mm,%
    tmargin=2.5mm,%
    rmargin=2.5mm,%
    bmargin=2.5mm,%
    lmargin=2.5mm]{geometry}

\usepackage{float}

\usepackage{tikz}

\usepackage{adjustbox}

%define lengths for maximum figure and table width and height
\newlength{\maxtabfigwidth}
\newlength{\maxtabfigheight}

\AtBeginDocument{
  \setlength{\maxtabfigwidth}{\textwidth}
  \setlength{\maxtabfigheight}{\textheight}
  % decrease height a bit letting captions fit to one page
  \addtolength{\maxtabfigheight}{-2.5em}
}


\pagestyle{empty}

\begin{document}

\section*{Example \#1}

The width of the table isn't reduced to \texttt{\textbackslash{}maxtabfigwidth}.

\begin{adjustbox}{
  max width=\maxtabfigwidth,
  max totalheight=\maxtabfigheight,
  center,
  captionbelow={A wide table},
  float={table}[h!],
}
\begin{tabular}{p{6cm}p{6cm}}
\hline
wide & table \\\hline
\end{tabular}
\end{adjustbox}

\section*{Example \#2}

The width of the tikzpicture isn't reduced to \texttt{\textbackslash{}maxtabfigwidth}.

\begin{adjustbox}{
  max width=\maxtabfigwidth,
  max totalheight=\maxtabfigheight,
  center,
  captionbelow={A wide tikzpicture},%
  float={figure}[H],
}
\begin{tikzpicture}
\fill[black] (0cm, 0cm) -- (0cm, -3cm) -- (12cm, -3cm) -- (12cm, 0cm) -- cycle;
\end{tikzpicture}
\end{adjustbox}

\section*{Example \#3}

The height of the tikzpicture is reduced to\texttt{\textbackslash{}maxtabfigheight}, however 
it is not centered.

\begin{adjustbox}{
  max width=\maxtabfigwidth,
  max totalheight=\maxtabfigheight,
  center,
  captionbelow={A tall tikzpicture},
  float={figure}[H],
}
\begin{tikzpicture}
\fill[black] (0cm, 0cm) -- (0cm, -15cm) -- (5cm, -15cm) -- (5cm, 0cm) -- cycle;
\end{tikzpicture}
\end{adjustbox}

\end{document}

insira a descrição da imagem aqui

informação relacionada