
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
, 왜 귀찮게 합니까?