在使用 exsheets 包时,我在解决方案环境周围添加框架时遇到问题。下面是我的一些代码。我的问题是,如果我选择\begin{figure}
在盒装解决方案中添加环境,我会收到错误。我尝试了许多解决方法,包括将我的修改\begin{figure}\end{figure}
为\begin{center}\end{center}
。但是,我也有一些希望使用的情况\begin{subfigure}\end{subfigure}
。因此,我尝试修改这些子图以改为使用\begin{minipage}\end{minipage}
;然而,这会使布局过于复杂,而且标题没有按照我的意愿标记。我也尝试了给出的列表环境建议这里和这里。我在 mdframe 中使用图形环境时收到的错误是:
! LaTeX Error: Not in outer par mode.
...
! Undefined control sequence.
\@xfloat ...@fltovf \fi \global \setbox \@currbox
\color@vbox \normalcolor \...
我想在 mdframed 解决方案中包含图形(最终是子图形)。提前致谢,非常感谢任何/所有帮助。
平均能量损失
\documentclass[10pt,twoside,onecolumn]{book}
\usepackage[framemethod=TikZ]{mdframed} % Frames For exsheets
\usepackage{exsheets} % Creating Exercises and Solutions
\begin{document}
\chapter{Some Chapter}
\section{Some Section}
\subsection{Some Sub-Section}
\begin{question}
Here's a question
\end{question}
\mdframed
\begin{solution}[print=true]
Here's a solutions.
\begin{figure}
\includegraphics[width=\textwidth]{logo}
\caption{diagram}
\label{fig:solution}
\end{figure}
\end{solution}
\endmdframed
\end{document}
根据 @leandriis 的评论,我设法让一些东西工作起来。这并不理想,因为我似乎无法适当地为我的“子图像”添加标题;不过,这里有一个接近的解决方案。仍然希望有一个可靠的解决方案,可以保持子浮点和子标题的完整性。
\documentclass[10pt,twoside,onecolumn]{book}
\usepackage[framemethod=TikZ]{mdframed} % Frames For exsheets
\usepackage{exsheets} % Creating Exercises and Solutions
\usepackage{capt-of} % Add Captions to Images
\begin{document}
\chapter{Some Chapter}
\section{Some Section}
\subsection{Some Sub-Section}
\begin{question}
Here's a question
\end{question}
\mdframed
\begin{solution}[print=true]
Here's a solutions.
\begin{minipage}{\textwidth}
\begin{minipage}{0.45\textwidth}
\includegraphics[width=\textwidth]{logo}
\label{fig:solution-left}
\end{minipage}
\begin{minipage}{0.45\textwidth}
\includegraphics[width=\textwidth]{logo}
\label{fig:solution-right}
\end{minipage}
\end{minipage}
\captionof{figure}{one caption for all images, just not subs}
\end{solution}
\endmdframed
\end{document}
答案1
以下 MWE 包含两种不同的可能性,说明如何在框架解决方案块内获取具有可引用标题的子图。在第一个中,我将包与环境选项float
结合使用,子图在包内。在第二个示例中,我使用了以及和(也来自)包。两种方法的输出相似:H
figure
subfigure
subcaption
minipages
\captionsetup{figure}
\subcaptionbox
subcaption
\documentclass[10pt,twoside,onecolumn]{book}
\usepackage[framemethod=TikZ]{mdframed} % Frames For exsheets
\usepackage{exsheets} % Creating Exercises and Solutions
\usepackage{subcaption} % For subfigures with captions (subcaptionbox or subfigure)
\usepackage{float} % For the H option (disables floating of figure environment)
%\usepackage{changepage} % For the adjustbox environment
%\usepackage{showframe} % Shows the border of the textblock. Don't use in real document
%\renewcommand*\ShowFrameColor{\color{red}}
\begin{document}
\chapter{Some Chapter}
\section{Some Section}
\subsection{Some Sub-Section}
\begin{question}
Here's a question
\end{question}
%\begin{adjustwidth}{-10pt}{-10pt}
\mdframed
\begin{solution}[print=true]
Here's a solutions.
\begin{figure}[H]
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{example-image}
\caption{my left subfigure}
\label{fig:solution-left}
\end{subfigure}\hfill
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{example-image}
\caption{my right subfigure}
\label{fig:solution-right}
\end{subfigure}
\caption{one caption for all images, just not subs}
\end{figure}
\end{solution}
\endmdframed
%\end{adjustwidth}
\ref{fig:solution-left}
\ref{fig:solution-right}
\chapter{Some Chapter}
\section{Some Section}
\subsection{Some Sub-Section}
\begin{question}
Here's a question
\end{question}
%\begin{adjustwidth}{-10pt}{-10pt}
\mdframed
\begin{solution}[print=true]
Here's a solutions.
\noindent
\begin{minipage}{\textwidth}
\captionsetup{type=figure}
\subcaptionbox{my left subfigure\label{fig:solution-left2}}{\includegraphics[width=0.45\textwidth]{example-image}} \hfill
\subcaptionbox{my right subfigure\label{fig:solution-right2}}{\includegraphics[width=0.45\textwidth]{example-image}}
\caption{one caption for all images, just not subs}
\end{minipage}
\end{solution}
\endmdframed
%\end{adjustwidth}
\ref{fig:solution-left2}
\ref{fig:solution-right2}
\end{document}
关于当前注释掉的代码部分的旁注:从上面的 MWE 中可以看出(如果注释掉会更明显showframe
),mdframed 框的左边距与左边距对齐:
由于框架和框内文本开头之间有一小段水平空白(innerleftmargin
根据手册,默认值为 10 pt),单词“Soution”不再与单词“Exercise”对齐。如果您希望对齐这些单词,并希望框架在左(和右)边距中占据一点空间,您可以在包changepage
和相应的adjustwidth
环境中进行注释。这将允许 mdframed 框分别使用额外的 10 pt 左和右边距,从而实现以下对齐: