From 7e11015d204111a34c71bdd6cacec4ad26beac7c Mon Sep 17 00:00:00 2001
From: Sam Anthony <sam@samanthony.xyz>
Date: Mon, 12 Jan 2026 10:16:21 -0500
Subject: ibmres

---
 ibmres/ibmres.sty | 317 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 317 insertions(+)
 create mode 100644 ibmres/ibmres.sty

(limited to 'ibmres/ibmres.sty')

diff --git a/ibmres/ibmres.sty b/ibmres/ibmres.sty
new file mode 100644
index 0000000..def3d62
--- /dev/null
+++ b/ibmres/ibmres.sty
@@ -0,0 +1,317 @@
+%                                                              10/08/93 %
+% IBM resume style file, /pub/ibmres-tex/ibmres.sty                     %
+% George B. Leeman, Jr., leeman@watson.ibm.com.                         %
+% Please read /pub/README.FTP on software.watson.ibm.com before using   %
+% this file.  Documentation for using this file is in                   %
+% /pub/ibmres-tex/ibmres.ltx.                                           %
+%=======================================================================%
+% The next 140 lines are the RESUME.STY file of Stephen Gildea, with    %
+% enhancements by Jerry Leichter and George B. Leeman, Jr.              %
+ % This style option is designed to work with the article document
+ % style of LaTeX version 2.09.  Use
+ % \documentstyle[resume]{article}
+ 
+ % Copyright (c) 1987 by Stephen Gildea
+ % Permission to copy all or part of this work is granted, provided
+ % that the copies are not made or distributed for resale, and that
+ % the copyright notice and this notice are retained.
+ %
+ % THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
+ % WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+ % INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+ % FOR ANY PARTICULAR PURPOSE.
+ 
+ % If you make any improvements, I'd like to hear about them.
+ 
+ % Stephen Gildea
+ % MIT Earth Resources Lab
+ % Cambridge, Mass. 02139
+ % mit-erl!gildea
+ % gildea@erl.mit.edu
+ 
+ % 23 May 87 version 1
+ % 08 Jun 88 center single \address lines
+ % 02 Sep 88 enhancement to \employer from Jerry Leichter
+ %          LEICHTER-JERRY@cs.yale.edu or <LEICHTER@Venus.YCC.Yale.Edu>
+ % 08 Mar 89 allow \\ in \sectiontitle to make multi-line titles
+ 
+ \topmargin 0pt
+ \headheight 0pt
+ \headsep 0pt
+ \textheight 9.0in
+ \pagestyle{empty}
+ \parindent 0pt
+ \parskip \baselineskip
+ \topmargin 0in
+ \oddsidemargin -0.1in % was 0in
+ \evensidemargin 0in
+ \textwidth 6.55in % was 6.5in
+ 
+ \setcounter{secnumdepth}{0}
+ 
+ % use this to print your name at the top of the page
+ \def\name#1{{\large\bf\centering#1\\[2\baselineskip]}\ignorespaces}
+ 
+ % one address
+ \def\address#1{{\centering #1\par}}
+ 
+ % two addresses (say, home and work).  They get printed side by side
+\def\addresses#1#2{\hbox to \hsize{\@tablebox{#1}\hfil\@tablebox{#2}}}
+ 
+ % CC: [t] stands for align on top row; {@{}l@{}} indicates
+ % that there is one entry that should be aligned to the left and
+ % surrounded by two blank spaces.
+ % Another example is in ieeeconf.sty, where we have
+ % \def\author#1#2{\begin{tabular}[t]{c@{\extracolsep{8em}}c}#1&#2\end{tabular}}
+ \def\@tablebox#1{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}}
+ 
+ % CC: \newbox reserves a register of type box for  \@title (p. 244)
+ \newbox\@title
+ 
+ % Most of the resume goes inside a llist environment.  Within it, use
+ % the \sectiontitle{title} command to begin new sections.  The title
+ % of the section is put in the left margin.  The section text begins
+ % on the next line if the sectiontitle is too long.
+ %
+ % CC: (1) \begin{list}{default_label}{\labelwidth \leftmargin \labelsep
+ % \rightmargin \topsep \parsep \parskip \itemsep \parsep} \item_list
+ % \end{list} are latex commands (see pp.112--115 and p.165--166)
+ % CC: (2) \newenvironment{command_name}[args]{begin_definition}{end_definition}
+ % Modification by George B. Leeman: next line to change left margin width, then
+ % change width accordingly in llist environment.  Also add a multiple
+ % line section title (mlsectiontitle) which allows multiple lines
+ % inside items, formatting them to the proper width.
+ \newlength\leftmarginwidth     \setlength\leftmarginwidth{1 in}
+ \newenvironment{llist}{%
+%\begin{list}{}{\setlength\labelwidth{1in}%
+ \begin{list}{}{\setlength\labelwidth{\the\leftmarginwidth}%
+  \setlength\leftmargin{\labelwidth}
+  \addtolength\leftmargin{\labelsep}
+  \itemsep 5pt plus 2pt minus 2pt
+  \parsep 10pt plus 2pt minus 2pt
+ %
+ % Set the depth of the title to 0 in case more than one line.
+ % CC: \copy<register> produces a copy of box register <register>.
+ % This command is useful when you want to retrieve the contents of a box
+ % but don't want to destroy the contents.
+ \def\sectiontitle##1{\setbox\@title=\hbox{{\bf\@tablebox{##1}}}\dp\@title=0pt
+   \item[\copy\@title]%
+ % If the title takes more lines than the body, you lose.
+ % \ifdim\wd\@title>\labelwidth \leavevmode \\* \else \fi}
+ % CC: Because for sectiontitiles with \wd\@title>\labelwidth, we always
+ % have \item following them, we do not need an extra line
+  \ifdim\wd\@title>\labelwidth \leavevmode \else \fi} %end of sectiontitle
+% \def\mlsectiontitle##1{\setbox\@title=\hbox{\@tablebox{##1}}\dp\@title=0 pt
+%   \item[\copy\@title]}
+  \def\mlsectiontitle##1{\setbox\@title=\hbox{\@tablebox{
+    \parbox[t]{\leftmarginwidth}{\raggedright##1}}}\dp\@title=0 pt
+    \item[\copy\@title]}
+ \def\makelabel##1{##1\hfill} } }{\end{list}}
+ 
+ % like itemize but bullets are at the left margin
+ \newenvironment{items}{%
+  \begin{list}{$\bullet$}{\setlength\labelwidth{.5em}\setlength\leftmargin{1em}
+ % CC: new formats added by me :-)
+   \parsep 0pt \parskip 0pt \topsep 1pt %\partopsep -2pt
+   \def\makelabel##1{##1\hfill}}}{\end{list}}
+ 
+ % Use the \employer and \location commands to print the names and
+ % cities of your employers.
+ % \employer always starts a new paragraph, and should be followed by
+ % \location, because no \par after \employer
+ %
+ % \employer* is like \employer but is used for additional information
+ % about the employer.  It does NOT start a new paragraph, must
+ % NOT be followed by \location, and always forces a new line after itself.
+ \def\employer{\@ifstar{\@semployer}{\@employer}}
+ %\def\@employer#1{\par{\sc #1}}
+ \def\@employer#1{{\sc #1}}
+ \def\@semployer#1{{\sc #1}\\}
+ % CC: used when the next environment is \begin{items} \end{items}
+ \def\lastemployer#1{{\sc #1}}
+ 
+ % The location is always flush right.  It is moved to the next
+ % line if there is not room left on this one.
+ % See the TeXbook Chapter 14.
+ % CC: \penalty<number> produces a penality item. A penality of 10000
+ % discourages (prevents) a break, while a penality of -10000 forces
+ % a break. \finalhyphendemerits<number>: increasing <number> has
+ % the effect of discouraging TEX from ending the nect ot the last line
+ % with a hyphen.
+ \def\location#1{{\unskip\nobreak\hfill\penalty50\hskip2em
+   \hbox{}\nobreak\hfill \hbox{#1}\finalhyphendemerits=0 \\}}
+ 
+ % This prints the date flush left.
+ % The major shortcoming of this file:
+ % There needs to be an option to print the date in the left margin,
+ % because many people like to do it that way.
+% \def\dates#1{#1\\[2pt]}
+% End of RESUME.STY file.                                               %
+%=======================================================================%
+% Additions by George B. Leeman, Jr., October 22, 1992.                 %
+%                                                                       %
+% New ifs, boxes, dimens, lengths, tokens.                              %
+\newif\if@nocoverletter
+\newbox\@onebox
+\newbox\@oneline
+\newdimen\@closingwidth
+\newdimen\@iwidth
+\newdimen\@longindentation
+\newdimen\@remainder
+\newlength{\@fwidth}
+\newlength{\@oneaddresssize}
+\newlength{\@twoaddresssize}
+\newtoks\@tempone
+\newtoks\@temptwo
+% Macro definitions, in alphabetical order.                             %
+\def\abstracts#1{\newpage\pagestyle{empty}%
+  \centerline{{\bf Selected Abstracts}}\vskip 5 ex}
+\long\def\@append#1\to#2{\@tempone=\expandafter{#1}\@temptwo=\expandafter{#2}%
+  \edef#2{\the\@temptwo\the\@tempone}}
+\def\availabledate#1{\hbox to \hsize{\@tablebox{{\bf Present Status: }%
+  \@presentstatustext\\{\bf Type of Position Desired: }%
+  \@typeofpositiondesiredtext}\hfil
+  \@tablebox{{\bf Immigration Status: }\@immigrationstatustext\\%
+    {\bf Available Date: }#1}}\ignorespaces}
+\def\cc#1{\if@nocoverletter\relax\else\@docc{#1}\fi\ignorespaces}
+\def\closing#1{\if@nocoverletter\relax\else\@setclosing#1\0\fi}
+\def\coverletter#1{\end{llist}\@ifnull{#1}\@nocoverlettertrue
+  \else\def\@returnaddress{{\ignorespaces#1}}\@makeuniv#1\\\0\fi}
+\def\degree#1{\def\@degreetext{\ignorespaces#1}}
+\def\degreeyear0#1{\ignorespaces}
+\def\discipline0#1{\ignorespaces}
+\def\@docc#1{\@ifnull{#1}\relax\else\par\noindent\parbox[t]{\textwidth}%
+  {\@hangfrom{\rm cc: }\ignorespaces #1\strut}\par\fi}
+\def\@doencl#1{\@ifnull{#1}\relax\else\par\noindent\parbox[t]{\textwidth}%
+  {\@hangfrom{\rm encl: }\ignorespaces #1\strut}\par\fi}
+\def\education{\sectiontitle{Education}}
+\def\email#1{\def\emailtext{}\@ifnull{#1}\relax\else\def\emailtext{\\#1}\fi
+  \ignorespaces}
+\def\employerspecificdata#1{\@ifnull{#1}\relax
+  \else{\hbox to \hsize{\@tablebox{{\bf \@employerspecifictext: }#1}}}\fi
+  \ignorespaces}
+\def\employerspecifictitle#1{\@ifnull{#1}\relax
+  \else\def\@employerspecifictext{\ignorespaces#1}\fi\ignorespaces}
+\def\employment{\sectiontitle{Employment}}
+\def\encl#1{\if@nocoverletter\relax\else\@doencl{#1}\fi}
+\def\gpa#1{\@ifnull{#1}\def\@gpatext{ {\em no GPA.}}%
+  \else\def\@gpatext{ {\em GPA: }\ignorespaces#1}\fi}
+\def\highestdegree0#1{\ignorespaces}
+\def\homeaddressandphone#1{\@newsize\@twoaddresssize{\bf Home Address}\\#1\\\0%
+  \def\saveaddress{}\@setlineend\saveaddress{\bf Home Address}\\#1\\\0%
+  \addresses{\saveworkaddress}%
+    {\parbox[t]{\@fwidth}{\raggedright\saveaddress}}%
+  \vskip 4 ex\ignorespaces}
+\def\honors#1{\sectiontitle{Honors}#1\par}
+\def\@ifnull#1{\def\temp{#1}\ifx\temp\empty}
+\def\immigrationstatus#1{\def\@immigrationstatustext{\ignorespaces#1}%
+  \ignorespaces}
+\long\def\letterbody#1{\if@nocoverletter\relax\else#1\par\fi}
+\def\letterlabel{\if@nocoverletter\ignorespaces
+  \else\newpage\thispagestyle{empty}\hbox{\vrule\vbox{\hrule\kern6truept
+      \hbox{\kern6truept\vbox to 2truein{\hsize=\@longindentation
+          {\smallheadfont\baselineskip9truept\@savename\\\@returnaddress\par}
+          \vfill\moveright 2truein\vbox{\raggedright\hsize=\@longindentation
+            \everypar{\hangindent 1 em}\rm\@receiveraddress}\vfill}%
+        \kern6truept}\kern6truept\hrule}\vrule}
+  \setcounter{page}{0}\newpage\fi}
+\def\@makeletterhead{\setcounter{page}{0}\newpage
+  \setlength{\textwidth}{6.25 truein}\hsize=6.25 truein
+  \def\ps@empty{\let\@mkboth\@gobbletwo\def\@oddhead{}\def\@oddfoot{}%
+    \def\@evenhead{}\def\@evenfoot{}\headsep 0 pt\headheight 0 pt
+    \textheight 9 in}%
+  \parindent=0 pt\parskip=0 pt\headsep 6 ex\headheight 12 pt
+  \addtolength{\textheight}{-6 ex}\addtolength{\textheight}{-12 pt}\raggedbottom
+  \interlinepenalty=1000 \pagestyle{myheadings}%
+  \markright{{\rm To: \@savereceiver\hfill\today\hfill Page }}%
+  \@longindentation=4 truein\@remainder=2.25 truein\thispagestyle{empty}
+  \font\smallheadfont=cmr8 at 8 truept\font\largeheadfont=cmr10 at 14.4 truept
+  \hbox{\largeheadfont\@saveuniversity\hfil}\hbox{\smallheadfont\@secondline}%
+  \vskip 2 truept\hrule\vskip 4 truept\hspace*{\@longindentation}%
+  \parbox{\@remainder}{\baselineskip 9 truept\smallheadfont\@sendingaddress\par}
+  \par\vspace{\bigskipamount}\vspace{\bigskipamount}\hspace*{\@longindentation}%
+  \rm\today\par\vspace{\bigskipamount}\@receiveraddress\par
+  \vspace{\bigskipamount}}
+\def\@makename#1\\#2\0{\def\@savename{{\ignorespaces#1}}}
+\def\@makereceiver#1\\#2\0{\def\@savereceiver{{\ignorespaces#1}}}
+\def\@makeuniv#1\\#2\0{\def\@saveuniversity{{\ignorespaces#1}}\@setsecond#2\\\0}
+\def\miscellaneous#1{\sectiontitle{Miscellaneous}#1\par}
+\def\@newsize#1#2\\#3\0{\@iwidth=#1\advance\@iwidth by -1 em
+  \global\setbox\@onebox
+    \vbox{\hsize=#1\parshape=2 0 pt #1 0 pt\the\@iwidth\raggedright#2\par}%
+  \loop
+    \global\setbox\@onebox
+      \vbox{\unvbox\@onebox\global\setbox\@oneline\lastbox\unskip\unpenalty}%
+    \global\setbox\@oneline\hbox{\unhbox\@oneline\unskip}%
+    \global\@iwidth=\wd\@oneline
+    \ifdim\ht\@onebox>0 pt
+      \advance\@iwidth by 1 em
+      \ifdim\@fwidth<\the\@iwidth\global\@fwidth=\the\@iwidth\fi
+    \repeat
+  \ifdim\@fwidth<\the\@iwidth\global\@fwidth=\the\@iwidth\fi
+  \@ifnull{#3}\relax\else\@newsize\@twoaddresssize#3\0\fi}
+\def\objective#1{\begin{llist}\sectiontitle{Objective}#1\par}
+\def\oneaddressandphone#1{\@newsize\@oneaddresssize#1\emailtext\\\0%
+  \def\saveaddress{}\@setlineend\saveaddress#1\emailtext\\\0%
+  \def\addressbox{\raggedright\saveaddress}%
+  \address{\parbox[t]{\@fwidth}{\addressbox}}\vskip 5 ex}
+\def\outof#1{\@ifnull{#1}\def\@outoftext{}
+  \else\def\@outoftext{ out of \ignorespaces#1.}\fi\@degreetext\@gpatext
+  \@outoftext\par}
+\def\place{\employer}
+\def\preferredtitle0#1{\ignorespaces}
+\def\presentstatus#1{\def\@presentstatustext{\ignorespaces#1}\ignorespaces}
+\def\ps#1{\if@nocoverletter\relax\else\ignorespaces#1\par\@startbreaks\fi
+  \ignorespaces}
+\def\publications#1{\sectiontitle{Publications}#1\par}
+\def\@receiveraddress{}
+\def\recipient#1{\if@nocoverletter\relax
+  \else\def\@receiveraddress{\ignorespaces#1}\@makereceiver#1\\\0\@makeletterhead
+  \fi}
+\def\referenceemail#1{\@reftext\@ifnull{#1}\else{ \em Email: }#1\fi\par}
+\def\referencename#1{\def\@reftext{\ignorespaces#1}}
+\def\references{\sectiontitle{References}}
+\def\@returnaddress{}
+\def\rightlines#1{\if@nocoverletter\relax\else\def\@sendingaddress
+  {\ignorespaces#1}\@makename#1\\\0\fi}
+\def\@savename{}
+\def\@savereceiver{}
+\def\@saveuniversity{}
+\def\school0#1{\ignorespaces}
+\def\@secondline{}
+\def\@sendingaddress{}
+\long\def\@setclosing#1\\#2\0{\par\nobreak\bigskip\@stopbreaks\noindent
+  \hspace*{\@longindentation}\@closingwidth=\textwidth
+  \advance\@closingwidth -\@longindentation
+  \parbox{\@closingwidth}{\raggedright\ignorespaces #1\\[6\medskipamount]
+    #2\strut}\par}
+\def\@setcommas#1\\#2\0{\@ifnull{#1}\relax
+  \else\@append{, {\ignorespaces #1}}\to\@secondline\@setcommas#2\0\fi}
+\long\def\@setlineend#1#2\\#3\0{%
+  \@append{{\ignorespaces#2}\hangindent=1 em \par}\to#1%
+  \@ifnull{#3}\relax\else\@setlineend#1#3\0\fi}
+\def\@setsecond#1\\#2\0{\@ifnull{#1}\relax
+  \else\def\@secondline{\ignorespaces #1}\@setcommas#2\\\0\fi}
+\def\skills#1{\sectiontitle{Skills}#1\par}
+\def\@startbreaks{\let\\=\@normalcr\interlinepenalty 200
+  \def\par{\@@par\penalty 200 \relax}}
+\def\@stopbreaks{\interlinepenalty \@M \def\par{\@@par\nobreak}\let\\=\@nobreakcr
+  \let\vspace\@nobreakvspace}
+\long\def\text#1{\ignorespaces#1\par}
+\def\typeofpositiondesired#1{\def\@typeofpositiondesiredtext{\ignorespaces#1}%
+  \ignorespaces}
+\def\when#1{\mlsectiontitle{#1}}
+\def\workaddressandphone#1{\def\workaddress{}%
+% \@setlineend\workaddress{\bf Work Address}\\#1\emailtext\\\0\noindent
+  \@setlineend\workaddress{\bf Work Address}\\#1\emailtext\\\0%
+  \def\saveworkaddress{{\parbox[t]{\@twoaddresssize}{\raggedright\workaddress}}}%
+  \ignorespaces}
+% Initialize various dimensions.
+\setlength{\@oneaddresssize}{\textwidth}
+\addtolength{\@oneaddresssize}{-2 in}
+\setlength{\@twoaddresssize}{\textwidth}
+\addtolength{\@twoaddresssize}{-1 in}
+\addtolength{\@twoaddresssize}{-0.5 \@twoaddresssize}
+\setlength{\@fwidth}{-1 pt}
+\settowidth{\leftmarginwidth}{\bf Miscellaneous}
+\addtolength{\leftmarginwidth}{1 em}
-- 
cgit v1.2.3

