以下源导致类定理环境中的“EXERCSISES”头被里面枚举列表的第一项覆盖:
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{enumitem}
\declaretheoremstyle[
headfont=\bfseries,%
headpunct={\vspace{\topsep}\newline},
numbered=no,
spaceabove=3\topsep,
postheadspace=0 pt ]{exercs}
\declaretheorem[name=EXERCISES,style=exercs]{problems}
\newlist{problemsenum}{enumerate}{3}
\setlist[problemsenum,1]{%
label=\arabic*.,
before=\leavevmode \vspace{-\dimexpr\baselineskip+\topsep\relax}
}
\usepackage{showkeys}
\begin{document}
\begin{problems}
\label{myproblems}
\begin{problemsenum}
\item Do this one first.
\item Solve this next.
\end{problemsenum}
\end{problems}
\end{document}
注释掉\usepackage{showkeys}
或者省略\label
可防止覆盖:
有没有办法防止覆盖,即使showkeys
加载和还包括剧照\label
吗?
防止覆盖的一种方法showkeys
是不是加载只是删除\begin{problems}
和\label
命令之间的换行符:
\begin{problems}%
\label{my problems}
但是,即使进行了这样的更改,一旦showkeys
加载,覆盖仍然会持续存在。因此,需要一个更强大的解决方法。
笔记:problemsenum
为了能够使用 创建对环境中各个项目的交叉引用problemsenum
,需要对环境进行看似复杂的定义\cref
,即使类定理环境没有编号。(见如何使用 cleveref 获取类似定理的名称和列表项编号?和如何在类似定理的环境中改变头部后的垂直空间。
答案1
像 这样的软件包showkeys
在相当深的层次上工作,并对某些事物(如定理标签)的产生方式做出一些假设。在这种情况下,您滥用 来headpunct
插入 会\vspace
造成混淆showkeys
。
原来,现场的竞争对手就是针对这种特殊情况而工作的:
\usepackage{showlabels}
这个包比 更可定制showkeys
,所以我的建议是换一个。但是,不能保证其他像您在这里做的那些复杂的事情也能奏效。无论如何, 和showkeys
都只showlabels
在编写文档时使用,这时一些糟糕的排版可以忽略不计。