Solución:
Una ligera variación de la auto respuesta del OP, desplazando el segundo argumento opcional al final de la lista de argumentos, es decir, se convertirá en el tercero. argumento y transformando el o
– tipo del primer argumento para O
.
Una sintaxis de foo[A][B]...
es de mal diseño y difícil de manejar por TeX/LaTeX
, ya que no puede decidir qué
foo[A]
supuestamente es. Es A
el primer argumento opcional o el segundo opcional? Esto no está claro.
los o
– especificador de tipo de xparse
da una forma de decidir si la 1ª o la 2ª opción. El argumento se omite, pero lamentablemente no permite argumentos predeterminados.
foo[A]...[B]
sin embargo es claramente reconocible y TeX
puede distinguir entre #1
(ser A
aquí y #3
(ser B
), entonces foo[A]…and
foo …[B]está bien definido
documentclassarticle
usepackagelipsum
usepackagexfrac
usepackage[most]tcolorbox
NewDocumentCommandcurrentschoolyear+Otheyear%
ifnum#1=theyear%
ifnummonth<9%
sfracthenumexpr#1-1#1% #1=2018 --> 2017/2018
else
sfrac#1thenumexpr#1+1% #1=2018 --> 2018/2019
fi
else
sfrac#1thenumexpr#1+1%
fi
% For checking reasons only...
%year=2017
%month=6
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% boîte resumé
defcouleurresumered%
%% style du titre « résumé du cours »
%tcbsettitreresume/.style=
% boxed title style=
% colframe=#2!50,%
% colback=#2!10,%
% coltext=blue,%
% leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt
%
%
%% style des soustitres des résumés
%tcbsetsoustitre/.style=
% subtitle style=%
% colback=#2!7,%
% colframe=#2!50,%
% boxsep=1mm,
% fontupper=sffamilybfserieslargeselectfontcolor#2!63!black
%
% boîte créant la boîte résumé
NewTColorBox[auto counter]resume+Otheyear+m+Ored%
minipage boxed title*=-106mm,
attach boxed title to top center=yshift=-3mm,xshift=-linewidth/5,
enhanced,
nobeforeafter,
lower separated=false,
% IfValueTF=#1%
before upper=textcolor#3!63!blackcurrentschoolyear[#1] hfill#2hfillthetcbcounter/refnombre-de-resume,
% %
% before upper=textcolor#2!63!blackcurrentschoolyear hfill#2hfillthetcbcounter/refnombre-de-resume,
% ,
colframe=#3!50,%
colback=white,%
coltitle=#3!63!black,%
leftrule=3mm,rightrule=3mm,
toprule=2pt,bottomrule=2pt,
left=3pt,right=0pt,top=3mm,
fonttitle=sffamilybfserieslarge,
% titreresume,
boxed title style=
colframe=#3!50,%
colback=#3!10,%
coltext=blue,%
leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt,
% soustitre,
subtitle style=%
colback=#3!7,%
colframe=#3!50,%
boxsep=1mm,
fontupper=sffamilybfserieslargeselectfontcolor#3!63!black,
title=normalsize Résumé
usepackageatveryend
makeatletter
AfterLastShipout%
immediatewrite@auxout
stringnewlabelnombre-de-resume[email protected]@resume%
makeatother
begindocument
% No optional arguments -> defaults to current year and red
beginresumechapitre 1
tcbsubtitleDéfinition
lipsum[1]
endresume
% both optional arguments -> 2016/2017 and blue
beginresume[2016]chapitre 1[blue]
tcbsubtitleDéfinition
lipsum[1]
endresume
newpage
% Only the first optional argument -> 2020 and red
beginresume[2020]chapitre 1
tcbsubtitlePropriétés
lipsum[2]
endresume
% Only the second optional argument -> current year and green
beginresumechapitre 1[green]
tcbsubtitlePropriétés
lipsum[2]
endresume
%showtcbcounter
enddocument
Acabo de encontrar, solo ponga cada argumento opcional entre corchetes.
beginresume[2018][blue]chapitre 1
Todavía no he logrado asegurarme de poder llamar a este cuadro indicando solo el color (sin dar el año escolar).
Código:
documentclassarticle
usepackagelipsum
usepackagexfrac
usepackage[most]tcolorbox
NewDocumentCommandcurrentschoolyear+o%
IfValueTF#1%
sfrac#1thenumexpr#1+1
%
ifnummonth<9%
sfracthenumexpryear-1theyear%
else
sfractheyearthenumexpryear+1%
fi
%
%month=7
%day=31
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% boîte resumé
defcouleurresumered%
%% style du titre « résumé du cours »
%tcbsettitreresume/.style=
% boxed title style=
% colframe=#2!50,%
% colback=#2!10,%
% coltext=blue,%
% leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt
%
%
%% style des soustitres des résumés
%tcbsetsoustitre/.style=
% subtitle style=%
% colback=#2!7,%
% colframe=#2!50,%
% boxsep=1mm,
% fontupper=sffamilybfserieslargeselectfontcolor#2!63!black
%
% boîte créant la boîte résumé
NewTColorBox[auto counter]resume+o+Ored+m%
minipage boxed title*=-106mm,
attach boxed title to top center=yshift=-3mm,xshift=-linewidth/5,
enhanced,
nobeforeafter,
lower separated=false,
IfValueTF=#1%
before upper=textcolor#2!63!blackcurrentschoolyear[#1] hfill#3hfillthetcbcounter/refnombre-de-resume,
%
before upper=textcolor#2!63!blackcurrentschoolyear hfill#3hfillthetcbcounter/refnombre-de-resume,
,
colframe=#2!50,%
colback=white,%
coltitle=#2!63!black,%
leftrule=3mm,rightrule=3mm,
toprule=2pt,bottomrule=2pt,
left=3pt,right=0pt,top=3mm,
fonttitle=sffamilybfserieslarge,
% titreresume,
boxed title style=
colframe=#2!50,%
colback=#2!10,%
coltext=blue,%
leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt,
% soustitre,
subtitle style=%
colback=#2!7,%
colframe=#2!50,%
boxsep=1mm,
fontupper=sffamilybfserieslargeselectfontcolor#2!63!black,
title=normalsize Résumé
usepackageatveryend
makeatletter
AfterLastShipout%
immediatewrite@auxout
stringnewlabelnombre-de-resume[email protected]@resume%
makeatother
begindocument
beginresume[2017]chapitre 1
tcbsubtitleDéfinition
lipsum[1]
endresume
newpage
beginresume[2018][blue]chapitre 1
tcbsubtitlePropriétés
lipsum[2]
endresume
%showtcbcounter
enddocument
¿Qué pasa con el uso de delimitadores diferentes para los dos parámetros opcionales? Así, por ejemplo:
documentclassarticle
usepackage[T1]fontenc
usepackage[utf8]inputenc
usepackagexparse
NewDocumentCommandTestD()redO2018+m%
Color: #1; Year: #2; mandatory: #3par
begindocument
Testonly mandatory
Test(blue)with color
Test[2020]with year
Test(green)[1999]with everything
enddocument
que funciona y, en mi opinión, es incluso más fácil de recordar.
Puede combinarlo con la respuesta de Christian Hupfer para tener el año escolar actual (cambiando el O
aquí a un o
).
También puede agregar un tercer argumento opcional con, por ejemplo, corchetes angulares que estarán separados por comas string para agregar a la tcolorbox
opciones.
Aplicado a su nsMWE:
documentclassarticle
usepackage[T1]fontenc
usepackage[utf8]inputenc
usepackagelipsum
usepackagexfrac
usepackage[most]tcolorbox
NewDocumentCommandcurrentschoolyear+Otheyear%
ifnummonth<9%
sfracthenumexpr#1-1#1% #1=2018 --> 2017/2018
else
sfrac#1thenumexpr#1+1% #1=2018 --> 2018/2019
fi
NewTColorBox[auto counter]resumeD<>D()redOtheyear+m%
minipage boxed title*=-106mm,
attach boxed title to top center=yshift=-3mm,xshift=-linewidth/5,
enhanced,
nobeforeafter,
lower separated=false,
before upper=textcolor#2!63!blackcurrentschoolyear[#3] hfill#4hfillthetcbcounter/refnombre-de-resume,
colframe=#2!50,%
colback=white,%
coltitle=#2!63!black,%
leftrule=3mm,rightrule=3mm,
toprule=2pt,bottomrule=2pt,
left=3pt,right=0pt,top=3mm,
fonttitle=sffamilybfserieslarge,
% titreresume,
boxed title style=
colframe=#2!50,%
colback=#2!10,%
coltext=blue,%
leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt,
% soustitre,
subtitle style=%
colback=#2!7,%
colframe=#2!50,%
boxsep=1mm,
fontupper=sffamilybfserieslargeselectfontcolor#2!63!black,
title=normalsize Résumé,
#1
usepackageatveryend
makeatletter
AfterLastShipout%
immediatewrite@auxout
stringnewlabelnombre-de-resume[email protected]@resume%
makeatother
begindocument
% No optional arguments -> defaults to current year and red
beginresumechapitre 1
tcbsubtitleDéfinition
lipsum[1]
endresume
% both optional arguments -> 2021 and blue
beginresume(blue)[2021]chapitre 1
tcbsubtitleDéfinition
lipsum[1]
endresume
newpage
% Only the first optional argument -> 2020 and red
beginresume[2020]chapitre 1
tcbsubtitlePropriétés
lipsum[2]
endresume
% Only the second optional argument -> current year and green
beginresume(green)chapitre 1
tcbsubtitlePropriétés
lipsum[2]
endresume
% New optional argument - add whatever to the options to the tcolorbox
beginresume(green)chapitre 1
tcbsubtitlePropriétés
lipsum[2]
endresume
%showtcbcounter
enddocument
Tienes la opción de añadir valor a nuestra información cooperando tu veteranía en las notas.