Для тонкой настройки фигур с большим количеством панелей и т. д., а также слайдов прожектора, иногда бывает полезно быстро увидеть контуры мини-страниц, графики и т. д. Этого можно добиться, вручную обернув соответствующие объекты в команды \fbox{}
или -- в прожекторе -- \frame{}
. Однако это утомительно.
Я думаю, что самым простым решением было быпереопределить мини-страницу, включить графику, подрисунок и т. д. в заголовке таким образом, чтобы они были размещены в \fbox{}
и, таким образом, были обрамлены по всему документу. Эти переопределения можно было бы просто раскомментировать, когда фреймы нужны. Конечно, все опции и т. д. должны по-прежнему поддерживаться. Как этого можно добиться?
Ниже приведен пример с двумя фигурами, сначала оригинал, затем с ручными fboxes. Цель состоит в том, чтобы с переопределенными командами первая фигура выглядела как вторая.
\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}
Редактировать:
Решение \includegraphics
следующее (спасибо @Skillmon за то, что указал мне на это)к этому):
\let\includegraphicsbak\includegraphics
\renewcommand*{\includegraphics}[2][]{\fbox{\includegraphicsbak[#1]{#2}}}
Как можно добиться того же самого для командных блоков (мини-страница, подрисунок)?
решение1
Решение, которое должно работать для minipage
. Это \begin{minipage}...\end{minipage}
(примерно) эквивалентно
\begingroup
\minipage
...
\endminipage
\endgroup
поэтому вам нужно сохранить \minipage
и \endminipage
с \let
тем же способом, что и для \includegraphics
. Чтобы создать среду, которая устанавливает minipage
в рамке, вам нужно поместить ее в коробку. Для этого lrbox
среда помещает содержимое в коробку и удаляет один уровень группировки. Ниже я сначала использую значение по умолчанию minipage
, а затем переопределяю его (обычно определения должны быть до \begin{document}
). Это также должно работать с необязательным аргументом.
\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}