Putting anything in front of \item in lists
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\begin{document}
\begin{itemize}
\item one
\item \makebox[0pt][r]{some text\hspace{0.5cm}}two
\item three
\end{itemize}
\end{document}
Following up on the idea of @UlrikeFischer here is a way how to use it with a smooth user interface, i.e. the syntax is
\item[<mark>](<text before label>)
Note that both arguments are optional:
\begin{itemize}
\item one
\item[+] two
\item(text) three
\item[--](text) four
\end{itemize}
Moreover, I added a checker for the width of the text preceding the items label that throws out a warning if the text exceeds the length of one line. Preceding textes that are not too overlong, i.e. two lines, can still be handled by this solution.
Complete Code
\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}
Addendum
Note that this solution supports nested lists too.
\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}
If you're only wanting this at the "root" level of an itemize
, you can use \textbullet
, otherwise use \itemmark
(which adapts to the level of itemize
).
The solution below relies on the fact that you can specify an \item[<mark>]
by using the optional argument <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}