在 \listtheorems (ntheorem) 中对齐名称

在 \listtheorems (ntheorem) 中对齐名称

问题:

如何在ntheorem定理列表中对齐定理的名称?

截屏:电流输出

截图:(预期输出经过 Photoshop 处理)

语境:

我正在使用该ntheorem包排版定理和定义列表(\listtheorems),并定义了几个自定义定理环境。环境名称的字长不同,导致列表中的排版不一致。

我用德语写作,其中只有一个环境名称明显较短,尽管其他名称之间也存在明显的最小曲折。

截屏:图像

相关问题 我发现了两个相关的问题但都只关注间距。

TeX.SE 问题:53353 ntheorem 中 \listtheorems 的标题间距

TeX.SE 问题:43166 \listtheorems 的间距数字宽度控制

最小示例:

\documentclass{article}

\usepackage{ntheorem}

\theoremlisttype{allname}

\newtheorem{axiom}{Axiom}
\newtheorem{proposition}{Proposition}
\newtheorem{lemma}{Lemma}
\newtheorem{corollary}{Corollary}
\newtheorem{converse}{Converse}

\begin{document}
\listtheorems{axiom,proposition,lemma,corollary,converse}

\begin{axiom}[Theorem 1] \end{axiom}
\begin{proposition}[Theorem 2] \end{proposition}
\begin{lemma}[Theorem 3] \end{lemma}
\begin{corollary}[Theorem 4] \end{corollary}
\begin{converse}[Theorem 5] \end{converse}

\end{document}

答案1

为了解决这个问题,我们需要\thm@@thmline修补ntheorem

它被称为\thm@@thmline@noname或,\thm@@thmline@name取决于被调用的选项allopt或,分别allnameoptname

中有两个版本的宏ntheorem。带有四个参数的宏用于非hyperref文档。带有五个参数的宏用于hyperref加载文档时。

因此,您可以像第一个代码片段一样\thm@@thmline直接修补并强制allname/optname行为,也可以像第二个代码片段一样修补,这将保留使用和 的\thm@@thmline@name能力。 这两个代码片段都可以在有和没有 的情况下工作。optallhyperref

解决方案 1

\documentclass{article}

\usepackage{ntheorem}

%\usepackage{hyperref}
%\usepackage[hyperref]{ntheorem}

\makeatletter
\AtBeginDocument{
    \@ifpackageloaded{hyperref}
     {
      % hyperref version of the macro
      \renewcommand\thm@@thmline[5]{%
        \@dottedtocline {-2}{0em}{2.3em}{\hyper@linkstart{link}{#5}{\makebox[\widesttheorem][l]{#1 \protect \numberline {#2}}#3}\hyper@linkend}{#4}%
      }
     }
     {
      % standard, non-hyperref version of the macro
      \renewcommand\thm@@thmline[4]{%
        \@dottedtocline {-2}{0em}{2.3em}{\makebox[\widesttheorem][l]{#1 \protect \numberline {#2}}#3}{#4}%
     }

} \settowidth{\widesttheorem}{命题 10\quad} } \makeatother \newlength\widesttheorem

\theoremlisttype{allname}

\newtheorem{axiom}{Axiom}
\newtheorem{proposition}{Proposition}
\newtheorem{lemma}{Lemma}
\newtheorem{corollary}{Corollary}
\newtheorem{converse}{Converse}

\begin{document}
\listtheorems{axiom,proposition,lemma,corollary,converse}

\begin{axiom}[Theorem 1]
\end{axiom}
\begin{proposition}[Theorem 2]
\end{proposition}
\begin{lemma}[Theorem 3]
\end{lemma}
\begin{corollary}[Theorem 4]
\end{corollary}
\begin{converse}[Theorem 5]
\end{converse}

\end{document}

解决方案 2

\documentclass{article}

\usepackage{ntheorem}

%\usepackage{hyperref}
%\usepackage[hyperref]{ntheorem}

\makeatletter
\def\thm@@thmline@name#1#2#3#4{%
        \@dottedtocline{-2}{0em}{2.3em}%
                   {\makebox[\widesttheorem][l]{#1 \protect\numberline{#2}}#3}%
                   {#4}}
\@ifpackageloaded{hyperref}{
\def\thm@@thmline@name#1#2#3#4#5{%
    \ifx\\#5\\%
        \@dottedtocline{-2}{0em}{2.3em}%
            {\makebox[\widesttheorem][l]{#1 \protect\numberline{#2}}#3}%
            {#4}
    \else
        \ifHy@linktocpage\relax\relax
            \@dottedtocline{-2}{0em}{2.3em}%
                {\makebox[\widesttheorem][l]{#1 \protect\numberline{#2}}#3}%
                {\hyper@linkstart{link}{#5}{#4}\hyper@linkend}%
        \else
            \@dottedtocline{-2}{0em}{2.3em}%
                {\hyper@linkstart{link}{#5}%
                  {\makebox[\widesttheorem][l]{#1 \protect\numberline{#2}}#3}\hyper@linkend}%
                    {#4}%
        \fi
    \fi}
}
\makeatother
\newlength\widesttheorem
\AtBeginDocument{
  \settowidth{\widesttheorem}{Proposition 10\quad}
}

\theoremlisttype{allname}

\newtheorem{axiom}{Axiom}
\newtheorem{proposition}{Proposition}
\newtheorem{lemma}{Lemma}
\newtheorem{corollary}{Corollary}
\newtheorem{converse}{Converse}

\begin{document}
\listtheorems{axiom,proposition,lemma,corollary,converse}

\begin{axiom}[Theorem 1]
\end{axiom}
\begin{proposition}[Theorem 2]
\end{proposition}
\begin{lemma}[Theorem 3]
\end{lemma}
\begin{corollary}[Theorem 4]
\end{corollary}
\begin{converse}[Theorem 5]
\end{converse}

\end{document}

在参数中\settowidth放置最长的标签、最大的数字和合适的间距。

在此处输入图片描述

相关内容