summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/csplain/opmac
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-07-11 22:53:33 +0000
committerKarl Berry <karl@freefriends.org>2013-07-11 22:53:33 +0000
commit2a8f95100cbc46b8462f7f4f8a665edd9faa6ce3 (patch)
treebeda3c2866d6d541a601c020bc0d95b06d1feaca /Master/texmf-dist/tex/csplain/opmac
parent3497bad6f2e93e3e0caebddf10d327d436bb7adf (diff)
csplain (11jul13)
git-svn-id: svn://tug.org/texlive/trunk@31160 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/csplain/opmac')
-rw-r--r--Master/texmf-dist/tex/csplain/opmac/opmac.tex199
1 files changed, 114 insertions, 85 deletions
diff --git a/Master/texmf-dist/tex/csplain/opmac/opmac.tex b/Master/texmf-dist/tex/csplain/opmac/opmac.tex
index 42dc999a998..89cceb21682 100644
--- a/Master/texmf-dist/tex/csplain/opmac/opmac.tex
+++ b/Master/texmf-dist/tex/csplain/opmac/opmac.tex
@@ -5,7 +5,7 @@
%% The history of versions is at the end of this file, after \endpinput
\ifx\OPmacversion\undefined \else \endinput \fi
-\def\OPmacversion{May 2013}
+\def\OPmacversion{Jul. 2013}
\immediate\write16{This is OPmac (Olsak's Plain macros), version <\OPmacversion>}
@@ -16,7 +16,7 @@
\def\opwarning#1{\immediate\write16{l.\the\inputlineno\space OPmac WARNING: #1.}}
-\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
+\long\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
\def\protectlist{}
\def\addprotect#1{\addto\protectlist{\doprotect#1}}
@@ -44,7 +44,7 @@
\def\isinlist#1#2#3{\def\tmp##1#2##2\end{\def\tmp{##2}%
\ifx\tmp\empty \csname iffalse\expandafter\endcsname \else
\csname iftrue\expandafter\endcsname \fi}%
- \expandafter\tmp#1#2\end
+ \expandafter\tmp#1\endlistsep#2\end
}
\def\isnextchar#1#2#3{\def\tmpa{#2}\def\tmpb{#3}%
\let\tmp=#1\futurelet\next\isnextcharA
@@ -267,7 +267,7 @@
\def\wlabel#1{%
\ifx\lastlabel\undefined \else
- \dest[ref:\lastlabel]{2.1em}%
+ \dest[ref:\lastlabel]%
\edef\tmp{\wref\Xlabel{{\lastlabel}{#1}}}\tmp
\isdefined{lab:\lastlabel}\iftrue \else
\sxdef{lab:\lastlabel}{#1}%
@@ -290,66 +290,80 @@
%%%%%%%%%%%%%% Chapters, sections, subsections -- sec. 3.8 in opmac-d.pdf
+\def\printchap#1{\vfil\break
+ {\chapfont \noindent \mtext{chap} \dotocnum{\thetocnum}\par
+ \nobreak\smallskip\noindent #1\nbpar}\mark{}%
+ \nobreak \remskip\bigskipamount \firstnoindent
+}
+\def\printsec#1{\par \norempenalty-400 \bigskip
+ {\secfont \noindent \dotocnum{\thetocnum\quad}#1\nbpar}\insertmark{#1}%
+ \nobreak \remskip\medskipamount \firstnoindent
+}
+\def\printsecc#1{\par \norempenalty-200 \medskip
+ {\seccfont \noindent \dotocnum{\thetocnum\quad}#1\nbpar}%
+ \nobreak \remskip\medskipamount \firstnoindent
+}
+\def\tit#1\par{\vglue4em
+ {\leftskip=0pt plus1fill \rightskip=\leftskip
+ \titfont \noindent #1\unskip\par}%
+ \nobreak\bigskip
+}
\def\titfont{\typoscale[\magstep4/\magstep4]\bf}
\def\chapfont{\typoscale[\magstep3/\magstep3]\bfshape}
\def\secfont{\typoscale[\magstep2/\magstep2]\bfshape}
\def\seccfont{\typoscale[\magstep1/\magstep2]\bfshape}
\def\bfshape{\let\tenit=\tenbi \boldmath \bf}
-\newcount\chapnum \newcount\secnum \newcount\seccnum
-
-\def\tit#1\par{\vglue4em
- {\leftskip=0pt plus1fill \rightskip=\leftskip
- \titfont \noindent #1\unskip\par}%
- \nobreak\bigskip
-}
-\def\chap#1\par{\global\advance\chapnum by1
- \chaphook \secnum=0 \seccnum=0 \tnum=0 \fnum=0 \dnum=0 \relax
- \edef\thechapnum{\the\chapnum}%
- \printchap{#1\unskip}%
- \wlabel\thechapnum \wcontents\Xchap\thechapnum{#1}\nobreak
-}
-\def\sec#1\par{\par\global\advance\secnum by1
- \sechook \seccnum=0 \tnum=0 \fnum=0 \dnum=0 \relax
- \edef\thesecnum{\othe\chapnum.\the\secnum}%
- \printsec{#1\unskip}%
- \insertmark\thesecnum{#1\unskip}%
- \wlabel\thesecnum \wcontents\Xsec\thesecnum{#1}\nobreak
-}
-\def\secc#1\par{\global\advance\seccnum by1
- \secchook \relax
- \edef\theseccnum{\othe\chapnum.\othe\secnum.\the\seccnum}%
- \printsecc{#1\unskip}%
- \wlabel\theseccnum \wcontents\Xsecc\theseccnum{#1}\nobreak
-}
-\def\wcontents#1#2#3{%
- \expandafter\wref\expandafter#1\expandafter
- {\expandafter{#2}{#3}{\the\pageno}}%
+\newcount\chapnum \newcount\secnum \newcount\seccnum \newcount\nonumnum
+\newif\ifnotoc \notocfalse \def\notoc{\global\notoctrue}
+\newif\ifnonum \nonumfalse \def\nonum{\global\nonumtrue}
+
+\def\chap#1\par{\ifnonum\else \global\advance\chapnum by1 \fi
+ \chaphook {\globaldefs=1 \secnum=0 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax
+ \edef\thechapnum{\the\chapnum}\let\thetocnum=\thechapnum
+ \def\dotocnumafter{\wcontents\Xchap{#1}}%
+ \printchap{#1\unskip}\resetnonumnotoc
+}
+\def\sec#1\par{\ifnonum\else \global\advance\secnum by1 \fi
+ \sechook {\globaldefs=1 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax
+ \edef\thesecnum{\othe\chapnum.\the\secnum}\let\thetocnum=\thesecnum
+ \def\dotocnumafter{\wcontents\Xsec{#1}}%
+ \printsec{#1\unskip}\resetnonumnotoc
+}
+\def\secc#1\par{\ifnonum\else \global\advance\seccnum by1 \fi
+ \secchook {}\relax
+ \edef\theseccnum{\othe\chapnum.\the\secnum.\the\seccnum}\let\thetocnum=\theseccnum
+ \def\dotocnumafter{\wcontents\Xsecc{#1}}%
+ \printsecc{#1\unskip}\resetnonumnotoc
+}
+\def\wcontents#1#2{% #1: sequence to REF, #2: titletext
+ \ifnotoc\else
+ \expandafter\wref\expandafter#1\expandafter
+ {\expandafter{\thetocnum}{#2}{\the\pageno}}%
+ \fi
+}
+\def\dotocnum#1{%
+ \leavevmode
+ {\ifnonum \global\advance\nonumnum by1 \edef\thetocnum{!\the\nonumnum}\fi
+ \wlabel\thetocnum \dest[toc:\thetocnum]%
+ \dotocnumafter}\ifnonum\else#1\fi
+ \global\let\dotocnumafter=\relax
+}
+\def\resetnonumnotoc{\global\notocfalse \global\nonumfalse
+ \ifx\dotocnumafter\relax \else
+ \opwarning{\noexpand\dotocnum unused in printchap/printsec/printsecc}\fi
}
+\def\insertmark#1{\toks0={#1}\mark{{\thetocnum} {\the\toks0}}}
+
+\newskip\remskipamount
+\def\remskip{\afterassignment\remskipA \global\remskipamount}
+\def\remskipA{\vskip\remskipamount \penalty11333 }
+\def\norempenalty{\ifnum\lastpenalty=11333
+ \vskip-\remskipamount \tmpnum=\else \removelastskip \penalty \fi}
+
\def\othe#1.{\ifnum#1>0 \the#1.\fi}
\def\thechapnum{} \def\thesecnum{} \def\theseccnum{}
-\def\insertmark#1#2{\toks0={#2}\mark{{#1} {\the\toks0}}}
-
-\def\printchap#1{\vfil\break
- {\chapfont \noindent \dest[toc:\thechapnum]{1.3em}%
- \mtext{chap} \thechapnum.\par\nobreak\smallskip\noindent #1\nbpar}%
- \nobreak\bigskip
- \firstnoindent
-}
-\def\printsec#1{\removelastskip
- \ifnum \lastpenalty<1000 \goodbreak \fi \bigskip
- {\secfont \noindent \dest[toc:\thesecnum]{1.3em}\thesecnum\quad #1\nbpar}%
- \nobreak\medskip
- \firstnoindent
-}
-\def\printsecc#1{\removelastskip
- \ifnum \lastpenalty<1000 \goodbreak \fi \medskip
- {\seccfont \noindent
- \dest[toc:\theseccnum]{1.3em}\theseccnum\quad #1\nbpar}%
- \nobreak\medskip
- \firstnoindent
-}
\def\afternoindent{\global\everypar={\wipeepar\setbox0=\lastbox}}
\def\wipeepar{\global\everypar={}}
\let\firstnoindent=\afternoindent
@@ -374,20 +388,22 @@
\rightskip=\iindent plus-1fil
\parfillskip=0pt plus2fil
\def\par{\endgraf\egroup}%
- \captionhook{#1}\noindent \wlabel{\csname the#1num\endcsname}%
+ \captionhook{#1}\noindent
+ {\def\destheight{2.1em}\wlabel{\csname the#1num\endcsname}}%
\printcaption{\mtext{#1}}{\csname the#1num\endcsname}%
}
\def\printcaption#1#2{{\bf#1 #2}\enspace}
\def\eqmark{\global\advance\dnum by1
- \ifinner\else\eqno \fi \wlabel\thednum \thednum
+ \ifinner\else\eqno \fi
+ {\def\destheight{2.1em}\wlabel\thednum}\thednum
}
%%%%%%%%%%%%%% Items -- sec. 3.10 in opmac-d.pdf
\newcount\itemnum \itemnum=0
-\def\begitems{\iiskip\bgroup
+\def\begitems{\par\iiskip\bgroup
\itemnum=0 \adef*{\startitem}
\advance\leftskip by\iindent
\let\printitem=\normalitem
@@ -437,6 +453,7 @@
\opwarning{\noexpand\maketoc -- data unavailable, TeX me again}\openref
\else \toclist \fi}
+\def\toclinkA#1{\def\tmp##1!##2\end{\if&##1&\kern.8em \else##1\fi}\tmp#1!\end}
%%%%%%%%%%%%%% Index -- sec. 3.12 on opmac-d.pdf
@@ -893,14 +910,15 @@
%%%%%%%%%%%%%% Hyperrefs -- sec. 3.16 in opmac-d.pdf
-\def\destactive[#1:#2]#3{\if$#2$\else\ifvmode
+\def\destactive[#1:#2]{\if$#2$\else\ifvmode
\tmpdim=\prevdepth \prevdepth=-1000pt
- \destbox[#1:#2]{#3}\prevdepth=\tmpdim
- \else \destbox[#1:#2]{#3}%
+ \destbox[#1:#2]\prevdepth=\tmpdim
+ \else \destbox[#1:#2]%
\fi\fi
}
-\def\destbox[#1]#2{\vbox to0pt{\kern-#2 \pdfdest name{#1} xyz\vss}}
-\def\dest[#1]#2{}
+\def\destbox[#1]{\vbox to0pt{\kern-\destheight \pdfdest name{#1} xyz\vss}}
+\def\destheight{1.3em}
+\def\dest[#1]{}
\def\link[#1:#2]#3#4{\leavevmode\pdfstartlink height.9em depth.3em
\pdfborder{#1} goto name{#1:#2}\relax {#3#4}\pdfendlink
@@ -910,7 +928,7 @@
\pdfborder{#1}user{/Subtype/Link/A <</Type/Action/S/URI/URI(#2)>>}\relax
{\def~{\nobreak\space}\urlcolor#3}\pdfendlink}%
}
-\def\toclink#1{#1}
+\def\toclink#1{\toclinkA{#1}}
\def\pglink#1{#1}
\def\citelink#1{#1}
\def\reflink[#1]#2{#2}
@@ -919,7 +937,7 @@
\def\hyperlinks#1#2{%
\let\dest=\destactive
- \def\toclink##1{\link[toc:##1]{\localcolor#1}{##1}}%
+ \def\toclink##1{\link[toc:##1]{\localcolor#1}{\toclinkA{##1}}}%
\def\pglink##1{\link[pg:##1]{\localcolor#1}{##1}}%
\def\citelink##1{\link[cite:##1]{\localcolor#1}{##1}}%
\def\reflink[##1]##2{\link[ref:##1]{\localcolor#1}{##2}}%
@@ -934,7 +952,6 @@
}
\ifpdftex \else
- \def\dest[#1]#2{}
\def\link[#1]#2#3{#3}
\def\urllink[#1]#2{#2}
\def\hyperlinks#1#2{}
@@ -1038,7 +1055,7 @@
\newread\vifile
\def\setverb{\frenchspacing\def\do##1{\catcode`##1=12}\dospecials \catcode`\*=12 }
-\def\begtt{\ttskip\bgroup \wipeepar
+\def\begtt{\par\ttskip\bgroup \wipeepar
\setverb \adef{ }{ }%
\ifx\savedttchar\undefined \else \catcode\savedttchar=12 \fi
\parindent=\ttindent
@@ -1050,7 +1067,7 @@
\def\par##1{\endgraf\ifx##1\egroup\else\penalty\ttpenalty\leavevmode\fi ##1}
\obeylines \startverb}
{\catcode`\|=0 \catcode`\\=12
-|gdef|startverb#1\endtt{|tt#1|egroup|ttskip|testparA}}
+|gdef|startverb#1\endtt{|tt#1|egroup|par|ttskip|testparA}}
\def\testparA{\afterassignment\testparB\let\tmpa= }
\def\testparB{\futurelet\tmpa\testparC}
\def\testparC{\ifx\tmpa\par\else\afternoindent\fi}
@@ -1112,7 +1129,7 @@
\else
\edef\vinolines{\the\tmpnum}%
\fi
- \ttskip\bgroup \wipeepar
+ \par\ttskip\bgroup \wipeepar
\setverb \adef{ }{ }%
\ifx\savedttchar\undefined \else \catcode\savedttchar=12 \fi
\parindent=\ttindent
@@ -1128,7 +1145,7 @@
\ifnum\tmpnum<\vidolines\space
\vireadline \penalty\ttpenalty \viprintline %% print line
\ifnum\vidolines=0 \else\advance\tmpnum by1 \fi \repeat
- \egroup\ttskip\testparB
+ \egroup\par\ttskip\testparB
}
\def\vireadline{\read\vifile to \tmp \global\advance\viline by1 }
\def\viprintline{\indent
@@ -1200,15 +1217,14 @@
%%%%%%%%%%%%%% \inspic -- sec. 3.20 in opmac-d.pdf
-\newdimen\picw \picw=0pt
+\newdimen\picwidth \picwidth=0pt \let\picw=\picwidth
+\newdimen\picheight \picheight=0pt
\ifpdftex
- \def\inspic #1 {\relax\ifdim\picw=0pt
- \opwarning{\noexpand\inspic -- the width \noexpand\picw is not set}%
- \else
- \hbox{\pdfximage width\picw {\picdir#1}\pdfrefximage\pdflastximage}%
- \fi
- }
+ \def\inspic #1 {\hbox{%
+ \pdfximage \ifdim\picwidth=0pt \else width\picwidth\fi
+ \ifdim\picheight=0pt \else height\picheight\fi {\picdir#1}%
+ \pdfrefximage\pdflastximage}}
\else
\def\inspic #1 {\opwarning
{The \noexpand\inspic is supported for PDF output only}}
@@ -1263,11 +1279,12 @@
\newcount\fnotenum \fnotenum=0
\newcount\fnotenumlocal
+\newif\iflocfnum \locfnumtrue
\def\fnote#1{\global\advance \fnotenum by1
- \leavevmode\openref\wref\Xfnote{}%
- \isdefined{fn:\the\fnotenum}\iftrue
- \else\opwarning{unknown \noexpand\fnote mark. TeX me again}\fi
+ \iflocfnum \leavevmode\openref\wref\Xfnote{}%
+ \isdefined{fn:\the\fnotenum}\iftrue
+ \else\opwarning{unknown \noexpand\fnote mark. TeX me again}\fi\fi
\fnmarkx{\typoscale[800/800]\vfootnote\fnmarkx{#1}}%
}
\def\fnotemark#1{{\advance\fnotenum by#1\relax
@@ -1275,7 +1292,7 @@
\else$^?$\opwarning{unknown \string\fnotemark. TeX me again}\fi}%
}
\def\fnotetext#1{\global\advance \fnotenum by1 \openref\wref\Xfnote{}%
- {\typoscale[800/800]\vfootnote\fnmarkx{#1}}
+ {\typoscale[800/800]\vfootnote\fnmarkx{#1}}%
}
\def\fnmarkx{\isdefined{fn:\the\fnotenum}\iftrue\thefnote\else$^?$\fi}
\def\thefnote{$^{\locfnum}$)}
@@ -1284,6 +1301,8 @@
\def\Xfnote{\advance\fnotenumlocal by1 \advance\fnotenum by1
\sxdef{fn:\the\fnotenum}{\the\fnotenumlocal}}
+\def\runningfnotes{\locfnumfalse\def\locfnum{\the\fnotenum}\def\fnmarkx{\thefnote}}
+
\newcount\mnotenum \mnotenum=0 % global counter of mnotes
\newdimen\mnoteskip \mnoteskip=0pt
@@ -1376,7 +1395,7 @@
\advance\bibnum by1
\wbib{#1}{\the\bibnum}%
\hangindent=\iindent
- \noindent \dest[cite:\the\bibnum]{1.2em}%
+ \noindent \def\tmpb{#1}\dest[cite:\the\bibnum]%
\indent \llap{[\the\bibnum] }\ignorespaces
}
\def\wbib#1#2{\edef\tmp{\wref\Xbib{{#1}{#2}}}%
@@ -1423,9 +1442,9 @@
\def\bibitem{\isnextchar[{\bibitemB}{\def\tmpa{}\bibitemC}}
\def\bibitemB[#1]{\def\tmpa{#1}\bibitemC}
\def\bibitemC#1{\bibitemD{#1}}
-\def\bibitemD#1{\ifnum\bibnum>0 \bibskip \fi
+\def\bibitemD#1{\par\ifnum\bibnum>0 \bibskip \fi
\advance\bibnum by1
- \noindent \dest[cite:\if$\tmpa$\the\bibnum\else\tmpa\fi]{1.2em}%
+ \noindent \def\tmpb{#1}\dest[cite:\if$\tmpa$\the\bibnum\else\tmpa\fi]%
\hangindent=\parindent
\if$\tmpa$\indent\llap{[\the\bibnum] }\wbib{#1}{\the\bibnum}%
\else [\tmpa]\wbib{#1}{\tmpa}\enskip
@@ -1436,7 +1455,7 @@
\immediate\write\auxfile{\string\citation{*}}%
\bgroup
\iindent=4em
- \def\bibitemC##1{\ifnum\bibnum>0 \bibskip \fi
+ \def\bibitemC##1{\par\ifnum\bibnum>0 \bibskip \fi
\advance\bibnum by1
\noindent \hangindent=\parindent
\indent \llap{[##1]\enspace}\ignorespaces
@@ -1489,7 +1508,7 @@
}
\def\doprotect#1{\let#1=\relax}
\addto\begoutput{\def\nl{ }}
-\def\prepage{\dest[pg:\the\pageno]{25pt}}
+\def\prepage{\def\destheight{25pt}\dest[pg:\the\pageno]}
{\catcode`\@=11
\gdef\pagecontents{\prepage % dest of pageno
@@ -1596,6 +1615,16 @@ Apr. 2013 \table in \table allowed, \catcode`\|=12 set in \table.
{\em text}\macro error corrected.
May 2013 \margins (2pages laylout) can be redefined by new \margins
\outlines use \pdfcatalog{/PageMode/UseOutlines}
+Jul. 2013 \fnotetext unwanted space - corrected
+ \picw=0pt prints picture in natural size, \picheight introduced
+ \isinlist corrected,
+ \othe\secnum in \secc removed
+ \dotocnum, \remskip, \reminsert introduced
+ \nonum, \notoc implemented
+ \destheight introduced
+ \runningfnotes introduced
+ \addto defined as \long
+ \iiskip, \ttskip, \bibskip precedes by \par
%%%%%%%%%%%%%% End of opmac.tex