我的序言如下:
\newtheorem{teo}{Theorem}[subsection]
\theoremstyle{definition}
\newtheorem{defi}{Definition}[subsection]
默认设置如下
\begin{defi}[Some defi]
\end{defi}
\begin{teo}[Some theorem]
\end{teo}
在括号内输出两个标题 [Some xxx]。我只想将定义标题更改为粗体并删除其括号。我尝试了以下方法:
\makeatletter
\def\thmhead@plain#1#2#3{%
\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
\thmnote{ {\the\thm@notefont\textbf{#3}}}}
\let\thmhead\thmhead@plain
\makeatother
正确将标题字体更改为粗体并删除括号,但在所有情况下都是如此。我也试过,
\makeatletter
\def\th@definition{%
\thm@notefont{}% same as heading font
\normalfont % body font
}
\makeatother
保持定理标题不变,将定义标题字体改为粗体,但保留括号。
最后我尝试了,
\makeatletter
\def\thmhead@definition#1#2#3{%
\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
\thmnote{ {\the\thm@notefont\textbf{#3}}}}
\let\thmhead\thmhead@plain
\makeatother
这根本不起作用。有什么想法可以继续吗?
答案1
以下代码用于\pdfstrcmp
判断\thmhead
是definition
还是theorem
。这样,您可以根据环境格式化内容以满足您的需求:
\documentclass{article}
\usepackage{amsthm}
\newtheorem{teo}{Theorem}[subsection]
\theoremstyle{definition}
\newtheorem{defi}{Definition}[subsection]
\makeatletter
\def\thmhead@plain#1#2#3{%
\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
\ifnum\pdfstrcmp{#1}{Definition}=0
\thmnote{ {\the\thm@notefont\textbf{#3}}}%
\else
~\thmnote{{\the\thm@notefont (#3)}}%
\fi
}
\let\thmhead\thmhead@plain
\makeatother
\begin{document}
\section{A section}
\subsection{A subsection}
\begin{defi}[Some defi]
\end{defi}
\begin{teo}[Some theorem]
\end{teo}
\end{document}