我正在尝试自定义环境enumerate
,其中 为\item
粗体但文本不为粗体。我尝试的是(根据其中一个 google-results 的建议):
\let\origitem\item
\renewcommand{\item}{\normalfont\origitem}
\newcommand{\bolditem}{\normalfont\bfseries\origitem}
然后使用它
\begin{enumerate}
\bolditem[0] First item (whole line is bold)
\bolditem[1] Second item (also bold)
\item[2] Third item (not bold)
\end{enumerate}
但这会使整行变为粗体。我只希望编号部分变为粗体。
我怎样才能实现这个目标?
答案1
你可以使用这个enumitem
包。如果你不想使用额外的包,你可以简单地重新定义\labelenumi
:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}
\renewcommand\labelenumi{\bfseries\theenumi}
\item First item.
\item Second item.
\item Third item.
\end{enumerate}
% requires the enumitem package
\begin{enumerate}[label=\bfseries\arabic*]
\item First item.
\item Second item.
\item Third item.
\end{enumerate}
\end{document}
编辑:在更具编程性的层面上,您可以定义一个新的列表式环境,其行为类似于标准enumerate
,但具有所需的标签格式。这可以使用类似这样的方法完成
\documentclass{article}
\newenvironment{boenumerate}
{\begin{enumerate}\renewcommand\labelenumi{\textbf\theenumi}}
{\end{enumerate}}
\begin{document}
\begin{boenumerate}
\item First item.
\item Second item.
\item Third item.
\end{boenumerate}
\end{document}
enumerate
或模仿中给出的环境定义source2e
):
\documentclass{article}
\makeatletter
\def\boenumerate{%
\renewcommand\labelenumi{\textbf\theenumi}
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\expandafter
\list
\csname label\@enumctr\endcsname
{\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
\fi}
\let\endboenumerate =\endlist
\makeatother
\begin{document}
\begin{boenumerate}
\item First item.
\item Second item.
\item Third item.
\end{boenumerate}
\end{document}
类似的东西,但是现在有了包的帮助enumitem
:
\documentclass{article}
\usepackage{enumitem}
\newlist{boenumerate}{enumerate}{4}
\setlist[boenumerate,1]{label=\bfseries\arabic*}
\begin{document}
\begin{boenumerate}
\item First item.
\item Second item.
\item Third item.
\end{boenumerate}
\end{document}
答案2
您应该使用类似 的包。该包允许通过键值语法enumitem
来修改。item
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\textbf{\arabic*},start=0]
\item First item
\item Second item
\item Third item
\end{enumerate}
\end{document}
答案3
重新定义 不是一个好主意\item
,因为它在 LaTeX 的许多部分都有使用。这里有一个\benumerate
环境,您可以在其中使用\bolditem
命令将其替换为正常命令。
\documentclass[a4paper]{article}
\let\ifbolditem\iffalse
\def\bolditemtrue{\global\let\ifbolditem\iftrue}
\def\bolditemfalse{\global\let\ifbolditem\iffalse}
\newenvironment{benumerate}
{\def\bolditem{\bolditemtrue\item}%
\enumerate
\renewcommand\makelabel[1]{\hss\llap{\ifbolditem\bfseries\fi##1\bolditemfalse}}}
{\endenumerate}
\begin{document}
\begin{benumerate}
\item Normal
\bolditem Bold
\item Normal again
\bolditem[9] Bold
\end{benumerate}
\end{document}
答案4
通过使用enumerate
包您也可以使用此命令。
\documentclass{article}
\usepackage{enumerate}
\begin{document}
\begin{enumerate}[\bfseries a.]
\item one
\item two
\item three
\end{enumerate}
\end{document}