Saltar al contenido

¿Cómo tener dos parámetros opcionales en un tcolorbox?

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

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

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

boite rouge por defecto

boíster azul

¿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.

ingrese la descripción de la imagen aquí

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

Página 1página 2

Tienes la opción de añadir valor a nuestra información cooperando tu veteranía en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *