TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm seeking a style file or other macros for creating an outline in Plain TeX, of the traditional indented style, eg.

I.  Big Idea  
    A.  Sub idea  
    B.  Sub idea  
        1.  Thought  
            a.  Sub thought

I'd love to write one (some day) if no one has done this yet, and if anyone might be interested in collaborating.

share|improve this question
See lists in eplain for inspiration. – lhf Aug 22 '12 at 1:32
These Plain TeX macros are vintage 1991. homepages.rpi.edu/~sofkam/MTeX/mtex.html – R. Schumacher Aug 22 '12 at 3:23
@R.Schumacher Could you make this an answer? – Stephan Lehmke Dec 2 '12 at 0:19
@lhf The link you provided died; is this an appropriate replacement? tug.org/eplain/doc/eplain.html#Lists – Sean Allred Jan 27 at 2:31
@SeanAllred, yes, thanks for finding the correct link. – lhf Jan 27 at 11:24

(Made CW answer from comments)

These Plain TeX macros are vintage 1991:


share|improve this answer
Since this link is dead, and the MTeX macros didn't really have what I was looking for, I have unselected this as the chosen answer, and provided my own answer. – C. Kelly Jan 30 at 1:49
up vote 1 down vote accepted

Since I hadn't really been satisfied with any Plain TeX macros I found, and the vintage 1991 macros were either taken down or moved (link rot), I eventually wrote my own, which follow. These are not for LaTeX. The result looks like this:


At the end of the macros there is an example outline.

% Plain TeX macros to create simple outlines, texoutlines.tex
%  C. Kelly, 2016
\def\outlinebeg{\parindent=1.5em\obeylines\bigbreak\leftline{\bf Outline}\smallskip\hrule\smallskip}
% Two versions of this macro, the second inserts an \hrule

% Use \outlinefile to read a file with the outline
% Use \outline to read outline until the first \par

% With these, you should provide either "." or "I.", "A.", etc, as you prefer. 
% They don't increment automatically.
\def\2#1.{\par\indent \hangindent2\parindent \textindent{#1.}}
\def\3#1.{\par\indent\indent \hangindent3\parindent \textindent{#1.}}
\def\4#1.{\par\indent\indent\indent \hangindent4\parindent \textindent{#1.}}
\def\5#1.{\par\indent\indent\indent\indent \hangindent5\parindent \textindent{#1.}}

% Following are new macros which don't require you to provide the outline item number
\def\letter#1{\ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
    k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or
    x\or y\or z\or aa\or bb\or cc\or dd\or ee\or ff\or gg\or hh\or ii\or
    jj\or kk\or ll\or mm\or nn\or oo\or pp\or qq\or rr\or ss\or tt\or
    uu\or vv\or ww\or xx\or yy\or zz\else$\dots$\fi}

\newcount\cnta \cnta=0
\newcount\cntb \cntb=0
\newcount\cntc \cntc=0
\newcount\cntd \cntd=0
\newcount\cnte \cnte=0

\def\A{\global\advance\cnta by 1
  {\romannumeral\cnta}. }
  \cntb=0 \cntc=0 \cntd=0 \cnte=0
\def\b{\global\advance\cntb by 1
  \par\indent \hangindent2\parindent \textindent
  {\uppercase\expandafter{\letter\cntb}. }
  \cntc=0 \cntd=0 \cnte=0
\def\c{\global\advance\cntc by 1
  \par\indent\indent \hangindent3\parindent \textindent
  {\number\cntc. }
  \cntd=0 \cnte=0
\def\d{\global\advance\cntd by 1
  \par\indent\indent\indent \hangindent4\parindent \textindent
  {\letter\cntd. } 
\def\e{\global\advance\cnte by 1
  \par\indent\indent\indent\indent \hangindent5\parindent \textindent
  {\romannumeral\cnte. }
  \par\indent\indent\indent\indent\indent \hangindent6\parindent \textindent
  { $\bullet$ }
% Macros to create outlines {END}

% A sample usage of the above macros

\outline % new style
\A Example using newer macros
    \b  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
        \c incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
            \d Duis aute irure dolor 
                \e Freedom \dots from what?
                \5. from having to have a number in this point. This is using the old-style macro
                    \f At this level, we just want bullets
                \e Something more
                \e And another thing\dots
    \b What can be said more
        \c New point 1
        \c Yet another point 

\noindent Note that a blank line ends the outline
but the counters are not reset until a new {\tt\char`\\ outline} is
declared. So if you have something more to put into your outline, 
just do so. 

\A New point here.
    \b New subpoints 

\outline % old style
\I . Example outline with older macros
\I I. Big heading
    \2 A. Subhead
    \2 B. Subhead
        \3 1. Sub-subhead
        \3 2. Sub-subhead
            \4 a. Sub-sub-subhead
            \4 b. Sub-sub-subhead
                \5 i. sub-sub-sub-subhead
                \5 ii. sub-sub-sub-subhead
                \5 . Unlabeled sub-sub-sub-subhead
        \3 4. Next Sub-subhead. (oops! I skipped 3.)
\I II. New major head

%You can also insert a file with an outline in it, with \outlinefile 
\outlinefile file_with_my_outline.txt

%  Sample input, end
share|improve this answer
Granted, I'm not a plain TeX user, but you are \def-ing individual letters? – jon Jan 29 at 5:13
Check whatgar\c con does now... – erreka Jan 29 at 5:41

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.