3개의 인수가 있는 tcolorbox의 \new명령

3개의 인수가 있는 tcolorbox의 \new명령

나는 이미 다음과 같은 여러 파일에 작성한 많은 예제를 사용하고 싶습니다.

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

아래 그림을 얻으려면 tcolorbox를 사용하여 아래 그림과 같은 결과가 필요합니다.

나는 원해요

내가 이 코드로 만든 것:

\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}

하지만 3개의 인수를 \newtcbtheorem. 수백 개의 예가 필요하지만 ejemplo하나씩 편집하는 것은 비현실적입니다.

답변1

sed소스를 변경하려면 찾기 및 바꾸기(또는 )를 사용합니다 . 또는 이와 유사한 기능을 사용하면 sed필요한 경우 단일 명령으로 많은 파일을 처리할 수 있습니다. 소스를 완전히 변환할 수도 있지만 \label{s 및 일치하는 }s를 제거하고 세 가지 필수 인수를 사용하도록 사용자 정의 환경을 재정의할 수도 있습니다.

예를 들어,

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

[놀랐는지 확인하려면 제거하여 --in-place=backup이것이 표준 출력의 파일에 어떤 영향을 미치는지 확인하십시오. 누락된 항목이 있는 경우 각 파일에는 접미사가 붙은 백업 복사본이 있습니다 backup.]

이것이 옵션이 아닌 경우 \label{}'인수 프로세서'( 에 설명되어 있음)를 사용하여 환경 정의에서 를 제거할 수 있습니다 usrguide.pdf.

예를 들어,

\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}

두 환경에 대해 동일한 출력(모듈로 번호 지정)을 생성합니다.

동일한 출력 모듈로 넘버링

관련 정보