将 tcolorbox 限制为页面宽度

将 tcolorbox 限制为页面宽度

在另一个主题中我请求一些帮助来建立一个自己的solution环境以供学生作业表使用。

我们在那里检查了一个布尔值(如果它是解决方案表或仅仅是学生的作业表),如果布尔值返回true,则打印环境内的答案solution。(代码在 MWE 内)

由于问题是在enumerate环境中设置的,因此问题和答案都会缩进。我现在遇到的小问题是解决方案容器 (a tcolorbox) 比 更宽linewidth。如果我第二次缩进,它会更大……

我怎样才能将这个环境限制在真实环境中\linewidth

以下是 MWE:

\documentclass[12pt]{article}

% %%%
% Packages
% %%%
\usepackage[utf8]{inputenc}
\usepackage[showframe]{geometry}
\geometry{verbose, a4paper, tmargin=3cm, bmargin=3cm, lmargin=2.5cm, rmargin=2.5cm} 
\usepackage{lipsum, enumerate, ifthen, tcolorbox}
\tcbuselibrary{breakable}



% %%%
% Variable Settings
% %%%%
\newboolean{solution}
\setboolean{solution}{true}



% %%%
% Environments / Commandy
% %%%%
\newcommand{\Problem}[1]{
    {
        \vspace*{0.5cm}
        \textsf{\textbf{Problem #1}}
        \vspace*{0.2cm}
    }
}

\newenvironment{solution}
{
    \ifthenelse{\boolean{solution}}{
        \tcolorbox[breakable, width=\textwidth, colframe=red, colback=white]
    }{}
}
{
    \ifthenelse{\boolean{solution}}{
        \endtcolorbox
        \vspace*{-\baselineskip}
    }{}
}



% %%%
% Document
% %%%%
\begin{document}

    \begin{center}
        \LARGE \sf \textbf{MWE}
    \end{center}
    \vspace*{0.2cm}

    \Problem{1: Foo}
    \begin{enumerate}
        \item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst.
            \begin{solution}
                \lipsum[4-5]
            \end{solution}

            \begin{enumerate}
                \item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst.
                    \begin{solution}
                        \lipsum[4-4]
                    \end{solution}
            \end{enumerate}
    \end{enumerate}

\end{document}

例子

我使用-packageshowframe的属性geometry来显示\linewidth我的环境的真实位置。很明显,重叠与枚举的缩进完全相同。

非常感谢您的帮助。

答案1

在您的问题中您已经讨论过\linewidth- 只需使用它来代替\textwidth

\documentclass[12pt]{article}

% %%%
% Packages
% %%%
\usepackage[utf8]{inputenc}
\usepackage[showframe]{geometry}
\geometry{verbose, a4paper, tmargin=3cm, bmargin=3cm, lmargin=2.5cm, rmargin=2.5cm} 
\usepackage{lipsum, enumerate, ifthen, tcolorbox}
\tcbuselibrary{breakable}



% %%%
% Variable Settings
% %%%%
\newboolean{solution}
\setboolean{solution}{true}



% %%%
% Environments / Commandy
% %%%%
\newcommand{\Problem}[1]{
    {
        \vspace*{0.5cm}
        \textsf{\textbf{Problem #1}}
        \vspace*{0.2cm}
    }
}

\newenvironment{solution}
{
    \ifthenelse{\boolean{solution}}{
        \tcolorbox[breakable, width=\linewidth, colframe=red, colback=white]
    }{}
}
{
    \ifthenelse{\boolean{solution}}{
        \endtcolorbox
        \vspace*{-\baselineskip}
    }{}
}



% %%%
% Document
% %%%%
\begin{document}

    \begin{center}
        \LARGE \sf \textbf{MWE}
    \end{center}
    \vspace*{0.2cm}

    \Problem{1: Foo}
    \begin{enumerate}
        \item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst.
            \begin{solution}
                \lipsum[4-5]
            \end{solution}

            \begin{enumerate}
                \item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst.
                    \begin{solution}
                        \lipsum[4-4]
                    \end{solution}
            \end{enumerate}
    \end{enumerate}

\end{document}

在此处输入图片描述

相关内容