Enquadrar (fbox) em torno de todas as minipáginas/incluir gráficos/

Enquadrar (fbox) em torno de todas as minipáginas/incluir gráficos/

Para ajustar figuras com muitos painéis, etc., ou também slides de projetor, às vezes seria útil ver rapidamente os contornos de minipáginas, gráficos, \fbox{}etc. -- \frame{}comandos. No entanto, isso é tedioso.

Imagino que a solução mais simples seriaredefinir minipágina, incluir gráficos, subfigura, etc. no cabeçalho de forma que sejam colocados em um \fbox{}e, portanto, enquadrados em todo o documento. Essas redefinições poderiam simplesmente ser descomentadas sempre que os quadros fossem desejados. Claro, todas as opções etc. ainda devem ser suportadas. Como isso pode ser alcançado?

A seguir está um exemplo com duas figuras, primeiro a original, depois com fboxes manuais. O objetivo é que, com comandos redefinidos, a primeira figura se pareça com a segunda.

\documentclass{article}
\usepackage[showframe]{geometry}

\usepackage{graphicx}
\usepackage{subcaption}

% Remove padding from fbox
\setlength{\fboxsep}{0pt}

\newlength{\h}

\begin{document}

\setlength{\h}{0.5\linewidth}

\begin{figure}\centering
%
\begin{subfigure}[t]{0.02\linewidth}
\rotatebox{90}{\begin{minipage}{\h}\centering\textbf{first row}\end{minipage}}\\
\rotatebox{90}{\begin{minipage}{\h}\centering\textbf{first row}\end{minipage}}
\end{subfigure}
%
\begin{subfigure}[t]{0.45\linewidth}\centering
\includegraphics[width=2in]{example-image}\\
\includegraphics[width=2in]{example-image}
\caption*{\textbf{first column}}
\end{subfigure}
\hfill
%
\begin{subfigure}[t]{0.45\linewidth}\centering
\includegraphics[width=2in]{example-image}\\
\includegraphics[width=2in]{example-image}
\caption*{\textbf{second column}}
\end{subfigure}
%
\caption{\ldots}
\end{figure}

\begin{figure}\centering
%
\fbox{
\begin{subfigure}[t]{0.02\linewidth}
\rotatebox{90}{\fbox{\begin{minipage}{\h}\centering\textbf{first row}\end{minipage}}}\\
\rotatebox{90}{\fbox{\begin{minipage}{\h}\centering\textbf{second row}\end{minipage}}}
\end{subfigure}
}
%
\fbox{
\begin{subfigure}[t]{0.45\linewidth}\centering
\fbox{\includegraphics[height=\h]{example-image}}\\
\fbox{\includegraphics[height=\h]{example-image}}
\caption*{\textbf{first column}}
\end{subfigure}
}
\hfill
%
\fbox{
\begin{subfigure}[t]{0.45\linewidth}\centering
\fbox{\includegraphics[height=\h]{example-image}}\\
\fbox{\includegraphics[height=\h]{example-image}}
\caption*{\textbf{second column}}
\end{subfigure}
}
%
\caption{\ldots}
\end{figure}

\end{document}

Editar:

A solução \includegraphicsé a seguinte (obrigado @Skillmon por me apontarpara isso):

\let\includegraphicsbak\includegraphics
\renewcommand*{\includegraphics}[2][]{\fbox{\includegraphicsbak[#1]{#2}}}

Como o mesmo pode ser alcançado para blocos de comando (minipágina, subfigura)?

Responder1

Uma solução que deve funcionar para minipage. O \begin{minipage}...\end{minipage}é (aproximadamente) equivalente a

\begingroup
\minipage
...
\endminipage
\endgroup

então você precisa salvar ambos \minipagee \endminipagewith \letda mesma maneira que for \includegraphics. Para fazer um ambiente que emoldure minipagevocê precisa colocá-lo em uma caixa. Para isso o lrboxambiente coloca o conteúdo em uma caixa e retira um nível de agrupamento. Abaixo eu primeiro utilizo o padrão minipagee depois o redefino (normalmente as definições devem ser anteriores \begin{document}). Também deve funcionar com o argumento opcional.

\documentclass{article}
\usepackage{lipsum}
\begin{document}

\begin{minipage}[]{0.8\linewidth}
  \lipsum[1]
\end{minipage}

\let\minipagebak\minipage
\let\endminipagebak\endminipage
\newsavebox\TestBox
\renewenvironment{minipage}[2][]
{\begin{lrbox}{\TestBox}\begin{minipagebak}[#1]{#2}}
{\end{minipagebak}\end{lrbox}\fbox{\usebox{\TestBox}}}

\begin{minipage}[t]{0.8\linewidth}
  \lipsum[1]
\end{minipage}

\end{document}

insira a descrição da imagem aqui

informação relacionada