
Ich möchte etwas per setzen tcolorbox
. Standardmäßig sollte das Feld keine Hintergrundfarbe haben (mit der Option blank
). Dann wird in Exp 2 ein Feld mit der Hintergrundfarbe Rot benötigt, aber die Option colback=red
funktioniert nicht. Die letztere Option hat nicht Vorrang vor der ersteren?
Warum? Und wie funktioniert es?
\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}
\newcommand\test[2][]{
\begin{tcolorbox}[blank,#1]
#2
\end{tcolorbox}
}
\begin{document}
% Exp 1.
\test{no backgroud color as expected}
% Exp 2.
\test[colback=red]{backgroud color of red is wanted, but not work}
\end{document}
Antwort1
Der colback
Schlüssel definiert nur eine Farbe, aber wenn blank
Sie die Anweisung geben, keinen Hintergrund zu zeichnen, wird die Farbe nicht verwendet. Stattdessen müssen Sie Folgendes ändern interior style
:
\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}
\newcommand\test[2][]{
\begin{tcolorbox}[blank,#1]
#2
\end{tcolorbox}
}
\begin{document}
% Exp 1.
\test{no background color as expected}
% Exp 2.
\test[interior style={fill=red}]{background color of red is wanted}
\end{document}
Antwort2
Im Dokument von tbcolorbox
Mit optionalem Rohling funktioniert es
\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}
\ExplSyntaxOn
\NewDocumentCommand \test { O{blank} +m}
{
\begin{tcolorbox}[#1]
#2
\end{tcolorbox}
}
\ExplSyntaxOff
\begin{document}
% Exp 1.
\test{no backgroud color as expected}
% Exp 2.
\test[colback=red]{backgroud color of red is wanted, but not work}
\end{document}
Antwort3
Ich denke, es ist besser, zwei verschiedene Felder zu definieren, eins blank
und eins nicht blank
, aber wenn Sie auf test
Befehl bestehen, können Sie zwei verschiedene Stile definieren und in jedem Fall den bequemeren verwenden.
\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}
\tcbset{
blankbox/.style={
blank, #1},
redbox/.style={
colback=red!80, #1}
}
\newcommand\test[2][]{
\begin{tcolorbox}[#1]
#2
\end{tcolorbox}
}
\begin{document}
% Exp 1.
\test[blankbox]{no backgroud color as expected}
% Exp 2.
\test[redbox={colframe=blue}]{backgroud color of red is wanted, but not work}
\end{document}