enumitem 和 amsthm 的间距问题

enumitem 和 amsthm 的间距问题

关于如何替换的问题已经有很多答案了

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}

请注意,我已将管道符号放置为项目符号,以使水平对齐更加明显。

相关内容