我在使用 latex 时遇到了问题:我有一个代码片段,它直接向我打开定理环境,就像我发布的代码一样。当我在“çç1”(这是我编写的符号,用于帮助您找到代码中应该看到的位置,它对代码没有帮助,只是帮助您看到应该查看的位置)并直接传递到“çç2”时,编译开始给我带来许多有关扩展的问题。显然,我被迫给我的定理起个名字,然后必须在“çç1”中写一些东西(如果您将其留空,如果您不在方括号之间写任何东西,代码就不会运行)。
我想要一个代码,当我将 后的方括号留空时\begin{Theorem}[]
,应该出现的代码就是简单的Theorem 1
(或定理的任何数字)。
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, mathtools, amsthm, amssymb}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{stmaryrd}
\newcommand\contra{\scalebox{1.1}{$\lightning$}}
% correct
\definecolor{correct}{HTML}{009900}
\newcommand\correct[2]{\ensuremath{\:}{\color{red}{#1}}\ensuremath{\to }{\color{correct}{#2}}\ensuremath{\:}}
\newcommand\green[1]{{\color{correct}{#1}}}
% theorems
\makeatother
\usepackage{thmtools}
\usepackage[framemethod=TikZ]{mdframed}
\mdfsetup{skipabove=1em,skipbelow=0em}
\theoremstyle{definition}
\declaretheoremstyle[
headfont=\bfseries\sffamily\color{RawSienna!70!black}, bodyfont=\normalfont,
mdframed={
linewidth=2pt,
rightline=false, topline=false, bottomline=false,
linecolor=RawSienna, backgroundcolor=RawSienna!5,
}
]{thmredbox}
\declaretheorem[style=thmredbox, name=Theorem]{Teorema}
\begin{document}
\tableofcontents
\chapter{ciao}
ciao
\begin{Teorema}[çç1]\label{teo: ciao}
çç2
\end{Teorema}
\end{document}
答案1
尝试这个补丁:
\documentclass{article}
\usepackage{thmtools}
\usepackage{hyperref}
\usepackage{regexpatch}
\makeatletter
\xpatchcmd\thmt@parsetheoremargs
{\def\thmt@optarg{##1}}
{\def\thmt@optarg{##1}\let\thmt@shortoptarg=\thmt@optarg}
{}{\PatchFailed}
\makeatother
\declaretheorem[name=Theorem]{Teorema}
\begin{document}
\begin{Teorema}
body
\end{Teorema}
\begin{Teorema}[]
body
\end{Teorema}
\begin{Teorema}[title]
body
\end{Teorema}
\end{document}