7

For reasons too complicated to go into here, I need the ability to create something that looks like a list item without using a list. Specifically, I want each item to begin with a mark (which is a triangleleft, but that doesn't matter), and the text, if it wraps multiple lines, to wrap and indent just as a list item should. [Edit: I actually need these ersatz items to be standalone - that is, not inside any kind of enclosing structure like a table that requires an opening token and a closing token].

From reading other notes, I gather I can do this using a minipage to indent the text. Is there an easier way without loading additional packages? Thanks.

[Edit: it appears that there is some doubt that this is really what I need. The requirements are laid out in more detail here. Bottom line: I have to put text inside another .tex file which, when processed, will create a tex file that I can process with a different set of macros to create my output. Thus the single tex file produces two PDFs eventually: the one generated by the file itself and the one generated by my generated tex file. The issue is that while I theoretically could use a list structure to hold the solutions that I'm writing, that requires a pretty complex set of boolean flags to put list ending code in the right place, and that is all pretty brittle. So I'd prefer a solution in which each solution stands alone.]

6
  • Could you illustrate how your input might look? I assume there is something that defines the limits of the list and the items.
    – Joseph Wright
    Feb 3, 2013 at 14:32
  • The word list has a special meaning in LaTeX because it's the name of an environment. It is not clear why you cannot use a list environment. Are you sure this is what you want?
    – user10274
    Feb 3, 2013 at 14:35
  • @josephwright No, there really isn't. I just want something that looks like a standalone list item but requires no enclosing structures. I can present the whole set of requirements if you want, but I think it will just confuse things.
    – rogerl
    Feb 3, 2013 at 14:35
  • Complicated or not, I wonder why you want to do this. Using \begin{itemize}...\end{itemize} adds structure to your document and makes it more readable.
    – hpesoj626
    Feb 3, 2013 at 14:36
  • Perhaps I should restate the requirements in a way that avoids using list terminology. I need to be able, at arbitrary points in my text, create a paragraph that is wholly indented by some amount, say 3em, and that has a mark at the left margin on the first line.
    – rogerl
    Feb 3, 2013 at 14:37

5 Answers 5

4

This may be what you want, with help from @ChristianR and from
change the itemize from bullet to square

 \documentclass{article}

\newenvironment{notalistitem}
{\begin{itemize}
\renewcommand{\labelitemi}{$\triangleright$} 
\item}
{\end{itemize}}

\begin{document}

Some text

\begin{notalistitem}
Here is text that should look like a list item although it doesn't
seem to be part of a list.
\end{notalistitem}

\begin{itemize}
\item This is part of a list.
\end{itemize}

\end{document}

enter image description here

Edit: You'll need something more robust if you want to use an itemize inside this new environment, or one of these inside an itemize.

1
  • I ended up going with this answer because I do need the ability to have multiple paragraphs. I would have liked to mark @egreg's as accepted as well, though. Thanks to all.
    – rogerl
    Feb 4, 2013 at 15:10
7

This won't work if \xitem is in a list environment, but only at the "outer level":

\documentclass{article}
\usepackage{lipsum} % for the mock text

\newcommand{\xitem}{%
  \par\hangindent3em\hangafter0
  \noindent\llap{$\triangleright$\enspace}%
  \ignorespaces}

\begin{document}
\lipsum[1]

\xitem\lipsum[2]

\lipsum[3]
\end{document}

enter image description here

In order to have the symbol flush with the left margin, you can do

\newcommand{\xitem}{%
  \par\hangindent3em\hangafter1
  \noindent\makebox[3em][l]{$\triangleright$}%
  \ignorespaces}

Hanging indentation starts after one line, but the beginning of the first line is occupied by a box with the same width as the indent.

2
  • this looks like exactly what I want. Is there a way to push the item left so that the triangle is flush with the left margin?
    – rogerl
    Feb 3, 2013 at 14:50
  • @rogerl I've added the change you requested
    – egreg
    Feb 3, 2013 at 17:05
6

What about something like

\documentclass{article}
\usepackage{lipsum}
\begin{document}
\def\myitem{\hangindent=5em$\triangleright$}

\myitem \lipsum[1]

\myitem \lipsum[2]

\myitem \lipsum[3]

\lipsum[4]
\end{document}

The advantage of using \hangindent is it has a single paragraph scope so there is no effect after the item that needs to be "ended". The drawback is that it falls over if your "items" are more than 1 paragraph long.

2

You could use a table as follows (no packages required).

I've chosen p{5cm} for the second column to make the linebreak easier. This should give you an idea on how to tweak the table to get a result that you like.

Code

\documentclass{article}
\begin{document}

\begin{tabular}{lp{5cm}}
$\triangleright$ & some text \\
$\triangleright$ & a little bit more text, to provoke linebreak \\
$\triangleright$ & some text \\
\end{tabular}

\end{document}

Result

image

1
  • I wasn't clear enough in my original post. I need to do this in a way that does not use an opening and closing bracket, line \begin{itemize}\end{itemize} or similarly for tabular.
    – rogerl
    Feb 3, 2013 at 14:32
1

I won't go into whether there are better alternatives, but you can always use the TeX facilities built into the language for this kind of things, namely \parshape. Here's a simple macro that generates a paragraph with a hanging indent, using whatever symbol you want:

\def\ipar#1{\par\medskip
  \@tempdima=\textwidth \advance\@tempdima by -1.5em
  \parshape=2 0pt \textwidth 1.5em \@tempdima\relax
  \noindent\hbox to 1.5em {#1}}

You can use it like this (or define another macro to supply the triangle):

\ipar{$\bullet$\hfil} Here comes the paragraph text.

Explanation: \parshape is used with a number of pairs (<indentation>, <line length>). The last pair is used for any remaining lines. The syntax is

\parshape <number-of-pairs> (pair 1) (pair 2) ...

With judicious choices you can build circular paragraphs, etc. The rest of the macro calculates the line length from the desired indentation (which is hard-coded to 1.5em).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .