Рамка (fbox) вокруг всех министраниц/includegraphics/

Рамка (fbox) вокруг всех министраниц/includegraphics/

Для тонкой настройки фигур с большим количеством панелей и т. д., а также слайдов прожектора, иногда бывает полезно быстро увидеть контуры мини-страниц, графики и т. д. Этого можно добиться, вручную обернув соответствующие объекты в команды \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}

введите описание изображения здесь

Связанный контент