语境 :我想创建一个彩色框来制作好看的定理。使用该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 手册并发现我可以使用我已经制作的定理环境来得出之前的结果。我很感兴趣,因为它可能非常有用:
- 我将能够非常轻松地“切换”我想要使用的定理环境类型,只需为每个定理注释一行(而不是两行)
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}