\newcommand con tcolorbox, con 3 argumentos

\newcommand con tcolorbox, con 3 argumentos

Quiero usar muchos ejemplos que ya los había escrito en varios archivos que parecen

\begin{ejemplo}
  {\label{ex:0xx}}
  {Pregunta}
  {Respuesta}
\end{ejemplo}

con tcolorbox para obtener la figura a continuación, necesito un resultado como la figura a continuación.

Quiero

que hago con este código:

\documentclass{article}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,theorems}
\newtcbtheorem{TcbEje}{Ejemplo \thesection.}
    {breakable, enhanced,label separator=-,
    attach boxed title to top left={xshift=3mm, yshift=-3mm, yshifttext=-1mm},
    fonttitle=\bfseries, coltitle=black!100, colbacktitle=white!100,
    colback=white!100, colframe=orange!50,
    separator sign none, description delimiters parenthesis,
    description font=\mdseries}{th}
\NewDocumentEnvironment{ejemplo}{ O{} O{} } % two optional arguments
{\TcbEje{#1}{#2}}
{\endTcbEje}


\begin{document}
\section{Sección 1}
    \begin{ejemplo}[][J:cero]
        \emph{pregunta}
        \tcblower
        Respuesta
    \end{ejemplo}

Como se ve en el ejemplo \thesection.\ref{th-J:cero}
\end{document}

Pero no encuentro cómo pasar 3 argumentos a un archivo \newtcbtheorem. Tengo cientos de ejemplos solicitados ejemploy no es práctico editarlos uno por uno.

Respuesta1

Usaría buscar y reemplazar (o sed) para cambiar la fuente. Con sedo similar, podrías procesar muchos archivos con un solo comando, si fuera necesario. Si bien podría transformar la fuente por completo, podría simplemente eliminar los \label{s y }los s coincidentes, redefiniendo el entorno personalizado para tomar tres argumentos obligatorios.

Por ejemplo,

sed --in-place=backup '/\\begin{ejemplo}/,/\\end{ejemplo}/s/\\label{\([^}]*\)}/\1/' <list of files>

[Para comprobar si hay sorpresas, elimine --in-place=backuppara ver qué le hace esto a un archivo en salida estándar. Si se te escapa algo, cada archivo tendrá una copia de seguridad con el sufijo backup.]

Si esa no es una opción, puede eliminarlo \label{}en la definición del entorno, utilizando un 'procesador de argumentos' (documentado en usrguide.pdf).

Por ejemplo,

\documentclass{article}
% ateb: https://tex.stackexchange.com/a/705068/ addaswyd o gwestiwn JOM: https://tex.stackexchange.com/q/704992/
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,theorems}
\newtcbtheorem{TcbEje}{Ejemplo \thesection.}
    {breakable, enhanced,label separator=-,
    attach boxed title to top left={xshift=3mm, yshift=-3mm, yshifttext=-1mm},
    fonttitle=\bfseries, coltitle=black!100, colbacktitle=white!100,
    colback=white!100, colframe=orange!50,
    separator sign none, description delimiters parenthesis,
    description font=\mdseries}{th}
\NewDocumentEnvironment{tejemplo}{ O{} O{} } % two optional arguments
{\TcbEje{#1}{#2}}
{\endTcbEje}
\NewDocumentEnvironment{ejemplo}{ >{\delabelargument} m m m }
{%
  \begin{TcbEje}{}{#1}
    \emph{#2}
    \tcblower
    #3
}{%
  \end{TcbEje}%
}
\ExplSyntaxOn
\cs_new_protected_nopar:Npn \delabelargument #1
{
  \tl_set:Nn \ProcessedArgument { #1 }
  \regex_replace_once:nnN { ^\c{label}\B\(.*\)\E } {\1} \ProcessedArgument
}
\ExplSyntaxOff
\begin{document}
\section{Sección 1}
\begin{tejemplo}[][J:cero]
  \emph{pregunta}
  \tcblower
  Respuesta
\end{tejemplo}
\begin{ejemplo}
  {ex:0xx}
  {Pregunta}
  {Respuesta}
\end{ejemplo}

Como se ve en el ejemplo \thesection.\ref{th-J:cero} \ref{th-ex:0xx}
\end{document}

produce la misma salida (numeración de módulo) para los dos entornos

misma numeración del módulo de salida

información relacionada