exsheets mdframed 解决方案与图

exsheets mdframed 解决方案与图

在使用 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结合使用,子图在包内。在第二个示例中,我使用了以及和(也来自)包。两种方法的输出相似:Hfiguresubfiguresubcaptionminipages\captionsetup{figure}\subcaptionboxsubcaption

在此处输入图片描述

\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 左和右边距,从而实现以下对齐:

在此处输入图片描述

相关内容