当在项目环境中时,将 hrule 放在类似子部分 (subsubsection) 的环境中会出现问题吗?

当在项目环境中时,将 hrule 放在类似子部分 (subsubsection) 的环境中会出现问题吗?

我已经发出了这个命令:

\newcommand*{\example}[1]{%
\needspace{3\baselineskip}
\subsubsection{{\bf Example #1}{{\color{lightgray}\hrule width 22mm height 1.5pt}\hfill}}%
}

并且它工作正常,除非我试图将 \example 放在 itemize 或 enumerate 环境中,在这种情况下该行没有缩进,因此它没有很好地对齐在缩进的“Example”下面。我考虑使用规则而不是 hrule{\color{lightgray}\rule{\linewidth}{1.5pt}}

但这似乎在子部分内不起作用。它会产生错误。有什么建议吗?如果可能的话,我宁愿避免使用额外的包。谢谢!

答案1

你不能使用\subsubsection在逐项列表或枚举列表中使用。

也许这段代码可以实现你想要的功能:

\newcounter{example}[subsection]
\renewcommand{\theexample}{\thesubsection.\arabic{example}}

\newcommand*{\example}[1]{%
  \needspace{3\baselineskip}%
  \refstepcounter{example}%
  \noindent\textbf{\examplerule\theexample\ Example #1}\par\vspace{1ex}
  \noindent\ignorespaces}
\newcommand{\examplerule}{%
  \makebox[0pt][l]{\color{lightgray}\smash{\rule[-1ex]{22mm}{1.5pt}}}}

编辑:这将绘制一条与示例标签一样宽的线,并且还允许\example*不打印数字,也不步进计数器example

\newcounter{example}[subsection]
\renewcommand{\theexample}{\thesubsection.\arabic{example}}

\makeatletter
\newcommand{\examplename}{Example}
\newcommand*{\example}{\@ifstar{\@tempswafalse\@example}{\@tempswatrue\@example}}
\newcommand{\@example}[1]{%
  \needspace{3\baselineskip}%
  \if@tempswa
    \refstepcounter{example}%
    \def\exampletext{\textbf{\theexample\ \examplename\ #1}}%
  \else
    \def\exampletext{\textbf{\examplename\ #1}}%
  \fi
  \settowidth{\dimen0}{\exampletext}%
  \noindent\examplerule\exampletext\par\vspace{1ex}}
\newcommand{\examplerule}{%
  \makebox[0pt][l]{\color{lightgray}\smash{\rule[-1ex]{\dimen0}{1.5pt}}}}
\makeatletter

您可以定义\examplename

相关内容