Plain TeX 中輪廓的樣式/宏

Plain TeX 中輪廓的樣式/宏

我正在尋找一個樣式檔案或其他宏,用於在 Plain TeX 中建立傳統縮排樣式的輪廓,例如。

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

如果還沒有人這樣做,並且如果有人有興趣合作,我很樂意(有一天)寫一篇。

答案1

(CW從評論中回答)

這些 Plain TeX 巨集是 1991 年的版本:

http://homepages.rpi.edu/~sofkam/MTeX/mtex.html

答案2

由於我對找到的任何 Plain TeX 巨集都不太滿意,而且 1991 年的老式宏要么被刪除,要么被移動(鏈接腐爛),所以我最終編寫了自己的宏,如下所示。這些不適用於 LaTeX。結果如下:

螢幕截圖

巨集的末尾有一個範例大綱。

%
% 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
\def\outlineend{\smallskip\bigskip}
%\def\outlineend{\smallskip\hrule\bigskip}

% Use \outlinefile to read a file with the outline
\def\outlinefile#1\par{\bgroup\outlinebeg\input#1\outlineend\egroup}
% Use \outline to read outline until the first \par
\def\outline#1\par{\bgroup\outlinebeg#1\outlineend\egroup}

% With these, you should provide either "." or "I.", "A.", etc, as you prefer. 
% They don't increment automatically.
\def\I#1.{\medskip\goodbreak\hang\noindent{#1.}}
\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
  \medskip\goodbreak\hang\noindent{\uppercase\expandafter
  {\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. } 
  \cnte=0
}
\def\e{\global\advance\cnte by 1
  \par\indent\indent\indent\indent \hangindent5\parindent \textindent
  {\romannumeral\cnte. }
}
\let\i\e
\def\f{
  \par\indent\indent\indent\indent\indent \hangindent6\parindent \textindent
  { $\bullet$ }
}
%
% Macros to create outlines {END}
\endinput

% 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
\vfill\eject\end

相關內容