r3tex

custom LuaTeX format
git clone git://git.rr3.xyz/r3tex
Log | Files | Refs | README | LICENSE

r3base.tex (4510B)


      1 \cs{input:r3base.tex}
      2 \cslet{input:r3base.tex}\endinput
      3 
      4 
      5 % Extra fonts
      6 \let\footset=\FSpnrutl
      7 \Fdef\footfont\footset10pt
      8 
      9 
     10 % Pararmeters
     11 \paper[letter]
     12 \hoffset=1.5in \voffset=1.5in % 1.5in margins
     13 \hsize=5.5in \vsize=7.9in
     14 \normalparindent=10pt \parindent=\normalparindent
     15 \normalparskip=0pt plus1pt \parskip=\normalparskip
     16 
     17 
     18 % Math spacing
     19 \newmuskip\tthinmuskip  \tthinmuskip=3mu
     20 \newmuskip\dthinmuskip  \dthinmuskip=3mu
     21 \newmuskip\tmedmuskip   \tmedmuskip=4mu plus 2mu minus 4mu
     22 \newmuskip\dmedmuskip   \dmedmuskip=4mu plus 2mu minus 2mu
     23 \newmuskip\tthickmuskip \tthickmuskip=6mu plus 4mu
     24 \newmuskip\dthickmuskip \dthickmuskip=10mu minus 3mu
     25 \def\textmath{%
     26 	\thinmuskip=\tthinmuskip
     27 	\medmuskip=\tmedmuskip
     28 	\thickmuskip=\tthickmuskip
     29 }
     30 \def\displaymath{%
     31 	\thinmuskip=\dthinmuskip
     32 	\medmuskip=\dmedmuskip
     33 	\thickmuskip=\dthickmuskip
     34 }
     35 % TODO: use event?
     36 \everymath={\textmath}
     37 \everydisplay={\displaymath}
     38 
     39 
     40 % Output
     41 \countdef\pageno=0 \pageno=1
     42 
     43 \newtoks\footline
     44 \footline={\hss\footfont\number\pageno\hss}
     45 \def\nopagenumbers{\footline={\hfil}}
     46 
     47 \output={\baseoutput}
     48 \def\baseoutput{%
     49 	\shipout\vbox{\pagebody\makefootline}%
     50 	\gincr\pageno
     51 }
     52 \def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \unvbox255}}
     53 \def\makefootline{\baselineskip=24pt \lineskiplimit=0pt \line{\the\footline}}
     54 
     55 
     56 % Sectioning
     57 % TODO consider moving to text.tex
     58 \newcount\@mpenalty \newif\if@mpenalty
     59 \def\mpenalty{\global\@mpenaltytrue \@mpenalty=}
     60 \def\@mvskip{%
     61 	\par
     62 	\ifdim\lastskip<\skipA
     63 		\removelastskip
     64 		\if@mpenalty \penalty\@mpenalty \fi
     65 		\vskip\skipA
     66 	\fi
     67 	\global\@mpenaltyfalse
     68 }
     69 \def\mvskip{\afterassignment\@mvskip \skipA=}
     70 \def\msmallskip{\mvskip\smallskipamount}
     71 \def\mmedskip{\mvskip\medskipamount}
     72 \def\mbigskip{\mvskip\bigskipamount}
     73 \def\removelastskip{\ifdim\lastskip=0pt \else \vskip-\lastskip \fi}
     74 
     75 
     76 % Lists
     77 \Lindent=0pt
     78 \Lmaxprotrusion=20pt
     79 \Llmargin=20pt
     80 \Ltopskip=\smallskipamount \Ltoppenalty=50
     81 \Lmidskip=\smallskipamount \Lmidpenalty=0
     82 \Lbotskip=\smallskipamount \Lbotpenalty=50
     83 
     84 \def\begol{\Lbegx{\f[r]\number\Lcnt.\enspace}}
     85 \def\endol{\Lend}
     86 
     87 \def\begolb{\Lbegx{\f[b]\number\Lcnt.\enspace}}
     88 \def\endolb{\Lend}
     89 
     90 \def\begul{\Lbegx{$\nosurround\bullet$\enspace}}
     91 \def\endul{\Lend}
     92 
     93 
     94 % Links
     95 
     96 \pdflinkmargin=.5pt
     97 \def\deflinkdoc[#1]{\pdfdest name {#1} xyz\relax}
     98 \def\linkdoc[#1]#2{%
     99 	\leavevmode
    100 	{\pdfstartlink goto name {#1}\relax#2\pdfendlink}%
    101 }
    102 \def\linkurl[#1]#2{%
    103 	\leavevmode
    104 	{\pdfstartlink user {%
    105 	   /Subtype/Link%
    106        /A<<%
    107          /Type/Action%
    108          /S/URI%
    109          /URI(#1)%
    110        >>%
    111 	}\relax#2\pdfendlink}%
    112 }
    113 
    114 \newread\labauxi
    115 \def\readlab{%
    116 	\openin\labauxi=lab.aux%
    117 	\beggroup
    118 		\def\\##1;##2;{\gcsdef{lab:##1}{##2}}%
    119 		\loop \unless\ifeof\labauxi
    120 			\read\labauxi to\do
    121 			\do
    122 		\repeat
    123 	\endgroup
    124 	\closein\labauxi
    125 }
    126 
    127 \newtoks\labname
    128 \newif\iflab \labfalse
    129 \def\lab[#1]{%
    130 	\global\labname={#1}%
    131 	\global\labtrue
    132 	\ignorespaces
    133 }
    134 
    135 \newwrite\labauxo
    136 \newif\iflabauxo \labauxofalse
    137 \def\deflab#1{%
    138 	\iflab
    139 		\xcsdef{lab:\the\labname}{#1}%
    140 		\deflinkdoc[\the\labname]%
    141 		\iflabauxo \else
    142 			\immediate\openout\labauxo=lab.aux%
    143 			\labauxotrue
    144 		\fi
    145 		\immediate\ea\write\ea\labauxo\ea{\ea\string\ea\\\the\labname;#1;}%
    146 		\global\labfalse
    147 	\fi
    148 }
    149 
    150 \def\unknownref{\hbox{\f[r]\Chex"CC1111??}}
    151 \def\ref[#1]{%
    152 	\ifcs lab:#1\endcs
    153 		\cs{lab:#1}%
    154 	\else
    155 		\unknownref
    156 	\fi
    157 }
    158 \def\sref[#1]{\linkdoc[sec.#1]{\char"A7 \ref[sec.#1]}}
    159 \newif\ifcreffirst
    160 \def\cref[#1]{[%
    161 	\creffirsttrue
    162 	\foreach#1,\do##1,{%
    163 		\ifcreffirst\else,\ \fi
    164 		\linkdoc[cite.##1]{\ref[cite.##1]}%
    165 		\creffirstfalse
    166 	}%
    167 ]}
    168 \def\href#1[#2]{\linkdoc[#2]{#1\ref[#2]}}
    169 \def\xref#1[#2]{\linkdoc[#2]{#1}}
    170 
    171 
    172 % Misc
    173 \def\slugbox{\hbox{\kern1.5pt\vrule width2.5pt height6pt depth1.5pt\kern1.5pt}}
    174 \def\slug{\unskip\nobreak\quad\slugbox}
    175 \def\pdfimg#1file #2.pdf{\pdfximage#1{#2.pdf}\pdfrefximage\pdflastximage}
    176 \def\eqref(#1){({\f[ro]#1})}
    177 \def\C{{\f[d]C}}
    178 \def\Q{{\f[d]Q}}
    179 \def\R{{\f[d]R}}
    180 \def\Z{{\f[d]Z}}
    181 \def\N{{\f[d]N}}
    182 \def\tbin#1{\nonscript\mskip\tmedmuskip{#1}\nonscript\mskip\tmedmuskip}
    183 \def\trel#1{\nonscript\mskip\tthickmuskip{#1}\nonscript\mskip\tthickmuskip}
    184 \def\dbin#1{\nonscript\mskip\dmedmuskip{#1}\nonscript\mskip\dmedmuskip}
    185 \def\drel#1{\nonscript\mskip\dthickmuskip{#1}\nonscript\mskip\dthickmuskip}
    186 \def\upto{\mathinner{\ldotp\ldotp}}
    187 
    188 % TeX logo modified for Palatino Nova
    189 \def\TeX{T\kern-.1667em\lower.4ex\hbox{E}\kern-.125emX}
    190 
    191 % \left and \right but the resulting atoms are open/close, not inner.
    192 \def\ml{\mathopen{}\mathclose\bgroup\left}
    193 \def\mr{\aftergroup\egroup\right}
    194 
    195 
    196 \endinput