将带框的标题附加到定理 tcolorenvironment

将带框的标题附加到定理 tcolorenvironment

语境 :我想创建一个彩色框来制作好看的定理。使用该tcolorbox包,我成功做到了这一点,使用以下代码:

\documentclass[12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[cyr]{aeguill}

\usepackage{tikz,lipsum,lmodern}
\usepackage[most]{tcolorbox}


\usepackage{amsmath, amssymb, amsthm}
\usepackage{mathrsfs}

\newtheoremstyle{enoncer} 
{\topsep} %1) Espace avant 
{\topsep} %2) Espace apres 
{} %3) Police utilisee par le style du thm 
{} %4) Indentation (vide = aucune, \parindent = indentation paragraphe) 
{\bfseries} %5) Police du titre du thm 
{ :} %6) Ponctuation apres le titre du thm 
{ } %7) Espace apres le titre du thm (\newline = linebreak)
{\thmname{#1}\thmnumber{ #2}\thmnote{ (\normalfont{#3})}} %8) Composants du titre du thm : \thmname = nom du thm, \thmnumber = numéro du thm, \thmnote = sous-titre du thm 

\theoremstyle{enoncer}
%\newtheorem{Thm}{Théorème}[chapter]
\newtcbtheorem[number within=chapter]{Thm}{Théorème}{breakable, enhanced, attach boxed title to top left={xshift=3mm,yshift=-3mm,yshifttext=-1mm}, fonttitle=\bfseries, coltitle=black!100,  colbacktitle=white!100, description delimiters parenthesis, description font=\mdseries, colback=white!100, colframe=red!70!black, separator sign none, terminator sign={\ :}}{Thm}

%\tcolorboxenvironment{Thm}{breakable, enhanced, attach boxed title to top left={xshift=3mm,yshift=-3mm,yshifttext=-1mm}, coltitle=black!100, colbacktitle=white!100, colback=white!100, colframe=red!70!black}

\begin{document}

\chapter{Chapter}
    \section{Introduction}

------------------------------------------------------------------------------------------

        \begin{Thm}{Pythagore}{}
            Text of my theorem
        \end{Thm}

------------------------------------------------------------------------------------------

\end{document}

结果正是我所期望的:

在此处输入图片描述

我的问题 :我用的是tcolorbox 手册并发现我可以使用我已经制作的定理环境来得出之前的结果。我很感兴趣,因为它可能非常有用:

  1. 我将能够非常轻松地“切换”我想要使用的定理环境类型,只需为每个定理注释一行(而不是两行)
  2. tcolorbox适应我在第一部分中定义的命令不会花费时间。更确切地说,我\begin{Thm}{}{}不必\begin{Thm}每次都要写定理(我经常这样做)。

无论如何,我最终得到了这个代码:

\documentclass[12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[cyr]{aeguill}

\usepackage{tikz,lipsum,lmodern}
\usepackage[most]{tcolorbox}


\usepackage{amsmath, amssymb, amsthm}
\usepackage{mathrsfs}

\newtheoremstyle{enoncer} 
{\topsep} %1) Espace avant 
{\topsep} %2) Espace apres 
{} %3) Police utilisee par le style du thm 
{} %4) Indentation (vide = aucune, \parindent = indentation paragraphe) 
{\bfseries} %5) Police du titre du thm 
{ :} %6) Ponctuation apres le titre du thm 
{ } %7) Espace apres le titre du thm (\newline = linebreak)
{\thmname{#1}\thmnumber{ #2}\thmnote{ (\normalfont{#3})}} %8) Composants du titre du thm : \thmname = nom du thm, \thmnumber = numéro du thm, \thmnote = sous-titre du thm 

\theoremstyle{enoncer}
\newtheorem{Thm}{Théorème}[chapter]
%\newtcbtheorem[number within=chapter]{Thm}{Théorème}{breakable, enhanced, attach boxed title to top left={xshift=3mm,yshift=-3mm,yshifttext=-1mm}, fonttitle=\bfseries, coltitle=black!100,  colbacktitle=white!100, description delimiters parenthesis, description font=\mdseries, colback=white!100, colframe=red!70!black, separator sign none, terminator sign={\ :}}{Thm}

\tcolorboxenvironment{Thm}{breakable, enhanced, attach boxed title to top left={xshift=3mm,yshift=-3mm,yshifttext=-1mm}, coltitle=black!100, colbacktitle=white!100, colback=white!100, colframe=red!70!black}

\begin{document}

\chapter{Chapter}
    \section{Introduction}

------------------------------------------------------------------------------------------

        \begin{Thm}[Pythagore]
            Text of my theorem
        \end{Thm}

------------------------------------------------------------------------------------------

\end{document}

但最后我只得到以下结果: 在此处输入图片描述

但我希望得到与第一张图片相同的结果。我不明白的是:为什么attach boxed title在这里不起作用,我该怎么做才能纠正这个问题?

已经有人发过同样的问题这里但没有令人满意的答案。

我很乐意接受任何形式的帮助!感谢您的时间!

答案1

您看不到附加的框式标题的原因是,当您用 包装Thm环境时\tcolorboxenvironment,生成的框没有title键(\tcolorboxenvironment是一个非常通用的包装器;tcolorbox在使用生成的环境时看不到您的可选参数;它仅由环境处理amsthm)。如果您还不相信,请title=foo在 的第二个参数末尾添加\tcolorboxenvironment

\tcolorboxenvironment{Thm}{breakable, enhanced, attach boxed title to top
  left={xshift=3mm,yshift=-3mm,yshifttext=-1mm}, coltitle=black!100,
  colbacktitle=white!100, colback=white!100, colframe=red!70!black, title=foo}

然后你会看到带框的“foo”标题。现在,关于你想做什么,我认为最好的方法是使用\newtcbthorem。为了保留现有的语法,你可以简单地包装由生成的环境\newtcbthorem,如下所示:

\documentclass{article}
\usepackage{xparse}
\usepackage[breakable, skins, theorems]{tcolorbox}

\newtcbtheorem{TcbThm}{Théorème}{breakable, enhanced,
  label separator=-, % safer char if you have ':' active in your French setup
  attach boxed title to top left={xshift=3mm, yshift=-3mm, yshifttext=-1mm},
  fonttitle=\bfseries, coltitle=black!100, colbacktitle=white!100,
  colback=white!100, colframe=red!70!black,
  separator sign none, description delimiters parenthesis,
  description font=\mdseries}{th}

\NewDocumentEnvironment{Thm}{ O{} O{} } % two optional arguments
  {\TcbThm{#1}{#2}}
  {\endTcbThm}

\begin{document}

\section{Introduction}

\begin{Thm}[Pythagore]
  Text of my theorem
\end{Thm}

\begin{Thm}
  Text of the \emph{Theorem With No Name}. Right, I have no name. If only I
  had a label like theorem~\ref{th-other-unnamed}...
\end{Thm}

\begin{Thm}[][other-unnamed]
  Text of the \emph{Labelled Theorem With No Name}. Hehe, I have a label, I
  can be referenced. :-)
\end{Thm}

\end{document}

在此处输入图片描述

答案2

我不确定这是否满足你的要求,但这是给你的一个建议:::

\documentclass{article}
\usepackage{lipsum}
\usepackage{amsmath,amssymb}
\usepackage[T1]{fontenc}
\usepackage[most]{tcolorbox}
\usepackage{xcolor}

\newtcolorbox[auto counter]{theoreme}[2][]{%
    colback=white,
    colframe=red!70!black,
    colbacktitle=white!90!red,
    coltitle=black,
    fonttitle=\bfseries, 
    title=Theorem~\thetcbcounter.\ #2,
    enhanced,
    attach boxed title to top left={yshift=-2mm, xshift=0.5cm},%
    #1% 
}




\begin{document}



\begin{theoreme}{A nice theorem}
Text for theorem
\end{theoreme}

\end{document}

在此处输入图片描述

相关内容