tcblower のさまざまなオプションを持つ条件付き \NewTColorBox

tcblower のさまざまなオプションを持つ条件付き \NewTColorBox

問題とその解決策について、さまざまな形式のセクションを印刷するためのを作成しましたNewDocumentEnvironment(タイトルにはオプションでコメントを追加できます)。

\documentclass[10pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{geometry}
 \geometry{
 a4paper,
 total={170mm,257mm},
 left=20mm,
 top=20mm,
 }
\usepackage{parskip}
\usepackage{tcolorbox}
\usepackage{lipsum}
\tcbuselibrary{skins,xparse,breakable}

\newcounter{problem}

\NewDocumentEnvironment{newprob}{o m +m}
{ % beginning code
    \refstepcounter{problem}
    \IfNoValueTF{#1}{ % start of true statement
    \begin{tcolorbox}[skin=bicolor,
    breakable,
    title=\textbf{Problem~\theproblem:},
    colframe=black!50!white,
    colback=black!20!white,
    colbacklower=black!5!white]
    {#2}    
    \tcblower\vskip-\baselineskip
    \tcbsubtitle[before skip=0pt]%
    {\textbf{Solution:}}
    {#3}
    \end{tcolorbox}
    } % end of true statement
    { % start of false statement
    \begin{tcolorbox}[skin=bicolor,
    breakable,
    title=\textbf{Problem~\theproblem:}~(#1),
    colframe=black!40!white,    
    colback=black!20!white,
    colbacklower=black!5!white]
    {#2}    
    \tcblower\vskip-\baselineskip
    \tcbsubtitle[before skip=0pt]%
    {\textbf{Solution:}}
    {#3}
    \end{tcolorbox} 
    } % end of false statement
}  %end code

\begin{document}
\begin{newprob}
    {
        This is one problem...
    }
    {
        ... and this is one answer.
    }
\end{newprob}

\begin{newprob}[special]
    {
        This is a speacial problem...
    }
    {
        ... and this is a special answer.
    }
\end{newprob}

\end{document}

出力は以下の通りです。

ここに画像の説明を入力してください

理想的には、 を使用して同じ結果を達成したいのです\NewTColorBoxが、 の上部と下部の本文、および条件文に異なる書式設定要件を組み込む方法が理解できませんでした。 についてより経験のある人が解決策を提供できるtcolorboxかどうか疑問に思っています。tcolorbox

答え1

必要なのは環境ではなくコマンドです。コードを複製する必要はありません。オプションの引数が指定されている場合は、適切な場所に条件付きでタイプセットするだけです。

\documentclass[10pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{geometry}
 \geometry{
 a4paper,
 total={170mm,257mm},
 left=20mm,
 top=20mm,
 }

\usepackage{tcolorbox}
\tcbuselibrary{skins,xparse,breakable}

\newcounter{problem}

\NewDocumentCommand{\newprob}{o +m +m}{%
  \refstepcounter{problem}
  \begin{tcolorbox}[
    skin=bicolor,
    breakable,
    title=\textbf{Problem~\theproblem:}\IfValueT{#1}{~(#1)},
    colframe=black!50!white,
    colback=black!20!white,
    colbacklower=black!5!white
  ]{#2}%
    \tcblower\vskip-\baselineskip
    \tcbsubtitle[before skip=0pt]%
    {\textbf{Solution:}}{#3}
  \end{tcolorbox}
}

\begin{document}

\newprob
    {
        This is one problem...
    }
    {
        ... and this is one answer.
    }

\newprob[special]
    {
        This is a speacial problem...
    }
    {
        ... and this is a special answer.
    }

\end{document}

おそらく でも可能かもしれません\NewTColorBoxが、なぜわざわざそうするのでしょうか?

ここに画像の説明を入力してください

関連情報