我想删除包中定理、定义等编号后的点amsthm
。(所以我得到定理 1.1代替定理 1.1。)(编辑:我想从定理本身中删除点)
我正在使用hyperref
和包,这两个包都存在问题。我已经在这里cleveref
找到了包的解决方案hyperref
使用 amsthm 和 hyperref 删除定理后的点,但使用该cleveref
包时,点又会出现。
梅威瑟:
\documentclass[a4paper,12pt,oneside]{scrbook}
\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}[chapter]
\usepackage{xpatch}
\makeatletter
\AtBeginDocument{\xpatchcmd{\@thm}{\thm@headpunct{.}}{\thm@headpunct{}}{}{}}
\makeatother
\begin{document}
\chapter{Hello}
\begin{theorem}
World
\end{theorem}
\end{document}
答案1
cleveref
更改\@thm
使链接的解决方案不再起作用。\tracingpatches
在尝试修补之前添加\@thm
将显示“在替换文本中未找到搜索模式。”
以下更新使用时的补丁cleveref
:
\documentclass{scrbook}
\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}[chapter]
\usepackage{xpatch}
\makeatletter
% Patch to accommodate for \begin{theorem}[...]
\AtBeginDocument{\xpatchcmd{\cref@thmoptarg}{\thm@headpunct{.}}{\thm@headpunct{}}{}{}}
% Patch to accommodate \begin{theorem} (without an optional argument)
\AtBeginDocument{\xpatchcmd{\cref@thmnoarg}{\thm@headpunct{.}}{\thm@headpunct{}}{}{}}
\makeatother
\begin{document}
\chapter{Hello}
\begin{theorem}
World
\end{theorem}
\end{document}
我识别更新补丁的(粗略)过程:
在补丁中的and中添加
\typeout{success}
and :\typeout{failure}
<success>
<failure>
\xpatchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
这将允许您检查
.log
并查看补丁是否有效或失败。如果失败,请
\tracingpatches
在制作补丁之前添加并查看输出结果.log
。搜索模式是否仍然相同?宏是否发生了变化?查看被修补的实际宏,看看它是如何定义的
\show
。在我的例子中,是\show\@thm
。从那里,按照任何附属宏定义来查看应该将更改应用到原始的位置
\xpatchcmd
。在这种情况下,
\@thm
以可选参数为条件,并且cleveref
由于两个子宏是\cref@thmoptarg
和,因此它显然是由引入的\cref@thmnoarg
。
答案2
由于您正在使用amsthm
,因此您需要定义一个新的定理样式:
\newtheoremstyle{nodot}
{}{} % Default space above and below
{\itshape}{} % italic body unindented
{\bfseries}{} % bold theorem head, no dot after
{ }{} % normal space between theorem head and body, default head spec
texdoc amsthm
通过在命令行中输入即可获得完整的详细信息。