% -*- TeX -*- % for yTeX % Michael A. Gennert % MICHAELG%OZ@MIT-MC % These macros generate IEEE style papers. They break each page into % 4 pieces, except for the first page, which is broken into 5. This % allows a paper to be created with the minimum amount of pasting onto % pages. The text of all pages is broken into quadrants, where each % quadrant is 4.25 inches wide by 5.75 inches long. Two quadrants are % pasted together to make a column and two columns pasted together to % make a page. The top two quadrants of the first page are shorter, % allowing space for the title piece. There are no headers nor % footers. Twocolumn mode may not be used (it is superfluous). % Glosses are not allowed. A typical paper looks like: % \input yTeX.ieee % \begintitlepage % \ctitle{yTeX.IEEE: A NEW MACRO PACKAGE} % \cauthor{Michael A. Gennert} % \caffiliation{Artificial Intelligence Laboratory\cr % Massachusetts Institute of Technology\cr % Cambridge, Massachusetts 02139\cr} % \endtitlepage % \section{Abstract} % This paper introduces a new macro package called yTeX.IEEE, for the % yTeX text formatter. And so on. % \section{1. Introduction} ... % There are new entries for the titlepage, \affiliation and % \caffiliation, that behave exactly like \author and \cauthor, except % that their font is \affiliationfont, defaulting to \regsize\rm. % \section underlines and centers the section title and numbers it. % \subsection underlines and places flush left. \subsubsection % underlines, indents, and then runs the text in. Each has its own % font, defaulting to \regsize\bf. % Footnotes cannot be used in the title page. They disappear if you try. % The \draft macro does not put the words draft anywhere now, since it % used to use glosses, which are disabled. But, it does give a rule % at the edge of overfull boxes, helpful for pointing out lines that % are too long. % The \ref macro makes references easier. Sample usage is % \ref{1} M.A. Gennert, ``yTeX.IEEE: A New Macro Package,'' % While yTeX is running, it prints the page numbers on the screen as % they are shipped out. Here, we use a convention for page numbers. % The title page is page 0. Other pages are of the form pq, where p % is the manuscript page (which of course never gets shipped out at % all), and q is the quadrant, from 1 to 4. Thus, the normal sequence % of page numbers on the screen will be [0], [1.1], ... [1.4], [2.1] ... \makeatletter % allow @ in macro names \offrunners % no runners at all % quadrants \countdef\quadrant=1 \quadrant=1 % Title page hacks. Titles cannot have footnotes. If you can make title % footnotes appear at the bottom of the first column of text, let me % know how you did it. Title should be 1.875 inches high and normal width. % main title pages %%% vsize 1.875 truein? \newelement\titlepage \setup \output={\ytextitlepageoutput} \above \below \begin \begintitlingpage \hsize=6.5truein \vsize=8truein \ymessage{{Title page}} \end \endgraf \endtitlingpage \global\vsize=8.625truein \endnew % title pages for sub-parts of a book, etc. \newelement\partpage \setup \ymessage{{No part titles allowed in IEEE format}} \above \below \begin \end \endnew % add spacing around elements of title \newtitle\title \box \vbottom \shape \titleleft{\z@}{\z@}% \font \the\titlefont \setup \begin \end \vskip .20truein plus .25truein minus .10truein \endnew \newtitle\ctitle \box \vbottom \shape \titlecenter{\z@}{\z@}% \font \the\titlefont \setup \begin \end \vskip .20truein plus .25truein minus .10truein \endnew \newtitle\author \box \vbottom \shape \titleleft{\z@}{\z@}% \font \the\authorfont \setup \begin \vskip .15truein plus .25truein minus .5truein \end \vskip .15truein plus .25truein minus .5truein \endnew \newtitle\cauthor \box \vbottom \shape \titlecenter{\z@}{\z@}% \font \the\authorfont \setup \begin \vskip .15truein plus .25truein minus .5truein \end \vskip .15truein plus .25truein minus .5truein \endnew % affiliation \newtoks\affiliationfont \newtitle\affiliation \box \vbottom \shape \titleleft{\z@}{\z@}% \font \the\affiliation \setup \begin \vskip .15truein plus .25truein minus .5truein \end \endnew \newtitle\caffiliation \box \vbottom \shape \titlecenter{\z@}{\z@}% \font \the\affiliationfont \setup \begin \vskip .15truein plus .25truein minus .5truein \end \endnew % fonts \affiliationfont={\regsize\rm} % title page output routine \def\ytextitlepageoutput {\pageno=0 % \shipout\vbox{% \hbox to6.5truein{% \hss \vbox to1.875truein{% \offinterlineskip \unvbox\@cclv }% end of contents \vbox \hss}% end of centering \hbox }% end of centering \vbox \ifnum\outputpenalty>-\@MM \else\dosupereject\fi \global\output={\ytexoutput}} % normal(?) output routine \def\ytexoutput {% \iftrimpages \trimp@ge\fi \setbox\@cclv=\vbox{\pagecontents} \setbox\z@=\vsplit\@cclv to 5.7truein \shipout\addpageno{\box\z@} \advancequadrant \shipout\addpageno{\box\@cclv} \advancequadrant \ifnum\quadrant=1\global\vsize=11.4truein\fi \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} % fancy quadrant increment scheme \def\advancequadrant{% \global\advance\quadrant by 1 \ifnum\quadrant>4 \global\advance\quadrant by -4 \global\advance\pageno by 1\fi} % add page number to bottom of output sheet \def\addpageno#1{% \vbox to 9truein{% \hbox to 6.5truein{#1\hss} \vskip 0pt plus 1filll \hbox to 6.5truein{\hss\number\pageno .\number\quadrant}}} % sections, subsections, subsubsections \newtitle\sectiontitle \box \vbottom \shape \titlecenter{\z@}{\z@} \font \the\sectionfont \setup \begin \end \endnew \newelement\section \setup \get@rg\endsection \sectionsetup \above \minbreak \presectionpenalty \abovesectionskip \below \dobreak \postsectionpenalty \belowsectionskip \vpar \begin \get@rg \end \ymessage{{Section: \the\toks@}}% \sectiontitle{\underbar{\the\toks@}}% \endnew \setskip\abovesectionskip \dimen 9pt \glue \parskip \factor 3000 \setskip\belowsectionskip \dimen 3pt \glue \parskip \factor 2000 \newtitle\subsectiontitle \box \vbottom \shape \titleleft{\z@}{\z@} \font \the\subsectionfont \setup \begin \end \endnew \newelement\subsection \setup \get@rg\endsubsection \above \minbreak \presectionpenalty \abovesectionskip \below \dobreak \postsectionpenalty \belowsectionskip \vpar \begin \get@rg \end \ymessage{{Subsection: \the\toks@}}% \subsectiontitle{\underbar{\the\toks@}}% \endnew \def\subsubsection#1{% \minbreak \presectionpenalty \abovesectionskip \underbar{{\the\subsubsectionfont #1}} \noindent} % subsection and subsubsection fonts \newtoks\subsectionfont \subsectionfont={\regsize\bf} \newtoks\subsubsectionfont \subsubsectionfont={\regsize\bf} % references are adjoint tagged paragraphs \def\ref#1{\atpar{[#1]}} % skip .5 inch after the abstract \def\abstractskip{\vskip .5truein} % first paragraph after a heading not flush left \vparfalse % footnotes have a rule along their entire length \def\footnoterule{\kern-3pt \hrule width \hsize \kern 2.6pt} % set page size \hsize=4.25truein \vsize=11.4truein % set proper spacing \baselinefactor={1.1}\setnormalbaselines % disallow @ elsewhere \makeatother