我想显示语句“Def 1.1.1-”而不是“Def 1.1.1”。我使用Texlive 2017和以下代码:
\documentclass{report}
\usepackage{amsthm}
%\usepackage{hyperref}
\makeatletter
\def\@thm#1#2#3{%
\ifhmode\unskip\unskip\par\fi
\normalfont
\trivlist
\let\thmheadnl\relax
\let\thm@swap\@gobble
\thm@notefont{\fontseries\mddefault\upshape}%
\thm@headpunct{-}
\thm@headsep 5\p@ plus\p@ minus\p@\relax
\thm@space@setup
#1% style overrides
\@topsep \thm@preskip
\@topsepadd \thm@postskip
\def\@tempa{#2}\ifx\@empty\@tempa
\def\@tempa{\@oparg{\@begintheorem{#3}{}}[]}%
\else
\refstepcounter{#2}%
\def\@tempa{\@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]}%
\fi
\@tempa
}
\makeatother
\theoremstyle{definition}
\newtheorem{definition}{ِDef}[section]
\begin{document}
\chapter{TEST}
\section{Introduction}
\begin{definition}
content...
\end{definition}
\end{document}
但是当我使用 hyperref 包时,输出是“Def 1.1.1”。你能帮助我吗?
答案1
我建议使用一种特殊的定理样式,而不是明确地改变\@thm
所有定理定义的基本宏,这意味着任何定理都将具有相同的设置,除非\theoremstyle
后来明确改变。
随意改变间距,给出的3pt
值只是amsthm
手册中的通常值。
-
然而,我发现定理数字末尾的尾随很奇怪,但这只是我的看法。
\documentclass{report}
\usepackage{amsthm}
\usepackage{hyperref}
\newtheoremstyle{dashed}{3pt}{3pt}{\fontseries\mddefault\upshape}{}{\bfseries\itshape}{-}{3pt}{}
\theoremstyle{dashed}
\newtheorem{definition}{ِDef}[section]
\begin{document}
\chapter{TEST}
\section{Introduction}
\begin{definition}
content...
\end{definition}
\end{document}
答案2
这是为该软件包的用户提供的解决方案ntheorem
。
\documentclass{report}
\usepackage{amsmath}
\usepackage[amsmath]{ntheorem}
\usepackage[colorlinks]{hyperref} % optional
\usepackage[nameinlink]{cleveref} % optional
\theoremstyle{plain}
\theoremseparator{-}
\theorembodyfont{\upshape}
\newtheorem{definition}{ِDef}[section]
\crefname{definition}{definition}{definitions}
\begin{document}
\setcounter{chapter}{1} % just for this example
\setcounter{section}{1}
\begin{definition} \label{def:dash}
content...
\end{definition}
A cross-reference to \cref{def:dash}.
\end{document}