我已经发出了这个命令:
\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
。