答案1
答案2
按照@UlrikeFischer 的想法,这里有一种如何使用流畅的用户界面的方法,即语法是
\item[<mark>](<text before label>)
注意两个都参数是可选的:
\begin{itemize}
\item one
\item[+] two
\item(text) three
\item[--](text) four
\end{itemize}
此外,我还添加了一个检查器来检查项目标签前面的文本宽度,如果文本长度超过一行,则会发出警告。如果前面的文本不是太长(即两行),此解决方案仍然可以处理。
完整代码
\documentclass{article}
\usepackage{lipsum}
\makeatletter
\let\ltx@item\item
\def\item{\kernel@ifnextchar[{\item@}{\item@[\@itemlabel]}}
\def\item@[#1]{\kernel@ifnextchar({\item@@[#1]}{\item@@[#1]()}}
\def\item@@[#1](#2){\ltx@item[#1]\itemc@mment{#2}\ignorespaces}
\def\itemc@mment#1{%
\@tempdima\dimexpr\oddsidemargin+\hoffset+\itemindent+1in\relax
\setbox0\hbox{\ignorespaces#1}%
\ifdim\wd0>\@tempdima
\@latex@warning{Overfull item comment
(\the\dimexpr\wd0-\@tempdima\relax)}\fi
\ifdim\wd0>\z@
\hspace{-.67em}
\makebox[\z@][r]{%
\smash{\parbox[t]{\dimexpr\@tempdima-.175cm\relax}{%
\setlength\parindent\z@
\addtolength\baselineskip{-.33em}
\ifdim\wd0<\@tempdima\hspace{0pt plus 1fill}\fi#1}}
\hspace{.175cm}
}
\fi
}
\makeatother
\begin{document}
\begin{itemize}
\item one
\item[+] two
\item(text) three
\item[--](text) four
\item(text text text text text text text) five
\item six
\end{itemize}
\begin{itemize}
\setlength\itemindent{-1in}
\item one
\item[+] two
\item(text) three
\item[--](text) four
\item(text text text text text text text) five
\item six
\end{itemize}
\end{document}
附录
请注意,此解决方案也支持嵌套列表。
\begin{itemize}
\item first
\begin{itemize}
\item sub one
\item[:] sub two
\item(text) sub three
\item[:](text) sub four
\end{itemize}
\item[+] two
\item(text) three
\item[--](text) four
\item(text text text text text text text) five
\item six
\end{itemize}
答案3
如果您只想在的“根”级别使用它itemize
,则可以使用\textbullet
,否则使用\itemmark
(适应的级别itemize
)。
\item[<mark>]
下面的解决方案依赖于您可以使用可选参数指定的事实<mark>
:
\documentclass{article}
\makeatletter
\newcommand{\itemmark}{\expandafter\csname labelitem\romannumeral\the\@itemdepth\endcsname}
\makeatother
\begin{document}
\begin{itemize}
\item one
\item[some text~1\ \textbullet] two
\item[some text~2\ \itemmark] three
\begin{itemize}
\item four
\item[some text~3\ \itemmark] five
\end{itemize}
\item six
\end{itemize}
\end{document}
答案4
在这里,我只是定义\clap
为
\def\clap#1\item{\item[#1~$\bullet$]}
其余内容保持不变。MWE:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\def\clap#1\item{\item[#1~$\bullet$]}
\begin{document}
\begin{itemize}
\item one
\clap{some text}\item two
\item three
\end{itemize}
\end{document}
为了自动处理项目深度,可以定义\clap
为
\def\clap#1\item{\item[#1~\itemmark]}
并使用Werner 的定义\itemmark
。