![enumitem 和 amsthm 的间距问题](https://linux22.com/image/364372/enumitem%20%E5%92%8C%20amsthm%20%E7%9A%84%E9%97%B4%E8%B7%9D%E9%97%AE%E9%A2%98.png)
关于如何替换的问题已经有很多答案了
Theorem. * Point
* Point
* Point
经过
Theorem. * Point
* Point
* Point
现在,对于简短的定理标题,我想实现
Theorem. * Point
* Point
* Point
然而,我的尝试并不完美:第一个要点比其他要点稍微靠左一些。我忘记考虑哪个长度了?MWE:
\documentclass{article}
\usepackage{enumitem,amsthm}
\begin{document}
\newlength{\algnRef}
\settowidth{\algnRef}{\textbf{Fact.} {}}
\addtolength{\algnRef}{1em}
\setlist{leftmargin=\algnRef}
\newtheorem*{fact*}{Fact}
\begin{fact*}
\begin{itemize}[leftmargin=1em]
\item Bla
\end{itemize}
\vspace{-\topsep}
\vspace{\parsep}
\vspace{\itemsep}
\begin{itemize}
\item Bla
\item Bla
\end{itemize}
\end{fact*}
\end{document}
答案1
造成混淆的原因是,amsthm
在 $\textbf{Fact.}$ 后面没有放置空格,如果是正常粗细,则为 3.33pt,如果是粗体,则为 3.83pt,而是放置了 5pt 加 1pt 减 1pt 的跳过。因此,以下代码可以正确编译:
\documentclass{scrartcl}
\usepackage{calc,enumitem,amsthm}
\begin{document}
\newtheoremstyle{plain}
{\topsep} % ABOVESPACE
{\topsep} % BELOWSPACE
{} % BODYFONT
{0pt} % INDENT (empty value is the same as 0pt)
{\bfseries} % HEADFONT
{.} % HEADPUNCT
{1ex} % HEADSPACE
{} % CUSTOM-HEAD-SPEC
\theoremstyle{plain}
\newtheorem*{fact*}{Fact}
\setlist{leftmargin={\widthof{\textbf{Fact.}}+1em+1ex}}
\setlist[itemize]{label=$\mid$}
\begin{fact*}
\begin{itemize}[leftmargin=1em]
\item Bla
\end{itemize}
\vspace{-2\topsep}
\vspace{\parsep}
\vspace{\itemsep}
\begin{itemize}
\item Bla
\item Bla
\end{itemize}
\end{fact*}
\end{document}
请注意,我已将管道符号放置为项目符号,以使水平对齐更加明显。