commit 5502f423db4815a726e358601ba80b8c0b88a703 Author: Joseph Timothy Foley Date: Wed Sep 14 13:37:23 2022 +0000 Migrating from old repo https://repository.cs.ru.is/svn/foley-publish/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..195fcee --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +~* +*~ +auto/* +*.bcf +*.blg +*.log +*.out +*.run.xml +*.aux \ No newline at end of file diff --git a/cv-reference-test.tex b/cv-reference-test.tex new file mode 100644 index 0000000..390b533 --- /dev/null +++ b/cv-reference-test.tex @@ -0,0 +1,18 @@ +\documentclass{article} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} % allows UTF encoding, needed for Icelandic characters +\usepackage[backend=biber, bibencoding=utf8, style=apa]{biblatex} +\usepackage[american]{babel} +\DeclareLanguageMapping{american}{american-apa} % after biblatex and babel +\addbibresource{references.bib} + +\begin{document} +\nocite{*} + +\printbibliography{} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/cv.txt b/cv.txt new file mode 100644 index 0000000..7a9d649 --- /dev/null +++ b/cv.txt @@ -0,0 +1,38 @@ +2.739J - ereceipts: + +2.812 - System Analysis and Design of the +Insight M3/M5 Tactical Illuminator. Vince E. Carballo, Miguesl A. Chavez, Joe Foley. + +2.890 Wireless Friends: Company Business Plan. Sofy Tarud, Joe Foley, Oscar Lopez, Omri Pedatzur + +6.857 Flingetty: Secure Multiparty Computation for a Dating Match-Up System + +6.871 Automotive Diagnosis Assistant + +@MASTERSTHESIS{foley99microwave, + author = {Joseph Timothy Foley}, + title = {An Infrastructure for Electromechanical Appliances on the Internet}, + tablabel = {foley MEng Thesis}, + school = {Massachusetts Institute of Technology}, + year = {1999}, + address = {Cambridge, MA 02139}, + month = may +} + +@ARTICLE{foley03klite, + author = {Joseph Timothy Foley}, + title = {KLite: A RFID Tag Anti-Counterfeit System}, + tablabel = {KLite}, + journal = {AutoID Center}, + year = 2003, + month = nov, +} + +@ARTICLE{foley03trackntrace, + author = {Joseph Timothy Foley}, + title = {EPC Reductionism}, + tablabel = {EPC Reductionism}, + journal = {AutoID Center}, + year = 2003, + month = nov, +} diff --git a/embeddedcv.cls b/embeddedcv.cls new file mode 100644 index 0000000..887794d --- /dev/null +++ b/embeddedcv.cls @@ -0,0 +1,232 @@ +%% --------------------------------------------------------------------------------------------- +%% LaTeX ModernCV stripped down version for embedding in proposals +%% --------------------------------------------------------------------------------------------- +%% Initial version by Joe Foley +%% Questions, comments, complaints: latex@LIST.RU.IS +%% Created on 2015-02-27 +%% This code is distributed under the Perl Artistic License +%% http://language.per.com/misc/Artistic.html +%% This template is heavily derived from the RUCSMSc.sty developed by Bjorn Thor Jonsson, bjorn@ru.is +%% +%% Reference for class/package writers +%% http://ctan.uib.no/macros/latex/doc/clsguide.pdf +%% + +\newcommand{\fileversion@embeddedcv}{Rev 1} +\newcommand{\filedate@embeddedcv}{2016/03/05}% must be YYYY/MM/DD! +\newcommand{\fileauthor@embeddedcv}{Joseph Timothy Foley, foley at R U dot I S} + +\ProvidesClass{embeddedcv}[\filedate@embeddedcv by \fileauthor@embeddedcv] +\NeedsTeXFormat{LaTeX2e} +\typeout{Embedded CV Class \fileversion@embeddedcv <\filedate@embeddedcv>, by \fileauthor@embeddedcv} + +%% ---------------- Critical packages ----------------------------- +% This package allows you to create conditionals on booleans +\RequirePackage{ifthen} + +% detect pdflatex vs latex +\RequirePackage{ifpdf} + +%% XeTeX can allow for nicer fonts, but we really don't need it +%% Because we use standard fonts to be consistent +%% Doing the XeTeX tests causes AUCTex to keep asking if you want XeTeX, which is annoying +%\RequirePackage{ifxetex} + +%% Morewrites packages allows more programs to generate external files +%% because there is an internal limit +%% Needed if you get a "No room for a new \write" error +%% Unfortunately, it appears to be incompatible with DropBox. Bug filed with developed 2016-2-17 --foley +%\RequirePackage{morewrites} + +%% Command to remove things if we are draft mode +\RequirePackage{ifdraft} + +% ignore warnings and errors temporarily +%\RequirePackage{silence} + +%% LaTeX3 +%% Some of this may already be included as a dependancy from another package +% Better handling of arguments, particularly for defaults +\RequirePackage{xargs} + +% Specialized commands for constructing macros +\RequirePackage{xparse} + +%% ---------------- Execution of Options ----------------------------- +\ProcessOptions\relax% this stops searching for a * in + % \ProcessOtions* + +%% Alternative way to subclass. Disable the other option processing +%% if you enable it. This will dump all options onto the parent class +%\ProcessOptions\LoadClassWithOptions{article} +%% Read page 20 of http://latex-project.org/guides/clsguide.pdf +%% carefully before modifying any of the execution and previous section. +%% ---------------- Package Loading ----------------------------- +\LoadClass{article} % our parent class. + +%% ---------------- XeTeX setup ----------------------------- +%% Embedding is often needed in MS Word documents, so we need XeTeX +%\ifxetex% + \RequirePackage{fontspec} % font selecting commands + \RequirePackage{xunicode} % unicode character macros + \RequirePackage{xltxtra} % a few fixes and extras +%\else % pdftex or latex +% \RequirePackage[T1]{fontenc} +% \RequirePackage[utf8]{inputenc} % allows UTF encoding, needed for Icelandic characters +%\fi + +%% ---------------- Internationalization ----------------------------- +%\RequirePackage[autostyle,strict]{csquotes} +%% http://mirrors.concertpass.com/tex-archive/macros/latex/contrib/csquotes/csquotes.pdf +%% You invoke with \enquote{} and \blockquote{} +%% csquotes must be loaded before babel for AUCTeX +%% autostyle: update style as language changes in document +%% strict: any warnings become errors +%\DeclareQuoteAlias{german}{icelandic} +%% Unfortunately, csquotes does not understand Icelandic quotation marks +%% so we must create an alias. German is close enough. + +%\@nameuse{RequirePackage}[english,german,icelandic]{babel} +%% Babel allows various automatic text to be in selected languages +%% But to use the options, you have to always load it, even for english +%% The languages must be specified in order. + +%% We load german because it seems to be needed for the special Icelandic quotation marks. +%% Smart quotation marks +%% The \@nameuse magic is to prevent AUCTeX from using the semi-broken icelandic mode. +%% If you don't have a keyboard to type the Icelandic characters, there are macros: +%% "` or \glqq (startquote) +%% "' or \grqq (endquote) +%% \TH Þ +%% \th þ +%% \DH Ð +%% \dh ð +%% + +% set language based upon the class setting +% \newcommand{\resetlanguage}{% +% \ifthenelse{\boolean{icelandic}}% +% {\selectlanguage{icelandic}}% +% {\selectlanguage{english}}}% +% \resetlanguage{} + +\RequirePackage{iflang} +%% iflang allows us to put multiple translations together +%% e.g. \IfLanguageName{icelandic}{Já}{Yes} + + +\RequirePackage{etoolbox} +\RequirePackage{ifthen} +\RequirePackage{xcolor} +\RequirePackage{url} +\RequirePackage{graphicx} +\RequirePackage{fancyhdr} +%\RequirePackage{tweaklist} +% Definition of "description" causes conflicts, weird. +\RequirePackage{calc} + + +%% XeLaTeX needed!! +%\setmainfont[Mapping=tex-text]{Arial} +\setmainfont[Mapping=tex-text]{Times New Roman} + + +\usepackage[margin=10mm]{geometry} + + +\definecolor{myblue}{rgb}{0,0,0.5} +\newcommand{\bluerule}{\textcolor{myblue}{\hrule}\vspace{\baselineskip}} +\newcommand*{\listitemsymbol}{{\fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}}} +\newcommand*{\hintfont}{\small\sffamily} + +% length used by the moderncv layout +% quote length +\newlength{\quotewidth} +% section lengths +\newlength{\hintscolumnwidth} +\newlength{\separatorcolumnwidth} +\setlength{\separatorcolumnwidth}{0.025\textwidth} +\newlength{\maincolumnwidth} +% doubleitem lengths +\newlength{\doubleitemmaincolumnwidth} +% listitem lengths +\newlength{\listitemsymbolwidth} +\settowidth{\listitemsymbolwidth}{\listitemsymbol{}~} +\newlength{\listitemmaincolumnwidth} +% listdoubleitem lengths +\newlength{\listdoubleitemmaincolumnwidth} +% recompute all the lengths that depends on the text width +\newcommand*{\recomputethemelengths}{} +\newcommand*{\recomputelengths}{% + \setlength{\quotewidth}{0.65\textwidth}% + % main lenghts + \setlength{\maincolumnwidth}{\textwidth}% + \addtolength{\maincolumnwidth}{-\separatorcolumnwidth}% + \addtolength{\maincolumnwidth}{-\hintscolumnwidth}% + % listitem lengths + \setlength{\listitemmaincolumnwidth}{\maincolumnwidth}% + \addtolength{\listitemmaincolumnwidth}{-\listitemsymbolwidth}% + % doubleitem lengths + \setlength{\doubleitemmaincolumnwidth}{\maincolumnwidth}% + \addtolength{\doubleitemmaincolumnwidth}{-\hintscolumnwidth}% + \addtolength{\doubleitemmaincolumnwidth}{-\separatorcolumnwidth}% + \setlength{\doubleitemmaincolumnwidth}{0.5\doubleitemmaincolumnwidth}% + % listdoubleitem lengths + \setlength{\listdoubleitemmaincolumnwidth}{\maincolumnwidth}% + \addtolength{\listdoubleitemmaincolumnwidth}{-\listitemsymbolwidth}% + \setlength{\listdoubleitemmaincolumnwidth}{0.475\listdoubleitemmaincolumnwidth}% + % fancyhdr lengths + \renewcommand{\headwidth}{\textwidth}% + \recomputethemelengths} +\setlength{\hintscolumnwidth}{0.15\textwidth} +\recomputelengths + + +% usage: \cvline{margintext}{linetext} +\newcommand*{\cvline}[3][.25em]{% + \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}% + \raggedleft\hintfont{#2} &{#3}% + \end{tabular}\\[#1]} + +% usage: \cvdoubleitem{subtitle}{text}{subtitle}{text} +\newcommand*{\cvdoubleitem}[4]{% + \cvline{#1}{\begin{minipage}[t]{\doubleitemmaincolumnwidth}#2\end{minipage}% + \hfill% + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintfont{#3}\end{minipage}\hspace*{\separatorcolumnwidth}\begin{minipage}[t]{\doubleitemmaincolumnwidth}#4\end{minipage}}} + +% usage: \cventry{years}{degree/job title}{institution/employer}{localization}{optionnal: grade/...}{optional: comment/job description} +\newcommand*{\cventry}[6]{% + \cvline{#1}{% + {\bfseries#2}% + \ifthenelse{\equal{#3}{}}{}{, {\slshape#3}}% + \ifthenelse{\equal{#4}{}}{}{, #4}% + \ifthenelse{\equal{#5}{}}{}{, #5}% + .% + \ifx&% + \else{\newline{}\begin{minipage}[t]{\linewidth}\small#6\end{minipage}}\fi% + }}% +\newcommand*{\cvitem}[2]{\cvline{#1}{#2}} + +% usage (inside 'language' cvsection environment): \cvlanguage{name}{level}{comment} +\newcommand*{\cvlanguage}[3]{% + \cvline{#1}{\begin{minipage}[t]{.225\maincolumnwidth}\textbf{#2}\end{minipage}\hfill\begin{minipage}[t]{0.725\maincolumnwidth}\raggedleft\footnotesize\itshape #3\end{minipage}}} + +% usage: \cvlistdoubleitem[symbol]{point1}{point2} +\newcommand*{\cvlistdoubleitem}[3][\listitemsymbol{}]{% + \cvline[0pt]{}{#1~\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#2\end{minipage}% + \hfill% + \ifthenelse{\equal{#3}{}}% + {}% + {#1~\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#3\end{minipage}}}} + +% usage (inside 'computer skills' cvsection environment): \cvcomputer{category}{programs}{category}{programs} +\newcommand*{\cvcomputer}[4]{% + \cvdoubleitem{#1}{\small#2}{#3}{\small#4}} + +%% Some commands so that we can use the same .tex file as a full CV +%% Disabled because they are before \begin{document} +\newcommand{\firstname}[1]{} +\newcommand{\familyname}[1]{} +\newcommand{\address}[2]{} +\newcommand{\phone}[1]{} +\newcommand{\email}[1]{} diff --git a/etoolbox.sty b/etoolbox.sty new file mode 100644 index 0000000..d50e739 --- /dev/null +++ b/etoolbox.sty @@ -0,0 +1,1708 @@ +% $Id$ + +% Copyright (c) 2007-2011 Philipp Lehman. +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3. +% +% The LPPL maintenance status of this software is +% 'author-maintained'. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. + +\def\etb@rcsid$#1: #2 #3 #4 #5${#4 v#3} + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{etoolbox} +[\etb@rcsid $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ + e-TeX tools for LaTeX] + +\begingroup +\@ifundefined{eTeXversion} + {\PackageError{etoolbox} + {Not running under e-TeX} + {This package requires e-TeX. Try compiling the document + with\MessageBreak 'elatex' instead of 'latex'. When using + pdfTeX, try 'pdfelatex'\MessageBreak instead of 'pdflatex'. + This is a fatal error. I'm aborting now.}% + \aftergroup\endinput} + {} +\endgroup + +\RequirePackage{etex} + +\def\etb@catcodes{\do\&\do\|\do\:\do\-\do\=\do\<\do\>} +\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} +\edef\etb@catcodes{\etb@catcodes} +\let\do\noexpand +\AtEndOfPackage{\etb@catcodes\undef\etb@catcodes} + +\catcode`\&=3 +\catcode`\|=3 +\@makeother\: +\@makeother\- +\@makeother\= +\@makeother\< +\@makeother\> + +\protected\def\etb@error{\PackageError{etoolbox}} +\protected\def\etb@warning{\PackageWarning{etoolbox}} +\protected\def\etb@info{\PackageInfo{etoolbox}} +\newcount\etb@tempcnta + +% {}[][]{} + +\newcommand*{\newrobustcmd}{} +\protected\def\newrobustcmd{\@star@or@long\etb@new@command} + +\def\etb@new@command#1{\@testopt{\etb@newcommand#1}0} + +\def\etb@newcommand#1[#2]{% + \@ifnextchar[%] + {\etb@xargdef#1[#2]} + {\ifx\l@ngrel@x\relax + \let\l@ngrel@x\protected + \else + \protected\def\l@ngrel@x{\protected\long}% + \fi + \@argdef#1[#2]}} + +\long\def\etb@xargdef#1[#2][#3]#4{% + \@ifdefinable#1{% + \expandafter\protected + \expandafter\def + \expandafter#1% + \expandafter{% + \expandafter\@testopt + \csname\string#1\endcsname{#3}}% + \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}} + +% {}[][]{} + +\newrobustcmd*{\renewrobustcmd}{\@star@or@long\etb@renew@command} + +\def\etb@renew@command#1{% + \ifundef{#1} + {\etb@error{\string#1 undefined}\@ehc} + {}% + \let\@ifdefinable\@rc@ifdefinable + \etb@new@command#1} + +% {}[][]{} + +\newrobustcmd*{\providerobustcmd}{\@star@or@long\etb@provide@command} + +\def\etb@provide@command#1{% + \ifundef{#1} + {\def\reserved@a{\etb@new@command#1}} + {\def\reserved@a{\etb@renew@command\reserved@a}}% + \reserved@a} + +% {} + +\newrobustcmd*{\csshow}[1]{% + \begingroup\expandafter\endgroup + \expandafter\show\csname#1\endcsname} + +% {}{}{} + +\newcommand{\ifdef}[1]{% + \ifdefined#1% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newcommand{\ifundef}[1]{% + \ifdefined#1% + \ifx#1\relax + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi} + +% {}{}{} + +\newcommand*{\ifcsdef}[1]{% + \ifcsname#1\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newcommand*{\ifcsundef}[1]{% + \ifcsname#1\endcsname + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi} + +% {}{} + +\newcommand{\ifdefmacro}{} +\long\edef\ifdefmacro#1{% + \noexpand\expandafter\noexpand\etb@ifdefmacro + \noexpand\meaning#1\detokenize{macro}:&} +\edef\etb@ifdefmacro{% + \def\noexpand\etb@ifdefmacro##1\detokenize{macro}:##2&} +\etb@ifdefmacro{\notblank{#2}} + +% {}{}{} + +\newcommand*{\ifcsmacro}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefmacro\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefprefix}[1]{% + \ifdefmacro{#1} + {\etb@ifdefprefix{#1}} + {\@secondoftwo}} +\long\edef\etb@ifdefprefix#1{% + \noexpand\expandafter\noexpand\etb@ifdefprefix@i + \noexpand\meaning#1\detokenize{macro}:&} +\edef\etb@ifdefprefix@i{% + \def\noexpand\etb@ifdefprefix@i##1\detokenize{macro}:##2&} +\etb@ifdefprefix@i{\notblank{#1}} + +% {}{}{} + +\newcommand*{\ifcsprefix}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefprefix\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefparam}{} +\long\edef\ifdefparam#1{% + \noexpand\expandafter\noexpand\etb@ifdefparam + \noexpand\meaning#1\detokenize{macro}:->&} +\edef\etb@ifdefparam{% + \def\noexpand\etb@ifdefparam##1\detokenize{macro}:##2->##3&} +\etb@ifdefparam{\notblank{#2}} + +% {}{}{} + +\newcommand*{\ifcsparam}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefparam\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefprotected}{} +\long\edef\ifdefprotected#1{% + \noexpand\expandafter\noexpand\etb@ifdefprotected + \noexpand\meaning#1\string\protected&} +\edef\etb@ifdefprotected{% + \def\noexpand\etb@ifdefprotected##1\string\protected##2&} +\etb@ifdefprotected{\notblank{#2}} + +% {}{}{} + +\newcommand*{\ifcsprotected}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefprotected\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newrobustcmd{\ifdefltxprotect}[1]{% + \begingroup + \edef\etb@resrvda{% + \noexpand\protect\expandafter\noexpand + \csname\expandafter\@gobble\string#1 \endcsname}% + \expandafter\endgroup\ifx#1\etb@resrvda + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newrobustcmd*{\ifcsltxprotect}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefltxprotect\csname#1\endcsname} + {\@secondoftwo}} + +% {}{}{} + +\newcommand{\ifdefempty}[1]{% + \ifundef{#1} + {\@secondoftwo} + {\ifdefmacro{#1} + {\ifdefparam{#1} + {\@secondoftwo} + {\etb@ifdefempty{#1}}} + {\@secondoftwo}}} + +\def\etb@ifdefempty#1{% + \expandafter\expandafter + \expandafter\ifblank + \expandafter\expandafter + \expandafter{% + \expandafter\strip@prefix\meaning#1}} + +% {}{}{} + +\newcommand*{\ifcsempty}[1]{% + \ifcsundef{#1} + {\@secondoftwo} + {\expandafter\ifdefparam\csname#1\endcsname + {\@secondoftwo} + {\expandafter\etb@ifdefempty\csname#1\endcsname}}} + +% {}{}{} + +\newcommand{\ifdefvoid}[1]{% + \ifundef{#1} + {\@firstoftwo} + {\ifdefmacro{#1} + {\ifdefparam{#1} + {\@secondoftwo} + {\etb@ifdefempty{#1}}} + {\@secondoftwo}}} + +% {}{}{} + +\newcommand*{\ifcsvoid}[1]{% + \ifcsundef{#1} + {\@firstoftwo} + {\expandafter\ifdefparam\csname#1\endcsname + {\@secondoftwo} + {\expandafter\etb@ifdefempty\csname#1\endcsname}}} + +% {}{}{}{} + +\newcommand{\ifdefequal}[2]{% + \ifundef{#1} + {\@secondoftwo} + {\ifundef{#2} + {\@secondoftwo} + {\ifx#1#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {}{}{}{} + +\newcommand*{\ifcsequal}[2]{% + \ifcsundef{#1} + {\@secondoftwo} + {\ifcsundef{#2} + {\@secondoftwo} + {\expandafter\ifx + \csname#1\expandafter\endcsname + \csname#2\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {}{}{}{} + +\newrobustcmd{\ifdefstrequal}[2]{% + \ifdefmacro{#1} + {\ifdefmacro{#2} + {\begingroup + \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% + \edef\etb@tempb{\expandafter\strip@prefix\meaning#2}% + \ifx\etb@tempa\etb@tempb + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + {\@secondoftwo}} + {\@secondoftwo}} + +% {}{}{}{} + +\newcommand*{\ifcsstrequal}[2]{% + \ifcsundef{#1} + {\@secondoftwo} + {\ifcsundef{#2} + {\@secondoftwo} + {\expandafter\ifdefstrequal + \csname#1\expandafter\endcsname + \csname#2\endcsname}}} + +% {}{}{}{} + +\newrobustcmd{\ifdefstring}[2]{% + \ifdefmacro{#1} + {\begingroup + \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% + \edef\etb@tempb{\detokenize{#2}}% + \ifx\etb@tempa\etb@tempb + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + {\@secondoftwo}} + +% {}{}{}{} + +\newrobustcmd{\ifcsstring}[2]{% + \ifcsundef{#1} + {\@secondoftwo} + {\expandafter\ifdefstring\csname#1\endcsname{#2}}} + +% {}{} + +\newcommand{\ifdefcounter}[1]{\etb@ifcounter#1&} +\long\def\etb@ifcounter#1#2&{% + \ifx\count#1% + \expandafter\@secondoftwo + \else + \expandafter\etb@ifcounter@i\meaning#1:% + \fi} +\edef\etb@ifcounter@i#1:#2\fi{\noexpand\fi + \noexpand\etb@ifcounter@ii#1\string\count&} +\edef\etb@ifcounter@ii{% + \def\noexpand\etb@ifcounter@ii##1\string\count##2&} +\etb@ifcounter@ii{\ifblank{#1}} + +% {}{}{} + +\newcommand*{\ifcscounter}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefcounter\csname#1\endcsname} + {\@secondoftwo}} + +% {}{}{} + +\newcommand*{\ifltxcounter}[1]{% + \ifcsdef{c@#1} + {\expandafter\ifdefcounter\csname c@#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdeflength}[1]{\etb@iflength#1&} +\long\def\etb@iflength#1#2&{% + \ifx\skip#1% + \expandafter\@secondoftwo + \else + \expandafter\etb@iflength@i\meaning#1:% + \fi} +\edef\etb@iflength@i#1:#2\fi{\noexpand\fi + \noexpand\etb@iflength@ii#1\string\skip&} +\edef\etb@iflength@ii{% + \def\noexpand\etb@iflength@ii##1\string\skip##2&} +\etb@iflength@ii{\ifblank{#1}} + +% {}{}{} + +\newcommand*{\ifcslength}[1]{% + \ifcsdef{#1} + {\expandafter\ifdeflength\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefdimen}[1]{\etb@ifdimen#1&} +\long\def\etb@ifdimen#1#2&{% + \ifx\dimen#1% + \expandafter\@secondoftwo + \else + \expandafter\etb@ifdimen@i\meaning#1:% + \fi} +\edef\etb@ifdimen@i#1:#2\fi{\noexpand\fi + \noexpand\etb@ifdimen@ii#1\string\dimen&} +\edef\etb@ifdimen@ii{% + \def\noexpand\etb@ifdimen@ii##1\string\dimen##2&} +\etb@ifdimen@ii{\ifblank{#1}} + +% {}{}{} + +\newcommand*{\ifcsdimen}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefdimen\csname#1\endcsname} + {\@secondoftwo}} + +% {}{}{}{} + +\newrobustcmd{\ifstrequal}[2]{% + \begingroup + \edef\etb@tempa{\detokenize{#1}}% + \edef\etb@tempb{\detokenize{#2}}% + \ifx\etb@tempa\etb@tempb + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {}{}{} + +\newcommand{\ifstrempty}[1]{% + \expandafter\ifx\expandafter&\detokenize{#1}&% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newcommand{\ifblank}[1]{% from url.sty + \etb@ifblank@i#1&&\@secondoftwo\@firstoftwo:} +\long\def\etb@ifblank@i#1#2#4#5:{#4} + +\newcommand{\notblank}[1]{% + \etb@ifblank@i#1&&\@firstoftwo\@secondoftwo:} + +% {}{}{}{}{} + +\newcommand*{\ifnumcomp}[3]{% + \ifnum\numexpr#1\relax#2\numexpr#3\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{}{} + +\newcommand*{\ifnumequal}[1]{% + \ifnumcomp{#1}=} + +\newcommand*{\ifnumgreater}[1]{% + \ifnumcomp{#1}>} + +\newcommand*{\ifnumless}[1]{% + \ifnumcomp{#1}<} + +% {}{}{} + +\newcommand*{\ifnumodd}[1]{% + \ifodd\numexpr#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{}{}{} + +\newcommand*{\ifdimcomp}[3]{% + \ifdim\dimexpr#1\relax#2\dimexpr#3\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{}{} + +\newcommand*{\ifdimequal}[1]{% + \ifdimcomp{#1}=} + +\newcommand*{\ifdimgreater}[1]{% + \ifdimcomp{#1}>} + +\newcommand*{\ifdimless}[1]{% + \ifdimcomp{#1}<} + +% {}{}{} + +\newcommand{\ifboolexpe}[1]{% + \etb@be@beg\etb@be@bgroup#1(&\etb@be@end} + +\let\etb@be@true\@empty +\def\etb@be@false{-\@ne} + +\def\etb@be@beg{% + \ifnum\numexpr\z@\ifnum\numexpr\z@} + +\def\etb@be@end{% + <\z@ + \expandafter\etb@be@false + \fi + <\z@ + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} + +\long\def\etb@be@bgroup#1(#2&{% + \etb@be@egroup#1)&% + \ifblank{#2} + {} + {\etb@be@beg + \etb@be@bgroup#2&}} + +\long\def\etb@be@egroup#1)#2&{% + \etb@be@and#1and&% + \ifblank{#2} + {} + {\etb@be@end\etb@be@true\etb@be@false + \etb@be@egroup#2&}} + +\long\def\etb@be@and#1and#2&{% + \etb@be@or#1or&% + \ifblank{#2} + {} + {<\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {=\z@\fi\ifnum\numexpr\m@ne}% + \ifnum\numexpr\z@ + \etb@be@and#2&}} + +\long\def\etb@be@or#1or#2&{% + \etb@be@not#1not&% + \ifblank{#2} + {} + {<\z@ + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + {=\z@\fi\ifnum\numexpr\z@ + \ifnum\numexpr\@ne} + {=\z@\fi\ifnum\numexpr\z@ + \ifnum\numexpr\z@}% + \etb@be@or#2&}} + +\long\def\etb@be@not#1not#2&{% + \etb@be@togl#1togl&% + \ifblank{#2} + {} + {>\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\unless\ifnum\numexpr\m@ne} + {\unless\ifnum\numexpr\z@}% + \etb@be@not#2&}} + +\long\def\etb@be@togl#1togl#2&{% + \etb@be@bool#1bool&% + \ifblank{#2} + {} + {\etb@be@togl@i#2&}} + +\long\def\etb@be@togl@i#1#2&{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname\etb@be@true\etb@be@false} + {\etb@be@err{Toggle '#1' undefined}{}}% + \etb@be@togl#2&} + +\long\def\etb@be@bool#1bool#2&{% + \etb@be@test#1test&% + \ifblank{#2} + {} + {\etb@be@bool@i#2&}} + +\long\def\etb@be@bool@i#1#2&{% + \ifcsundef{if#1} + {\etb@be@err{Boolean '#1' undefined}{}} + {\csname if#1\endcsname + \else + \etb@be@false + \fi}% + \etb@be@bool#2&} + +\long\def\etb@be@test#1test#2&{% + \ifblank{#1} + {} + {\etb@be@err{The invalid part is: '\detokenize{#1}'}{}}% + \ifblank{#2} + {} + {\etb@be@test@i#2&}} + +\long\def\etb@be@test@i#1#2&{% + #1\etb@be@true\etb@be@false + \etb@be@test#2&} + +\long\def\etb@be@err#1#2{% + \expandafter\ifnum\the\numexpr + \expandafter\ifnum\the\currentiftype=-3 + \expandafter\thr@@ + \else + \expandafter\currentiftype + \fi + =\thr@@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {=\z@\fi + \etb@be@err{#1}{#2\ifnum\numexpr\m@ne}} + {\etb@err@expr{#1}#2}} + +% {}{}{} + +\newrobustcmd{\ifboolexpr}[1]{\etb@boolexpr{#1}} + +\long\def\etb@boolexpr#1{% + \begingroup + \let\etb@br@neg\@firstoftwo + \etb@tempcnta\z@ + \etb@br@beg + \etb@br@bgroup#1(&% + \etb@br@end + \etb@br@eval} + +\def\etb@br@beg{% + \begingroup + \let\etb@br@neg\@firstoftwo + \etb@tempcnta\z@} + +\def\etb@br@end{% + \etb@br@eval\etb@br@true\etb@br@false} + +\def\etb@br@eval{% + \ifnum\etb@tempcnta<\z@ + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + \endgroup} + +\def\etb@br@true{% + \advance\etb@tempcnta\etb@br@neg\z@\m@ne + \let\etb@br@neg\@firstoftwo} + +\def\etb@br@false{% + \advance\etb@tempcnta\etb@br@neg\m@ne\z@ + \let\etb@br@neg\@firstoftwo} + +\long\def\etb@br@bgroup#1(#2&{% + \etb@br@egroup#1)&% + \ifblank{#2} + {} + {\etb@br@beg + \etb@br@bgroup#2&}} + +\long\def\etb@br@egroup#1)#2&{% + \etb@br@and#1and&% + \ifblank{#2} + {} + {\etb@br@end + \etb@br@egroup#2&}} + +\long\def\etb@br@and#1and#2&{% + \etb@br@or#1or&% + \ifblank{#2} + {} + {\ifnum\etb@tempcnta<\z@ + \etb@tempcnta\m@ne + \else + \etb@tempcnta\z@ + \fi + \etb@br@and#2&}} + +\long\def\etb@br@or#1or#2&{% + \etb@br@not#1not&% + \ifblank{#2} + {} + {\ifnum\etb@tempcnta<\z@ + \etb@tempcnta\z@ + \else + \etb@tempcnta\@ne + \fi + \etb@br@or#2&}} + +\long\def\etb@br@not#1not#2&{% + \etb@br@togl#1togl&% + \ifblank{#2} + {} + {\let\etb@br@neg\@secondoftwo + \etb@br@not#2&}} + +\long\def\etb@br@togl#1togl#2&{% + \etb@br@bool#1bool&% + \ifblank{#2} + {} + {\etb@br@togl@i#2&}} + +\long\def\etb@br@togl@i#1#2&{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname\etb@br@true\etb@br@false} + {\etb@err@expr{Toggle '#1' undefined}\etb@br@false}% + \etb@br@togl#2&} + +\long\def\etb@br@bool#1bool#2&{% + \etb@br@test#1test&% + \ifblank{#2} + {} + {\etb@br@bool@i#2&}} + +\long\def\etb@br@bool@i#1#2&{% + \ifcsundef{if#1} + {\etb@err@expr{Boolean '#1' undefined}\etb@br@false} + {\csname if#1\endcsname + \etb@br@true + \else + \etb@br@false + \fi}% + \etb@br@bool#2&} + +\long\def\etb@br@test#1test#2&{% + \ifblank{#1} + {} + {\etb@err@expr{The invalid part is: '\detokenize{#1}'}}% + \ifblank{#2} + {} + {\etb@br@test@i#2&}} + +\long\def\etb@br@test@i#1#2&{% + \ignorespaces#1\etb@br@true\etb@br@false + \etb@br@test#2&} + +\long\def\etb@err@expr#1{% + \etb@error + {Invalid boolean expression} + {#1.}} + +% {}{} + +\newrobustcmd{\whileboolexpr}[2]{% + \etb@boolexpr{#1}{#2\whileboolexpr{#1}{#2}}{}} + +% {}{} + +\newrobustcmd{\unlessboolexpr}[2]{% + \etb@boolexpr{#1}{}{#2\unlessboolexpr{#1}{#2}}} + +% {} + +\newcommand{\expandonce}[1]{% + \unexpanded\expandafter{#1}} + +% {} + +\newcommand*{\csexpandonce}[1]{% + \expandafter\expandonce\csname#1\endcsname} + +% {} + +\newcommand*{\protecting}{} +\def\protecting#{% + \ifx\protect\@typeset@protect + \etb@protecting\@firstofone + \fi + \ifx\protect\@unexpandable@protect + \etb@protecting\etb@unexpandable + \fi + \ifx\protect\noexpand + \etb@protecting\unexpanded + \fi + \ifx\protect\string + \etb@protecting\detokenize + \fi + \relax\@firstofone} + +\def\etb@protecting#1#2\relax\@firstofone{\fi#1} +\long\def\etb@unexpandable#1{\unexpanded{\protecting{#1}}} + +% {} + +\newrobustcmd*{\csdef}[1]{\expandafter\def\csname#1\endcsname} +\newrobustcmd*{\csedef}[1]{\expandafter\edef\csname#1\endcsname} +\newrobustcmd*{\csgdef}[1]{\expandafter\gdef\csname#1\endcsname} +\newrobustcmd*{\csxdef}[1]{\expandafter\xdef\csname#1\endcsname} +\newrobustcmd*{\protected@csedef}{\etb@protected\csedef} +\newrobustcmd*{\protected@csxdef}{\etb@protected\csxdef} + +\def\etb@protected{% + \let\@@protect\protect + \let\protect\@unexpandable@protect + \afterassignment\restore@protect} + +% {}{} + +\newrobustcmd{\cslet}[2]{% + \expandafter\let\csname#1\endcsname#2} + +% {}{} + +\newrobustcmd{\letcs}[2]{% + \ifcsdef{#2} + {\expandafter\let\expandafter#1\csname#2\endcsname} + {\undef#1}} + +% {}{} + +\newrobustcmd*{\csletcs}[2]{% + \ifcsdef{#2} + {\expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname} + {\csundef{#1}}} + +% {} + +\newcommand*{\csuse}[1]{% + \ifcsname#1\endcsname + \csname#1\expandafter\endcsname + \fi} + +% {} + +\newrobustcmd{\undef}[1]{\let#1\etb@undefined} + +% {} + +\newrobustcmd*{\csundef}[1]{\cslet{#1}\etb@undefined} + +% {}{} + +\newrobustcmd{\appto}[2]{% + \ifundef{#1} + {\edef#1{\unexpanded{#2}}} + {\edef#1{\expandonce#1\unexpanded{#2}}}} +\newrobustcmd{\eappto}[2]{% + \ifundef{#1} + {\edef#1{#2}} + {\edef#1{\expandonce#1#2}}} +\newrobustcmd{\gappto}[2]{% + \ifundef{#1} + {\xdef#1{\unexpanded{#2}}} + {\xdef#1{\expandonce#1\unexpanded{#2}}}} +\newrobustcmd{\xappto}[2]{% + \ifundef{#1} + {\xdef#1{#2}} + {\xdef#1{\expandonce#1#2}}} + +\newrobustcmd*{\protected@eappto}{\etb@protected\eappto} +\newrobustcmd*{\protected@xappto}{\etb@protected\xappto} + +% {}{} + +\newrobustcmd{\preto}[2]{% + \ifundef{#1} + {\edef#1{\unexpanded{#2}}} + {\edef#1{\unexpanded{#2}\expandonce#1}}} +\newrobustcmd{\epreto}[2]{% + \ifundef{#1} + {\edef#1{#2}} + {\edef#1{#2\expandonce#1}}} +\newrobustcmd{\gpreto}[2]{% + \ifundef{#1} + {\xdef#1{\unexpanded{#2}}} + {\xdef#1{\unexpanded{#2}\expandonce#1}}} +\newrobustcmd{\xpreto}[2]{% + \ifundef{#1} + {\xdef#1{#2}} + {\xdef#1{#2\expandonce#1}}} + +\newrobustcmd*{\protected@epreto}{\etb@protected\epreto} +\newrobustcmd*{\protected@xpreto}{\etb@protected\xpreto} + +% {}{} + +\newrobustcmd*{\csappto}[1]{\expandafter\appto\csname#1\endcsname} +\newrobustcmd*{\cseappto}[1]{\expandafter\eappto\csname#1\endcsname} +\newrobustcmd*{\csgappto}[1]{\expandafter\gappto\csname#1\endcsname} +\newrobustcmd*{\csxappto}[1]{\expandafter\xappto\csname#1\endcsname} +\newrobustcmd*{\protected@cseappto}{\etb@protected\cseappto} +\newrobustcmd*{\protected@csxappto}{\etb@protected\csxappto} + +% {}{} + +\newrobustcmd*{\cspreto}[1]{\expandafter\preto\csname#1\endcsname} +\newrobustcmd*{\csepreto}[1]{\expandafter\epreto\csname#1\endcsname} +\newrobustcmd*{\csgpreto}[1]{\expandafter\gpreto\csname#1\endcsname} +\newrobustcmd*{\csxpreto}[1]{\expandafter\xpreto\csname#1\endcsname} +\newrobustcmd*{\protected@csepreto}{\etb@protected\csepreto} +\newrobustcmd*{\protected@csxpreto}{\etb@protected\csxpreto} + +% {}{} + +\newrobustcmd*{\numdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \edef#1{\the\numexpr#2}} +\newrobustcmd*{\numgdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \xdef#1{\the\numexpr#2}} + +% {}{} + +\newrobustcmd*{\csnumdef}[1]{% + \expandafter\numdef\csname#1\endcsname} +\newrobustcmd*{\csnumgdef}[1]{% + \expandafter\numgdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\dimdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \edef#1{\the\dimexpr#2}} +\newrobustcmd*{\dimgdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \xdef#1{\the\dimexpr#2}} + +% {}{} + +\newrobustcmd*{\csdimdef}[1]{% + \expandafter\dimdef\csname#1\endcsname} +\newrobustcmd*{\csdimgdef}[1]{% + \expandafter\dimgdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\gluedef}[2]{% + \ifundef#1{\let#1\z@skip}{}% + \edef#1{\the\glueexpr#2}} +\newrobustcmd*{\gluegdef}[2]{% + \ifundef#1{\let#1\z@skip}{}% + \xdef#1{\the\glueexpr#2}} + +% {}{} + +\newrobustcmd*{\csgluedef}[1]{% + \expandafter\gluedef\csname#1\endcsname} +\newrobustcmd*{\csgluegdef}[1]{% + \expandafter\gluegdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\mudef}[2]{% + \ifundef#1{\def#1{0mu}}{}% + \edef#1{\the\muexpr#2}} +\newrobustcmd*{\mugdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \xdef#1{\the\muexpr#2}} + +% {}{} + +\newrobustcmd*{\csmudef}[1]{% + \expandafter\mudef\csname#1\endcsname} +\newrobustcmd*{\csmugdef}[1]{% + \expandafter\mugdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\defcounter}[2]{% + \ifcsundef{c@#1} + {\etb@noglobal\@nocounterr{#1}}% + {\csname c@#1\endcsname\numexpr#2\relax}} + +% {}{} + +\newrobustcmd*{\deflength}[2]{% + \ifundef{#1} + {\etb@noglobal\etb@err@nolen{#1}}% + {#1\glueexpr#2\relax}} + +\protected\def\etb@err@nolen#1{% + \etb@error{Length '\string#1' undefined}\@eha} + +% {} + +\newrobustcmd*{\newbool}[1]{% + \expandafter\@ifdefinable\csname if#1\endcsname{% + \expandafter\newif\csname if#1\endcsname}} + +% {} + +\newrobustcmd*{\providebool}[1]{% + \ifcsundef{if#1} + {\expandafter\newif\csname if#1\endcsname} + {\begingroup + \edef\@tempa{\expandafter\meaning\csname if#1\endcsname}% + \ifx\@tempa\etb@isfalse + \else + \ifx\@tempa\etb@istrue + \else + \etb@error{\@backslashchar if#1 not a boolean}\@eha + \fi + \fi + \endgroup}} + +% {}{|} + +\newrobustcmd*{\setbool}[2]{% + \ifcsundef{if#1} + {\etb@noglobal\etb@err@nobool{#1}} + {\ifcsundef{#1#2} + {\etb@noglobal\etb@err@boolval{#2}} + {\csname#1#2\endcsname}}} + +% {} + +\newrobustcmd*{\booltrue}[1]{% + \ifcsundef{if#1} + {\etb@noglobal\etb@err@nobool{#1}} + {\csname#1true\endcsname}} + +% {} + +\newrobustcmd*{\boolfalse}[1]{% + \ifcsundef{if#1} + {\etb@noglobal\etb@err@nobool{#1}} + {\csname#1false\endcsname}} + +\edef\etb@istrue{\meaning\iftrue} +\edef\etb@isfalse{\meaning\iffalse} +\protected\def\etb@noglobal{\let\relax\relax} + +% {}{} + +\newcommand*{\ifbool}[1]{% + \ifcsundef{if#1} + {\etb@err@nobool{#1}\@gobbletwo} + {\csname if#1\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}} + +% {}{} + +\newcommand*{\notbool}[1]{% + \ifcsundef{if#1} + {\etb@err@nobool{#1}\@gobbletwo} + {\csname if#1\endcsname + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi}} + +\protected\def\etb@err@nobool#1{% + \etb@error{Boolean '\@backslashchar if#1' undefined}\@eha} + +\def\etb@err@boolval#1{% + \etb@error + {Invalid boolean value '#1'} + {Valid boolean values are 'true' and 'false'.}} + +% {} + +\newrobustcmd*{\newtoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {\etb@error{Toggle '#1' already defined}\@eha} + {\cslet{etb@tgl@#1}\@secondoftwo}} + +% {} + +\newrobustcmd*{\providetoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {} + {\cslet{etb@tgl@#1}\@secondoftwo}} + +% {}{|} + +\newrobustcmd*{\settoggle}[2]{% + \ifcsdef{etb@tgl@#1} + {\ifcsdef{etb@toggle#2} + {\csletcs{etb@tgl@#1}{etb@toggle#2}} + {\etb@noglobal\etb@err@boolval{#2}}} + {\etb@noglobal\etb@err@notoggle{#1}}} + +% {} + +\newrobustcmd*{\toggletrue}[1]{% + \ifcsdef{etb@tgl@#1} + {\cslet{etb@tgl@#1}\etb@toggletrue} + {\etb@noglobal\etb@err@notoggle{#1}}} + +% {} + +\newrobustcmd*{\togglefalse}[1]{% + \ifcsdef{etb@tgl@#1} + {\cslet{etb@tgl@#1}\etb@togglefalse} + {\etb@noglobal\etb@err@notoggle{#1}}} + +\let\etb@toggletrue\@firstoftwo +\let\etb@togglefalse\@secondoftwo + +% {}{} + +\newcommand*{\iftoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname} + {\etb@err@notoggle{#1}\@gobbletwo}} + +% {}{} + +\newcommand*{\nottoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname\@secondoftwo\@firstoftwo} + {\etb@err@notoggle{#1}\@gobbletwo}} + +\protected\def\etb@err@notoggle#1{% + \etb@error{Toggle '#1' undefined}\@eha} + +% {}{} + +\protected\def\etb@ifscanable#1{% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% + ####1\def\string\etb@resrvda####2{####3}}% + \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda\meaning#1&}}% + \etb@resrvda + \makeatletter + \scantokens\expandafter{\etb@resrvda}% + \expandafter\endgroup\ifx#1\etb@resrvda + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\protected\long\def\etb@ifpattern#1#2{% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{#2}####2&{% + \endgroup\noexpand\noexpand\noexpand\ifblank{####2}}% + \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda + \expandafter\strip@prefix\meaning#1\detokenize{#2}&}% + \noexpand\etb@resrvda} + \etb@resrvda\@secondoftwo\@firstoftwo} + +% {}{} + +\protected\long\def\etb@ifhashcheck#1{% + \begingroup + \edef\etb@resrvda{\detokenize{#1}}% + \expandafter\endgroup + \expandafter\etb@ifhashcheck@i\meaning\etb@resrvda&} + +\edef\etb@ifhashcheck@i#1&{% + \noexpand\expandafter + \noexpand\etb@ifhashcheck@ii + \noexpand\strip@prefix#1\string#\string#&} + +\edef\etb@ifhashcheck@ii{% + \def\noexpand\etb@ifhashcheck@ii##1\string#\string###2&} +\etb@ifhashcheck@ii{\ifblank{#2}} + +% {} + +\newrobustcmd*{\robustify}[1]{% + \ifundef{#1} + {\etb@error{\string#1 undefined}\@eha} + {\ifdefmacro{#1} + {\ifdefltxprotect{#1} + {\letcs\etb@resrvda{\expandafter\@gobble\string#1 }% + \@tempswatrue} + {\let\etb@resrvda#1% + \@tempswafalse}% + \ifdefparam\etb@resrvda + {\etb@ifscanable\etb@resrvda + {\etb@robustify\etb@resrvda + \let#1\etb@resrvda} + {\etb@error{Failed to robustify \string#1} + {The command is special and cannot be + handled by \string\robustify.}% + \@tempswafalse}} + {\protected\edef#1{\expandonce\etb@resrvda}} + \if@tempswa + \ifcsdef{\string#1 } + {} + {\csundef{\expandafter\@gobble\string#1 }}% + \fi + \undef\etb@resrvda} + {\etb@error{\string#1 not a macro}\@eha}}} + +\def\etb@robustify#1{% + \begingroup + \edef\etb@resrvdb{% + \def\noexpand\etb@resrvdb####1\detokenize{macro}:####2->####3&{% + \protected####1\def\string#1\space####2{####3}}% + \edef\noexpand\etb@resrvdb{% + \noexpand\etb@resrvdb\meaning#1&}}% + \etb@resrvdb + \etb@patchcmd@scantoks\etb@resrvdb} + +% {}{}{} +% *{}{} + +\newrobustcmd{\ifpatchable}{% + \etb@dbg@trce\ifpatchable + \begingroup + \@makeother\#% + \@ifstar\etb@ifpatchable@i\etb@ifpatchable} + +\long\def\etb@ifpatchable#1#2{% + \endgroup + \etb@dbg@init#1% + \ifundef{#1} + {\etb@dbg@fail{def}\@secondoftwo} + {\etb@dbg@info{def}% + \ifdefmacro{#1} + {\etb@dbg@info{mac}% + \etb@ifscanable{#1} + {\etb@ifhashcheck{#2} + {\etb@dbg@info{tok}% + \etb@ifpattern#1{#2} + {\etb@dbg@info{pat}% + \etb@dbg@info{pos}\@firstoftwo} + {\etb@dbg@fail{pat}\@secondoftwo}} + {\etb@dbg@fail{hsh}\@secondoftwo}} + {\etb@dbg@fail{tok}\@secondoftwo}} + {\etb@dbg@fail{mac}\@secondoftwo}}} + +\long\def\etb@ifpatchable@i#1{% + \endgroup + \etb@dbg@init#1% + \ifundef{#1} + {\etb@dbg@fail{def}\@secondoftwo} + {\etb@dbg@info{def}% + \ifdefmacro{#1} + {\etb@dbg@info{mac}% + \ifdefparam{#1} + {\etb@dbg@info{prm}% + \etb@ifscanable{#1} + {\etb@dbg@info{tok}% + \etb@dbg@info{pos}\@firstoftwo} + {\etb@dbg@fail{tok}\@secondoftwo}} + {\etb@dbg@info{prl}% + \ifdefprotected{#1} + {\etb@dbg@info{pro}} + {}% + \etb@dbg@info{pos}\@firstoftwo}} + {\etb@dbg@fail{mac}\@secondoftwo}}} + +% []{}{}{}{}{} + +\newrobustcmd*{\patchcmd}{% + \etb@dbg@trce\patchcmd + \begingroup + \@makeother\#% + \etb@patchcmd} + +\newcommand{\etb@patchcmd}[4][########1]{% + \etb@ifpatchable#2{#3} + {\etb@dbg@succ{ret}% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{macro:}####2->####3&{% + #1\def\string\etb@resrvda\space####2{\noexpand\etb@resrvdb####3&}}% + \def\noexpand\etb@resrvdb####1\detokenize{#3}####2&{% + ####1\detokenize{#4}####2}% + \edef\noexpand\etb@resrvda{% + \noexpand\etb@resrvda\meaning#2&}}% + \etb@resrvda + \etb@patchcmd@scantoks\etb@resrvda + \let#2\etb@resrvda + \undef\etb@resrvda + \@firstoftwo} + {\@secondoftwo}} + +\def\etb@patchcmd@scantoks#1{% + \edef\etb@resrvda{\endgroup + \unexpanded{\makeatletter\scantokens}{#1}% + \catcode\number`\@=\the\catcode`\@\relax}% + \etb@resrvda} + +% {}{}{}{} + +\newrobustcmd*{\apptocmd}{% + \etb@dbg@trce\apptocmd + \begingroup + \@makeother\#% + \etb@hooktocmd\etb@append} + +\newrobustcmd*{\pretocmd}{% + \etb@dbg@trce\pretocmd + \begingroup + \@makeother\#% + \etb@hooktocmd\etb@prepend} + +\long\def\etb@hooktocmd#1#2#3{% + \endgroup + \etb@dbg@init#2% + \ifundef{#2} + {\etb@dbg@fail{def}\@secondoftwo} + {\etb@dbg@info{def}% + \ifdefmacro{#2} + {\etb@dbg@info{mac}% + \ifdefparam{#2} + {\etb@dbg@info{prm}% + \etb@ifscanable{#2} + {\etb@ifhashcheck{#3} + {\etb@dbg@info{tok}% + \etb@dbg@succ{ret}% + \etb@hooktocmd@i#1#2{#3}% + \@firstoftwo} + {\etb@dbg@fail{hsh}\@secondoftwo}} + {\etb@dbg@fail{tok}\@secondoftwo}} + {\etb@dbg@info{prl}% + \ifdefprotected{#2} + {\etb@dbg@info{pro}% + \etb@dbg@succ{red}% + \protected} + {\etb@dbg@succ{red}}% + \edef#2{#1{\expandonce#2}{\unexpanded{#3}}}% + \@firstoftwo}} + {\etb@dbg@fail{mac}\@secondoftwo}}} + +\long\def\etb@hooktocmd@i#1#2#3{% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% + ####1\def\string\etb@resrvda\space####2{#1{####3}{\detokenize{#3}}}}% + \edef\noexpand\etb@resrvda{% + \noexpand\etb@resrvda\meaning#2&}}% + \etb@resrvda + \etb@patchcmd@scantoks\etb@resrvda + \let#2\etb@resrvda + \undef\etb@resrvda} + +\long\def\etb@append#1#2{#1#2} +\long\def\etb@prepend#1#2{#2#1} + +\newrobustcmd*{\tracingpatches}{% + \etb@info{Enabling tracing}% + \input{etoolbox.def}% + \global\let\tracingpatches\relax} +\@onlypreamble\tracingpatches + +\let\etb@dbg@trce\@gobble +\let\etb@dbg@init\@gobble +\let\etb@dbg@info\@gobble +\let\etb@dbg@succ\@gobble +\let\etb@dbg@fail\@gobble + +% {} + +\newcommand{\rmntonum}[1]{% + \ifblank{#1} + {} + {\expandafter\etb@rti@end\number\numexpr + \expandafter\etb@rti@prs\detokenize{#1}&\relax}} + +\def\etb@rti@prs#1#2{% + \ifx% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1#2} + {\ifx% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\etb@rti@chk#1+\etb@rti@num#1#2} + {\etb@rti@chk#1\etb@rti@chk#2% + \ifnum\etb@rti@num#1<\etb@rti@num#2 % + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {+\etb@rti@num#2-\etb@rti@num#1\etb@rti@prs} + {+\etb@rti@num#1\etb@rti@prs#2}}}} + +\def\etb@rti@chk#1{% + \ifcsname etb@rmn@#1\endcsname + \else + \expandafter\etb@rti@brk + \fi} + +\def\etb@rti@brk#1&{+\z@&-1} +\def\etb@rti@end#1\relax{\ifblank{#2}{#1}{#2}} +\def\etb@rti@num#1{\csname etb@rmn@#1\endcsname} + +\chardef\etb@rmn@i=1 +\chardef\etb@rmn@I=1 +\chardef\etb@rmn@v=5 +\chardef\etb@rmn@V=5 +\chardef\etb@rmn@x=10 +\chardef\etb@rmn@X=10 +\chardef\etb@rmn@l=50 +\chardef\etb@rmn@L=50 +\chardef\etb@rmn@c=100 +\chardef\etb@rmn@C=100 +\mathchardef\etb@rmn@d=500 +\mathchardef\etb@rmn@D=500 +\mathchardef\etb@rmn@m=1000 +\mathchardef\etb@rmn@M=1000 + +% {}{}{} + +\newcommand{\ifrmnum}[1]{% + \ifblank{#1} + {\@secondoftwo} + {\expandafter\etb@ifr@prs\detokenize{#1}\relax}} + +\def\etb@ifr@prs#1{% + \ifx\relax#1% + \expandafter\@firstoftwo + \else + \ifcsname etb@rmn@#1\endcsname + \expandafter\expandafter + \expandafter\etb@ifr@prs + \else + \expandafter\expandafter + \expandafter\etb@ifr@brk + \fi + \fi} + +\def\etb@ifr@brk#1\relax{\@secondoftwo} + +% <*>{}{} + +\newrobustcmd*{\DeclareListParser}{% + \@ifstar + {\etb@defparser\etb@defparser@arg} + {\etb@defparser\etb@defparser@do}} + +\def\etb@defparser#1#2#3{% + \@ifdefinable#2{#1{#2}{#3}}} + +\def\etb@defparser@do#1#2{% + \begingroup + \edef\@tempa{\endgroup + \long\def\noexpand#1####1{% + \expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + \space####1\noexpand#2&}% + \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1\noexpand#2####2&{% + \noexpand\etb@listitem\noexpand\do{####1}% + \noexpand\ifblank{####2} + {\noexpand\listbreak} + {\expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + \space####2}&}}% + \@tempa} + +\def\etb@defparser@arg#1#2{% + \begingroup + \edef\@tempa{\endgroup + \long\def\noexpand#1####1####2{% + \expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + {####1}\space####2\noexpand#2&}% + \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2\noexpand#2####3&{% + \noexpand\etb@listitem{####1}{####2}% + \noexpand\ifblank{####3} + {\noexpand\listbreak} + {\expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + {####1}\space####3}&}}% + \@tempa} + +\long\def\etb@listitem#1#2{% + \ifblank{#2} + {} + {\expandafter\etb@listitem@i + \expandafter{\@firstofone#2}{#1}}} +\long\def\etb@listitem@i#1#2{#2{#1}} + +\newcommand*{\listbreak}{} +\long\def\listbreak#1&{} + +% {,,...} => \do{}\do{}... + +\DeclareListParser{\docsvlist}{,} + +% {}{,,...} => {}{}... + +\DeclareListParser*{\forcsvlist}{,} + +% {}{} + +\newrobustcmd{\listadd}[2]{% + \ifblank{#2}{}{\appto#1{#2|}}} +\newrobustcmd{\listeadd}[2]{% + \begingroup + \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% + \etb@tempa{}{\eappto#1{#2|}}} +\newrobustcmd{\listgadd}[2]{% + \ifblank{#2}{}{\gappto#1{#2|}}} +\newrobustcmd{\listxadd}[2]{% + \begingroup + \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% + \etb@tempa{}{\xappto#1{#2|}}} + +% {}{} + +\newrobustcmd{\listcsadd}[1]{% + \expandafter\listadd\csname#1\endcsname} +\newrobustcmd{\listcseadd}[1]{% + \expandafter\listeadd\csname#1\endcsname} +\newrobustcmd{\listcsgadd}[1]{% + \expandafter\listgadd\csname#1\endcsname} +\newrobustcmd{\listcsxadd}[1]{% + \expandafter\listxadd\csname#1\endcsname} + +% {}{}{}{} + +\newrobustcmd{\ifinlist}[2]{% + \begingroup + \def\etb@tempa##1|#1|##2&{\endgroup + \ifblank{##2}\@secondoftwo\@firstoftwo}% + \expandafter\etb@tempa\expandafter|#2|#1|&} + +\newrobustcmd{\xifinlist}[1]{% + \begingroup + \edef\etb@tempa{\endgroup\ifinlist{#1}}% + \etb@tempa} + +% {}{}{}{} + +\newrobustcmd{\ifinlistcs}[2]{% + \expandafter\etb@ifinlistcs@i\csname #2\endcsname{#1}} +\long\def\etb@ifinlistcs@i#1#2{\ifinlist{#2}{#1}} + +\newrobustcmd{\xifinlistcs}[1]{% + \begingroup + \edef\etb@tempa{\endgroup\ifinlistcs{#1}}% + \etb@tempa} + +% {}{} => {}{}... + +\newcommand*{\forlistloop}[2]{% + \expandafter\etb@forlistloop\expandafter{#2}{#1}} + +\long\def\etb@forlistloop#1#2{\etb@forlistloop@i{#2}#1|&} + +\long\def\etb@forlistloop@i#1#2|#3&{% + \ifblank{#2} + {} + {#1{#2}}% + \ifblank{#3} + {\listbreak} + {\etb@forlistloop@i{#1}#3}% + &} + +% {}{} => {}{}... + +\newcommand*{\forlistcsloop}[2]{% + \expandafter\expandafter\expandafter\etb@forlistloop + \expandafter\expandafter\expandafter{\csname#2\endcsname}{#1}} + +% {} => \do{}\do{}... + +\newcommand*{\dolistloop}{\forlistloop\do} + +% {} => \do{}\do{}... + +\newcommand*{\dolistcsloop}{\forlistcsloop\do} + +% {} + +\newrobustcmd*{\AtEndPreamble}{\gappto\@endpreamblehook} +\newcommand*{\@endpreamblehook}{} + +\preto\document{% + \endgroup + \let\AtEndPreamble\@firstofone + \@endpreamblehook + \protected\def\AtEndPreamble{\@notprerr\@gobble}% + \undef\@endpreamblehook + \begingroup} + +% {} + +\newrobustcmd*{\AfterPreamble}{\AtBeginDocument} +\AtEndPreamble{\let\AfterPreamble\@firstofone} + +% {} + +\newrobustcmd*{\AfterEndPreamble}{\gappto\@afterendpreamblehook} +\newcommand*{\@afterendpreamblehook}{} + +\appto\document{% + \let\AfterEndPreamble\@firstofone + \@afterendpreamblehook + \protected\def\AfterEndPreamble{\@notprerr\@gobble}% + \undef\@afterendpreamblehook + \ignorespaces} + +\AtEndDocument{\let\AfterEndPreamble\@gobble} + +% {} + +\newrobustcmd*{\AfterEndDocument}{\gappto\@afterenddocumenthook} +\newcommand*{\@afterenddocumenthook}{} + +\patchcmd\enddocument + {\deadcycles} + {\let\AfterEndDocument\@firstofone + \@afterenddocumenthook + \deadcycles} + {} + {\let\etb@@end\@@end + \def\@@end{% + \let\AfterEndDocument\@firstofone + \@afterenddocumenthook + \etb@@end}} + +% {}{} + +\newrobustcmd{\AtBeginEnvironment}[1]{% + \csgappto{@begin@#1@hook}} + +\patchcmd\begin + {\csname #1\endcsname} + {\csuse{@begin@#1@hook}% + \csname #1\endcsname} + {} + {\etb@warning{% + Patching '\string\begin' failed!\MessageBreak + '\string\AtBeginEnvironment' will not work\@gobble}} + +% {}{} + +\newrobustcmd{\AtEndEnvironment}[1]{% + \csgappto{@end@#1@hook}} + +\patchcmd\end + {\csname end#1\endcsname} + {\csuse{@end@#1@hook}% + \csname end#1\endcsname} + {} + {\etb@warning{% + Patching '\string\end' failed!\MessageBreak + '\string\AtEndEnvironment' will not work\@gobble}} + +% {}{} + +\newrobustcmd{\BeforeBeginEnvironment}[1]{% + \csgappto{@beforebegin@#1@hook}} + +\pretocmd\begin + {\csuse{@beforebegin@#1@hook}} + {} + {\etb@warning{% + Patching '\string\begin' failed!\MessageBreak + '\string\BeforeBeginEnvironment' will not work\@gobble}} + +% {}{} + +\newrobustcmd{\AfterEndEnvironment}[1]{% + \csgappto{@afterend@#1@hook}} + +\patchcmd\end + {\if@ignore} + {\csuse{@afterend@#1@hook}% + \if@ignore} + {} + {\etb@warning{% + Patching '\string\end' failed!\MessageBreak + '\string\AfterEndEnvironment' will not work\@gobble}} + +\endinput diff --git a/etoolbox/README b/etoolbox/README new file mode 100644 index 0000000..db96fdf --- /dev/null +++ b/etoolbox/README @@ -0,0 +1,84 @@ +$Id: README,v 2.1 2011/01/03 19:14:10 lehman stable $ + +ABOUT + +The etoolbox package is a toolbox of programming facilities geared +primarily towards LaTeX class and package authors. It provides LaTeX +frontends to some of the new primitives provided by e-TeX as well as +some generic tools which are not related to e-TeX but match the +profile of this package. The package is work in progress. Note that +previous versions of this package were released under the name +elatex. + +LICENSE + +Copyright (c) 2007-2010 Philipp Lehman. This package is author- +maintained. Permission is granted to copy, distribute and/or modify +this software under the terms of the LaTeX Project Public License +(LPPL), version 1.3. This software is provided 'as is', without +warranty of any kind, either expressed or implied, including, but +not limited to, the implied warranties of merchantability and +fitness for a particular purpose. + +REQUIREMENTS + +- e-TeX +- etex.sty + +AUTOMATIC INSTALLATION + +TeX Live: The etoolbox package is included in TeX Live. + Use the TeX Live package manager to install it. + +MiKTeX: The etoolbox package is included in MiKTeX. + Use the MiKTeX package manager to install it. + +SEMI-AUTOMATIC INSTALLATION + +1. Download the file + + http://www.ctan.org/tex-archive/install/macros/latex/contrib/etoolbox.tds.zip + +2. Unpack the archive in the root directory of the local TeX + installation tree, for example + + /usr/local/share/texmf/ + or + /usr/share/texmf-local/ + or + C:\Local TeX Files\ + +3. Update the file hash tables (also known as the file name + database). + + On teTeX and TeX Live systems, run texhash as root ('sudo + texhash'). On MiKTeX, run 'initexmf --update-fndb' in a command + window or use the 'Refresh FNDB' button of the MiKTeX Options + window. + +MANUAL INSTALLATION + +1. Copy the files 'etoolbox.sty' and 'etoolbox.def' to + + /tex/latex/etoolbox/ + + where denotes the root of the local TeX installation + tree, for example + + /usr/local/share/texmf/ + or + /usr/share/texmf-local/ + or + C:\Local TeX Files\ + +2. The file 'etoolbox.pdf' goes to + + /doc/latex/etoolbox/ + +3. Update the file hash tables (also known as the file name + database). + + On teTeX and TeX Live systems, run texhash as root ('sudo + texhash'). On MiKTeX, run 'initexmf --update-fndb' in a command + window or use the 'Refresh FNDB' button of the MiKTeX Options + window. diff --git a/etoolbox/etoolbox.def b/etoolbox/etoolbox.def new file mode 100644 index 0000000..0102a51 --- /dev/null +++ b/etoolbox/etoolbox.def @@ -0,0 +1,73 @@ +% $Id: etoolbox.def,v 2.1 2011/01/03 19:14:10 lehman stable $ + +\ProvidesFile{etoolbox.def} +[\csname etb@rcsid\endcsname $Id: etoolbox.def,v 2.1 2011/01/03 19:14:10 lehman stable $ + etoolbox debug messages] + +\begingroup +\makeatletter +\@makeother\+ +\@makeother\- +\@makeother\= +\@makeother\> + +\long\gdef\etb@dbg@trce#1{\typeout{% + [debug] tracing \string#1\on@line}}% +\long\gdef\etb@dbg@init#1{\typeout{% + [debug] analyzing '\detokenize\expandafter{\string#1}'}}% +\gdef\etb@dbg@info#1{\typeout{% + [debug] ++ \csuse{etb@msg@i@#1}}}% +\gdef\etb@dbg@succ#1{\typeout{% + [debug] == \csuse{etb@msg@s@#1}}}% +\gdef\etb@dbg@fail#1{\typeout{% + [debug] -- \csuse{etb@msg@f@#1}}}% + +\gdef\etb@msg@ex{^^J[debug] -> }% +\gdef\etb@msg@br{^^J[debug]\@spaces} + +\gdef\etb@msg@i@def{% + control sequence is defined} +\gdef\etb@msg@i@mac{% + control sequence is a macro} +\gdef\etb@msg@i@prm{% + control sequence is a macro with parameters} +\gdef\etb@msg@i@prl{% + control sequence is a macro without parameters} +\xdef\etb@msg@i@pro{% + control sequence is a \string\protected\space macro} +\gdef\etb@msg@i@tok{% + macro can be retokenized cleanly} +\gdef\etb@msg@i@pat{% + search pattern found in replacement text} +\gdef\etb@msg@i@pos{% + patching possible} +\gdef\etb@msg@s@red{% + redefining macro now} +\gdef\etb@msg@s@ret{% + retokenizing macro now} +\xdef\etb@msg@f@def{% + control sequence is undefined or \string\relax} +\gdef\etb@msg@f@mac{% + control sequence is not a macro} +\xdef\etb@msg@f@tok{% + macro cannot be retokenized cleanly\noexpand\etb@msg@ex + the macro may have been defined under a category\noexpand\etb@msg@br + code regime different from the current one\noexpand\etb@msg@ex + the replacement text may contain special control\noexpand\etb@msg@br + sequence tokens formed with + \string\csname...\string\endcsname;\noexpand\etb@msg@ex + the replacement text may contain carriage return,\noexpand\etb@msg@br + newline, or similar characters} +\xdef\etb@msg@f@hsh{% + nested patching command and parameters in patch\noexpand\etb@msg@ex + the patching command seems to be nested in the\noexpand\etb@msg@br + argument to some other command\noexpand\etb@msg@ex + the patch text seems to contain \string# characters\noexpand\etb@msg@ex + either avoid nesting or use \string# characters with\noexpand\etb@msg@br + category code 12 in the patch text\noexpand\etb@msg@ex + simply doubling the \string# characters will not work} +\gdef\etb@msg@f@pat{% + search pattern not found in replacement text} + +\endgroup +\endinput diff --git a/etoolbox/etoolbox.pdf b/etoolbox/etoolbox.pdf new file mode 100644 index 0000000..78f8d15 Binary files /dev/null and b/etoolbox/etoolbox.pdf differ diff --git a/etoolbox/etoolbox.sty b/etoolbox/etoolbox.sty new file mode 100644 index 0000000..ae37d94 --- /dev/null +++ b/etoolbox/etoolbox.sty @@ -0,0 +1,1708 @@ +% $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ + +% Copyright (c) 2007-2011 Philipp Lehman. +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3. +% +% The LPPL maintenance status of this software is +% 'author-maintained'. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. + +\def\etb@rcsid$#1: #2 #3 #4 #5${#4 v#3} + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{etoolbox} +[\etb@rcsid $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ + e-TeX tools for LaTeX] + +\begingroup +\@ifundefined{eTeXversion} + {\PackageError{etoolbox} + {Not running under e-TeX} + {This package requires e-TeX. Try compiling the document + with\MessageBreak 'elatex' instead of 'latex'. When using + pdfTeX, try 'pdfelatex'\MessageBreak instead of 'pdflatex'. + This is a fatal error. I'm aborting now.}% + \aftergroup\endinput} + {} +\endgroup + +\RequirePackage{etex} + +\def\etb@catcodes{\do\&\do\|\do\:\do\-\do\=\do\<\do\>} +\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} +\edef\etb@catcodes{\etb@catcodes} +\let\do\noexpand +\AtEndOfPackage{\etb@catcodes\undef\etb@catcodes} + +\catcode`\&=3 +\catcode`\|=3 +\@makeother\: +\@makeother\- +\@makeother\= +\@makeother\< +\@makeother\> + +\protected\def\etb@error{\PackageError{etoolbox}} +\protected\def\etb@warning{\PackageWarning{etoolbox}} +\protected\def\etb@info{\PackageInfo{etoolbox}} +\newcount\etb@tempcnta + +% {}[][]{} + +\newcommand*{\newrobustcmd}{} +\protected\def\newrobustcmd{\@star@or@long\etb@new@command} + +\def\etb@new@command#1{\@testopt{\etb@newcommand#1}0} + +\def\etb@newcommand#1[#2]{% + \@ifnextchar[%] + {\etb@xargdef#1[#2]} + {\ifx\l@ngrel@x\relax + \let\l@ngrel@x\protected + \else + \protected\def\l@ngrel@x{\protected\long}% + \fi + \@argdef#1[#2]}} + +\long\def\etb@xargdef#1[#2][#3]#4{% + \@ifdefinable#1{% + \expandafter\protected + \expandafter\def + \expandafter#1% + \expandafter{% + \expandafter\@testopt + \csname\string#1\endcsname{#3}}% + \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}} + +% {}[][]{} + +\newrobustcmd*{\renewrobustcmd}{\@star@or@long\etb@renew@command} + +\def\etb@renew@command#1{% + \ifundef{#1} + {\etb@error{\string#1 undefined}\@ehc} + {}% + \let\@ifdefinable\@rc@ifdefinable + \etb@new@command#1} + +% {}[][]{} + +\newrobustcmd*{\providerobustcmd}{\@star@or@long\etb@provide@command} + +\def\etb@provide@command#1{% + \ifundef{#1} + {\def\reserved@a{\etb@new@command#1}} + {\def\reserved@a{\etb@renew@command\reserved@a}}% + \reserved@a} + +% {} + +\newrobustcmd*{\csshow}[1]{% + \begingroup\expandafter\endgroup + \expandafter\show\csname#1\endcsname} + +% {}{}{} + +\newcommand{\ifdef}[1]{% + \ifdefined#1% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newcommand{\ifundef}[1]{% + \ifdefined#1% + \ifx#1\relax + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi} + +% {}{}{} + +\newcommand*{\ifcsdef}[1]{% + \ifcsname#1\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newcommand*{\ifcsundef}[1]{% + \ifcsname#1\endcsname + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi} + +% {}{} + +\newcommand{\ifdefmacro}{} +\long\edef\ifdefmacro#1{% + \noexpand\expandafter\noexpand\etb@ifdefmacro + \noexpand\meaning#1\detokenize{macro}:&} +\edef\etb@ifdefmacro{% + \def\noexpand\etb@ifdefmacro##1\detokenize{macro}:##2&} +\etb@ifdefmacro{\notblank{#2}} + +% {}{}{} + +\newcommand*{\ifcsmacro}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefmacro\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefprefix}[1]{% + \ifdefmacro{#1} + {\etb@ifdefprefix{#1}} + {\@secondoftwo}} +\long\edef\etb@ifdefprefix#1{% + \noexpand\expandafter\noexpand\etb@ifdefprefix@i + \noexpand\meaning#1\detokenize{macro}:&} +\edef\etb@ifdefprefix@i{% + \def\noexpand\etb@ifdefprefix@i##1\detokenize{macro}:##2&} +\etb@ifdefprefix@i{\notblank{#1}} + +% {}{}{} + +\newcommand*{\ifcsprefix}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefprefix\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefparam}{} +\long\edef\ifdefparam#1{% + \noexpand\expandafter\noexpand\etb@ifdefparam + \noexpand\meaning#1\detokenize{macro}:->&} +\edef\etb@ifdefparam{% + \def\noexpand\etb@ifdefparam##1\detokenize{macro}:##2->##3&} +\etb@ifdefparam{\notblank{#2}} + +% {}{}{} + +\newcommand*{\ifcsparam}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefparam\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefprotected}{} +\long\edef\ifdefprotected#1{% + \noexpand\expandafter\noexpand\etb@ifdefprotected + \noexpand\meaning#1\string\protected&} +\edef\etb@ifdefprotected{% + \def\noexpand\etb@ifdefprotected##1\string\protected##2&} +\etb@ifdefprotected{\notblank{#2}} + +% {}{}{} + +\newcommand*{\ifcsprotected}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefprotected\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newrobustcmd{\ifdefltxprotect}[1]{% + \begingroup + \edef\etb@resrvda{% + \noexpand\protect\expandafter\noexpand + \csname\expandafter\@gobble\string#1 \endcsname}% + \expandafter\endgroup\ifx#1\etb@resrvda + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newrobustcmd*{\ifcsltxprotect}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefltxprotect\csname#1\endcsname} + {\@secondoftwo}} + +% {}{}{} + +\newcommand{\ifdefempty}[1]{% + \ifundef{#1} + {\@secondoftwo} + {\ifdefmacro{#1} + {\ifdefparam{#1} + {\@secondoftwo} + {\etb@ifdefempty{#1}}} + {\@secondoftwo}}} + +\def\etb@ifdefempty#1{% + \expandafter\expandafter + \expandafter\ifblank + \expandafter\expandafter + \expandafter{% + \expandafter\strip@prefix\meaning#1}} + +% {}{}{} + +\newcommand*{\ifcsempty}[1]{% + \ifcsundef{#1} + {\@secondoftwo} + {\expandafter\ifdefparam\csname#1\endcsname + {\@secondoftwo} + {\expandafter\etb@ifdefempty\csname#1\endcsname}}} + +% {}{}{} + +\newcommand{\ifdefvoid}[1]{% + \ifundef{#1} + {\@firstoftwo} + {\ifdefmacro{#1} + {\ifdefparam{#1} + {\@secondoftwo} + {\etb@ifdefempty{#1}}} + {\@secondoftwo}}} + +% {}{}{} + +\newcommand*{\ifcsvoid}[1]{% + \ifcsundef{#1} + {\@firstoftwo} + {\expandafter\ifdefparam\csname#1\endcsname + {\@secondoftwo} + {\expandafter\etb@ifdefempty\csname#1\endcsname}}} + +% {}{}{}{} + +\newcommand{\ifdefequal}[2]{% + \ifundef{#1} + {\@secondoftwo} + {\ifundef{#2} + {\@secondoftwo} + {\ifx#1#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {}{}{}{} + +\newcommand*{\ifcsequal}[2]{% + \ifcsundef{#1} + {\@secondoftwo} + {\ifcsundef{#2} + {\@secondoftwo} + {\expandafter\ifx + \csname#1\expandafter\endcsname + \csname#2\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {}{}{}{} + +\newrobustcmd{\ifdefstrequal}[2]{% + \ifdefmacro{#1} + {\ifdefmacro{#2} + {\begingroup + \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% + \edef\etb@tempb{\expandafter\strip@prefix\meaning#2}% + \ifx\etb@tempa\etb@tempb + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + {\@secondoftwo}} + {\@secondoftwo}} + +% {}{}{}{} + +\newcommand*{\ifcsstrequal}[2]{% + \ifcsundef{#1} + {\@secondoftwo} + {\ifcsundef{#2} + {\@secondoftwo} + {\expandafter\ifdefstrequal + \csname#1\expandafter\endcsname + \csname#2\endcsname}}} + +% {}{}{}{} + +\newrobustcmd{\ifdefstring}[2]{% + \ifdefmacro{#1} + {\begingroup + \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% + \edef\etb@tempb{\detokenize{#2}}% + \ifx\etb@tempa\etb@tempb + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + {\@secondoftwo}} + +% {}{}{}{} + +\newrobustcmd{\ifcsstring}[2]{% + \ifcsundef{#1} + {\@secondoftwo} + {\expandafter\ifdefstring\csname#1\endcsname{#2}}} + +% {}{} + +\newcommand{\ifdefcounter}[1]{\etb@ifcounter#1&} +\long\def\etb@ifcounter#1#2&{% + \ifx\count#1% + \expandafter\@secondoftwo + \else + \expandafter\etb@ifcounter@i\meaning#1:% + \fi} +\edef\etb@ifcounter@i#1:#2\fi{\noexpand\fi + \noexpand\etb@ifcounter@ii#1\string\count&} +\edef\etb@ifcounter@ii{% + \def\noexpand\etb@ifcounter@ii##1\string\count##2&} +\etb@ifcounter@ii{\ifblank{#1}} + +% {}{}{} + +\newcommand*{\ifcscounter}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefcounter\csname#1\endcsname} + {\@secondoftwo}} + +% {}{}{} + +\newcommand*{\ifltxcounter}[1]{% + \ifcsdef{c@#1} + {\expandafter\ifdefcounter\csname c@#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdeflength}[1]{\etb@iflength#1&} +\long\def\etb@iflength#1#2&{% + \ifx\skip#1% + \expandafter\@secondoftwo + \else + \expandafter\etb@iflength@i\meaning#1:% + \fi} +\edef\etb@iflength@i#1:#2\fi{\noexpand\fi + \noexpand\etb@iflength@ii#1\string\skip&} +\edef\etb@iflength@ii{% + \def\noexpand\etb@iflength@ii##1\string\skip##2&} +\etb@iflength@ii{\ifblank{#1}} + +% {}{}{} + +\newcommand*{\ifcslength}[1]{% + \ifcsdef{#1} + {\expandafter\ifdeflength\csname#1\endcsname} + {\@secondoftwo}} + +% {}{} + +\newcommand{\ifdefdimen}[1]{\etb@ifdimen#1&} +\long\def\etb@ifdimen#1#2&{% + \ifx\dimen#1% + \expandafter\@secondoftwo + \else + \expandafter\etb@ifdimen@i\meaning#1:% + \fi} +\edef\etb@ifdimen@i#1:#2\fi{\noexpand\fi + \noexpand\etb@ifdimen@ii#1\string\dimen&} +\edef\etb@ifdimen@ii{% + \def\noexpand\etb@ifdimen@ii##1\string\dimen##2&} +\etb@ifdimen@ii{\ifblank{#1}} + +% {}{}{} + +\newcommand*{\ifcsdimen}[1]{% + \ifcsdef{#1} + {\expandafter\ifdefdimen\csname#1\endcsname} + {\@secondoftwo}} + +% {}{}{}{} + +\newrobustcmd{\ifstrequal}[2]{% + \begingroup + \edef\etb@tempa{\detokenize{#1}}% + \edef\etb@tempb{\detokenize{#2}}% + \ifx\etb@tempa\etb@tempb + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {}{}{} + +\newcommand{\ifstrempty}[1]{% + \expandafter\ifx\expandafter&\detokenize{#1}&% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\newcommand{\ifblank}[1]{% from url.sty + \etb@ifblank@i#1&&\@secondoftwo\@firstoftwo:} +\long\def\etb@ifblank@i#1#2#4#5:{#4} + +\newcommand{\notblank}[1]{% + \etb@ifblank@i#1&&\@firstoftwo\@secondoftwo:} + +% {}{}{}{}{} + +\newcommand*{\ifnumcomp}[3]{% + \ifnum\numexpr#1\relax#2\numexpr#3\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{}{} + +\newcommand*{\ifnumequal}[1]{% + \ifnumcomp{#1}=} + +\newcommand*{\ifnumgreater}[1]{% + \ifnumcomp{#1}>} + +\newcommand*{\ifnumless}[1]{% + \ifnumcomp{#1}<} + +% {}{}{} + +\newcommand*{\ifnumodd}[1]{% + \ifodd\numexpr#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{}{}{} + +\newcommand*{\ifdimcomp}[3]{% + \ifdim\dimexpr#1\relax#2\dimexpr#3\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{}{} + +\newcommand*{\ifdimequal}[1]{% + \ifdimcomp{#1}=} + +\newcommand*{\ifdimgreater}[1]{% + \ifdimcomp{#1}>} + +\newcommand*{\ifdimless}[1]{% + \ifdimcomp{#1}<} + +% {}{}{} + +\newcommand{\ifboolexpe}[1]{% + \etb@be@beg\etb@be@bgroup#1(&\etb@be@end} + +\let\etb@be@true\@empty +\def\etb@be@false{-\@ne} + +\def\etb@be@beg{% + \ifnum\numexpr\z@\ifnum\numexpr\z@} + +\def\etb@be@end{% + <\z@ + \expandafter\etb@be@false + \fi + <\z@ + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} + +\long\def\etb@be@bgroup#1(#2&{% + \etb@be@egroup#1)&% + \ifblank{#2} + {} + {\etb@be@beg + \etb@be@bgroup#2&}} + +\long\def\etb@be@egroup#1)#2&{% + \etb@be@and#1and&% + \ifblank{#2} + {} + {\etb@be@end\etb@be@true\etb@be@false + \etb@be@egroup#2&}} + +\long\def\etb@be@and#1and#2&{% + \etb@be@or#1or&% + \ifblank{#2} + {} + {<\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {=\z@\fi\ifnum\numexpr\m@ne}% + \ifnum\numexpr\z@ + \etb@be@and#2&}} + +\long\def\etb@be@or#1or#2&{% + \etb@be@not#1not&% + \ifblank{#2} + {} + {<\z@ + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + {=\z@\fi\ifnum\numexpr\z@ + \ifnum\numexpr\@ne} + {=\z@\fi\ifnum\numexpr\z@ + \ifnum\numexpr\z@}% + \etb@be@or#2&}} + +\long\def\etb@be@not#1not#2&{% + \etb@be@togl#1togl&% + \ifblank{#2} + {} + {>\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\unless\ifnum\numexpr\m@ne} + {\unless\ifnum\numexpr\z@}% + \etb@be@not#2&}} + +\long\def\etb@be@togl#1togl#2&{% + \etb@be@bool#1bool&% + \ifblank{#2} + {} + {\etb@be@togl@i#2&}} + +\long\def\etb@be@togl@i#1#2&{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname\etb@be@true\etb@be@false} + {\etb@be@err{Toggle '#1' undefined}{}}% + \etb@be@togl#2&} + +\long\def\etb@be@bool#1bool#2&{% + \etb@be@test#1test&% + \ifblank{#2} + {} + {\etb@be@bool@i#2&}} + +\long\def\etb@be@bool@i#1#2&{% + \ifcsundef{if#1} + {\etb@be@err{Boolean '#1' undefined}{}} + {\csname if#1\endcsname + \else + \etb@be@false + \fi}% + \etb@be@bool#2&} + +\long\def\etb@be@test#1test#2&{% + \ifblank{#1} + {} + {\etb@be@err{The invalid part is: '\detokenize{#1}'}{}}% + \ifblank{#2} + {} + {\etb@be@test@i#2&}} + +\long\def\etb@be@test@i#1#2&{% + #1\etb@be@true\etb@be@false + \etb@be@test#2&} + +\long\def\etb@be@err#1#2{% + \expandafter\ifnum\the\numexpr + \expandafter\ifnum\the\currentiftype=-3 + \expandafter\thr@@ + \else + \expandafter\currentiftype + \fi + =\thr@@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {=\z@\fi + \etb@be@err{#1}{#2\ifnum\numexpr\m@ne}} + {\etb@err@expr{#1}#2}} + +% {}{}{} + +\newrobustcmd{\ifboolexpr}[1]{\etb@boolexpr{#1}} + +\long\def\etb@boolexpr#1{% + \begingroup + \let\etb@br@neg\@firstoftwo + \etb@tempcnta\z@ + \etb@br@beg + \etb@br@bgroup#1(&% + \etb@br@end + \etb@br@eval} + +\def\etb@br@beg{% + \begingroup + \let\etb@br@neg\@firstoftwo + \etb@tempcnta\z@} + +\def\etb@br@end{% + \etb@br@eval\etb@br@true\etb@br@false} + +\def\etb@br@eval{% + \ifnum\etb@tempcnta<\z@ + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + \endgroup} + +\def\etb@br@true{% + \advance\etb@tempcnta\etb@br@neg\z@\m@ne + \let\etb@br@neg\@firstoftwo} + +\def\etb@br@false{% + \advance\etb@tempcnta\etb@br@neg\m@ne\z@ + \let\etb@br@neg\@firstoftwo} + +\long\def\etb@br@bgroup#1(#2&{% + \etb@br@egroup#1)&% + \ifblank{#2} + {} + {\etb@br@beg + \etb@br@bgroup#2&}} + +\long\def\etb@br@egroup#1)#2&{% + \etb@br@and#1and&% + \ifblank{#2} + {} + {\etb@br@end + \etb@br@egroup#2&}} + +\long\def\etb@br@and#1and#2&{% + \etb@br@or#1or&% + \ifblank{#2} + {} + {\ifnum\etb@tempcnta<\z@ + \etb@tempcnta\m@ne + \else + \etb@tempcnta\z@ + \fi + \etb@br@and#2&}} + +\long\def\etb@br@or#1or#2&{% + \etb@br@not#1not&% + \ifblank{#2} + {} + {\ifnum\etb@tempcnta<\z@ + \etb@tempcnta\z@ + \else + \etb@tempcnta\@ne + \fi + \etb@br@or#2&}} + +\long\def\etb@br@not#1not#2&{% + \etb@br@togl#1togl&% + \ifblank{#2} + {} + {\let\etb@br@neg\@secondoftwo + \etb@br@not#2&}} + +\long\def\etb@br@togl#1togl#2&{% + \etb@br@bool#1bool&% + \ifblank{#2} + {} + {\etb@br@togl@i#2&}} + +\long\def\etb@br@togl@i#1#2&{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname\etb@br@true\etb@br@false} + {\etb@err@expr{Toggle '#1' undefined}\etb@br@false}% + \etb@br@togl#2&} + +\long\def\etb@br@bool#1bool#2&{% + \etb@br@test#1test&% + \ifblank{#2} + {} + {\etb@br@bool@i#2&}} + +\long\def\etb@br@bool@i#1#2&{% + \ifcsundef{if#1} + {\etb@err@expr{Boolean '#1' undefined}\etb@br@false} + {\csname if#1\endcsname + \etb@br@true + \else + \etb@br@false + \fi}% + \etb@br@bool#2&} + +\long\def\etb@br@test#1test#2&{% + \ifblank{#1} + {} + {\etb@err@expr{The invalid part is: '\detokenize{#1}'}}% + \ifblank{#2} + {} + {\etb@br@test@i#2&}} + +\long\def\etb@br@test@i#1#2&{% + \ignorespaces#1\etb@br@true\etb@br@false + \etb@br@test#2&} + +\long\def\etb@err@expr#1{% + \etb@error + {Invalid boolean expression} + {#1.}} + +% {}{} + +\newrobustcmd{\whileboolexpr}[2]{% + \etb@boolexpr{#1}{#2\whileboolexpr{#1}{#2}}{}} + +% {}{} + +\newrobustcmd{\unlessboolexpr}[2]{% + \etb@boolexpr{#1}{}{#2\unlessboolexpr{#1}{#2}}} + +% {} + +\newcommand{\expandonce}[1]{% + \unexpanded\expandafter{#1}} + +% {} + +\newcommand*{\csexpandonce}[1]{% + \expandafter\expandonce\csname#1\endcsname} + +% {} + +\newcommand*{\protecting}{} +\def\protecting#{% + \ifx\protect\@typeset@protect + \etb@protecting\@firstofone + \fi + \ifx\protect\@unexpandable@protect + \etb@protecting\etb@unexpandable + \fi + \ifx\protect\noexpand + \etb@protecting\unexpanded + \fi + \ifx\protect\string + \etb@protecting\detokenize + \fi + \relax\@firstofone} + +\def\etb@protecting#1#2\relax\@firstofone{\fi#1} +\long\def\etb@unexpandable#1{\unexpanded{\protecting{#1}}} + +% {} + +\newrobustcmd*{\csdef}[1]{\expandafter\def\csname#1\endcsname} +\newrobustcmd*{\csedef}[1]{\expandafter\edef\csname#1\endcsname} +\newrobustcmd*{\csgdef}[1]{\expandafter\gdef\csname#1\endcsname} +\newrobustcmd*{\csxdef}[1]{\expandafter\xdef\csname#1\endcsname} +\newrobustcmd*{\protected@csedef}{\etb@protected\csedef} +\newrobustcmd*{\protected@csxdef}{\etb@protected\csxdef} + +\def\etb@protected{% + \let\@@protect\protect + \let\protect\@unexpandable@protect + \afterassignment\restore@protect} + +% {}{} + +\newrobustcmd{\cslet}[2]{% + \expandafter\let\csname#1\endcsname#2} + +% {}{} + +\newrobustcmd{\letcs}[2]{% + \ifcsdef{#2} + {\expandafter\let\expandafter#1\csname#2\endcsname} + {\undef#1}} + +% {}{} + +\newrobustcmd*{\csletcs}[2]{% + \ifcsdef{#2} + {\expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname} + {\csundef{#1}}} + +% {} + +\newcommand*{\csuse}[1]{% + \ifcsname#1\endcsname + \csname#1\expandafter\endcsname + \fi} + +% {} + +\newrobustcmd{\undef}[1]{\let#1\etb@undefined} + +% {} + +\newrobustcmd*{\csundef}[1]{\cslet{#1}\etb@undefined} + +% {}{} + +\newrobustcmd{\appto}[2]{% + \ifundef{#1} + {\edef#1{\unexpanded{#2}}} + {\edef#1{\expandonce#1\unexpanded{#2}}}} +\newrobustcmd{\eappto}[2]{% + \ifundef{#1} + {\edef#1{#2}} + {\edef#1{\expandonce#1#2}}} +\newrobustcmd{\gappto}[2]{% + \ifundef{#1} + {\xdef#1{\unexpanded{#2}}} + {\xdef#1{\expandonce#1\unexpanded{#2}}}} +\newrobustcmd{\xappto}[2]{% + \ifundef{#1} + {\xdef#1{#2}} + {\xdef#1{\expandonce#1#2}}} + +\newrobustcmd*{\protected@eappto}{\etb@protected\eappto} +\newrobustcmd*{\protected@xappto}{\etb@protected\xappto} + +% {}{} + +\newrobustcmd{\preto}[2]{% + \ifundef{#1} + {\edef#1{\unexpanded{#2}}} + {\edef#1{\unexpanded{#2}\expandonce#1}}} +\newrobustcmd{\epreto}[2]{% + \ifundef{#1} + {\edef#1{#2}} + {\edef#1{#2\expandonce#1}}} +\newrobustcmd{\gpreto}[2]{% + \ifundef{#1} + {\xdef#1{\unexpanded{#2}}} + {\xdef#1{\unexpanded{#2}\expandonce#1}}} +\newrobustcmd{\xpreto}[2]{% + \ifundef{#1} + {\xdef#1{#2}} + {\xdef#1{#2\expandonce#1}}} + +\newrobustcmd*{\protected@epreto}{\etb@protected\epreto} +\newrobustcmd*{\protected@xpreto}{\etb@protected\xpreto} + +% {}{} + +\newrobustcmd*{\csappto}[1]{\expandafter\appto\csname#1\endcsname} +\newrobustcmd*{\cseappto}[1]{\expandafter\eappto\csname#1\endcsname} +\newrobustcmd*{\csgappto}[1]{\expandafter\gappto\csname#1\endcsname} +\newrobustcmd*{\csxappto}[1]{\expandafter\xappto\csname#1\endcsname} +\newrobustcmd*{\protected@cseappto}{\etb@protected\cseappto} +\newrobustcmd*{\protected@csxappto}{\etb@protected\csxappto} + +% {}{} + +\newrobustcmd*{\cspreto}[1]{\expandafter\preto\csname#1\endcsname} +\newrobustcmd*{\csepreto}[1]{\expandafter\epreto\csname#1\endcsname} +\newrobustcmd*{\csgpreto}[1]{\expandafter\gpreto\csname#1\endcsname} +\newrobustcmd*{\csxpreto}[1]{\expandafter\xpreto\csname#1\endcsname} +\newrobustcmd*{\protected@csepreto}{\etb@protected\csepreto} +\newrobustcmd*{\protected@csxpreto}{\etb@protected\csxpreto} + +% {}{} + +\newrobustcmd*{\numdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \edef#1{\the\numexpr#2}} +\newrobustcmd*{\numgdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \xdef#1{\the\numexpr#2}} + +% {}{} + +\newrobustcmd*{\csnumdef}[1]{% + \expandafter\numdef\csname#1\endcsname} +\newrobustcmd*{\csnumgdef}[1]{% + \expandafter\numgdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\dimdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \edef#1{\the\dimexpr#2}} +\newrobustcmd*{\dimgdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \xdef#1{\the\dimexpr#2}} + +% {}{} + +\newrobustcmd*{\csdimdef}[1]{% + \expandafter\dimdef\csname#1\endcsname} +\newrobustcmd*{\csdimgdef}[1]{% + \expandafter\dimgdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\gluedef}[2]{% + \ifundef#1{\let#1\z@skip}{}% + \edef#1{\the\glueexpr#2}} +\newrobustcmd*{\gluegdef}[2]{% + \ifundef#1{\let#1\z@skip}{}% + \xdef#1{\the\glueexpr#2}} + +% {}{} + +\newrobustcmd*{\csgluedef}[1]{% + \expandafter\gluedef\csname#1\endcsname} +\newrobustcmd*{\csgluegdef}[1]{% + \expandafter\gluegdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\mudef}[2]{% + \ifundef#1{\def#1{0mu}}{}% + \edef#1{\the\muexpr#2}} +\newrobustcmd*{\mugdef}[2]{% + \ifundef#1{\let#1\z@}{}% + \xdef#1{\the\muexpr#2}} + +% {}{} + +\newrobustcmd*{\csmudef}[1]{% + \expandafter\mudef\csname#1\endcsname} +\newrobustcmd*{\csmugdef}[1]{% + \expandafter\mugdef\csname#1\endcsname} + +% {}{} + +\newrobustcmd*{\defcounter}[2]{% + \ifcsundef{c@#1} + {\etb@noglobal\@nocounterr{#1}}% + {\csname c@#1\endcsname\numexpr#2\relax}} + +% {}{} + +\newrobustcmd*{\deflength}[2]{% + \ifundef{#1} + {\etb@noglobal\etb@err@nolen{#1}}% + {#1\glueexpr#2\relax}} + +\protected\def\etb@err@nolen#1{% + \etb@error{Length '\string#1' undefined}\@eha} + +% {} + +\newrobustcmd*{\newbool}[1]{% + \expandafter\@ifdefinable\csname if#1\endcsname{% + \expandafter\newif\csname if#1\endcsname}} + +% {} + +\newrobustcmd*{\providebool}[1]{% + \ifcsundef{if#1} + {\expandafter\newif\csname if#1\endcsname} + {\begingroup + \edef\@tempa{\expandafter\meaning\csname if#1\endcsname}% + \ifx\@tempa\etb@isfalse + \else + \ifx\@tempa\etb@istrue + \else + \etb@error{\@backslashchar if#1 not a boolean}\@eha + \fi + \fi + \endgroup}} + +% {}{|} + +\newrobustcmd*{\setbool}[2]{% + \ifcsundef{if#1} + {\etb@noglobal\etb@err@nobool{#1}} + {\ifcsundef{#1#2} + {\etb@noglobal\etb@err@boolval{#2}} + {\csname#1#2\endcsname}}} + +% {} + +\newrobustcmd*{\booltrue}[1]{% + \ifcsundef{if#1} + {\etb@noglobal\etb@err@nobool{#1}} + {\csname#1true\endcsname}} + +% {} + +\newrobustcmd*{\boolfalse}[1]{% + \ifcsundef{if#1} + {\etb@noglobal\etb@err@nobool{#1}} + {\csname#1false\endcsname}} + +\edef\etb@istrue{\meaning\iftrue} +\edef\etb@isfalse{\meaning\iffalse} +\protected\def\etb@noglobal{\let\relax\relax} + +% {}{} + +\newcommand*{\ifbool}[1]{% + \ifcsundef{if#1} + {\etb@err@nobool{#1}\@gobbletwo} + {\csname if#1\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}} + +% {}{} + +\newcommand*{\notbool}[1]{% + \ifcsundef{if#1} + {\etb@err@nobool{#1}\@gobbletwo} + {\csname if#1\endcsname + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi}} + +\protected\def\etb@err@nobool#1{% + \etb@error{Boolean '\@backslashchar if#1' undefined}\@eha} + +\def\etb@err@boolval#1{% + \etb@error + {Invalid boolean value '#1'} + {Valid boolean values are 'true' and 'false'.}} + +% {} + +\newrobustcmd*{\newtoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {\etb@error{Toggle '#1' already defined}\@eha} + {\cslet{etb@tgl@#1}\@secondoftwo}} + +% {} + +\newrobustcmd*{\providetoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {} + {\cslet{etb@tgl@#1}\@secondoftwo}} + +% {}{|} + +\newrobustcmd*{\settoggle}[2]{% + \ifcsdef{etb@tgl@#1} + {\ifcsdef{etb@toggle#2} + {\csletcs{etb@tgl@#1}{etb@toggle#2}} + {\etb@noglobal\etb@err@boolval{#2}}} + {\etb@noglobal\etb@err@notoggle{#1}}} + +% {} + +\newrobustcmd*{\toggletrue}[1]{% + \ifcsdef{etb@tgl@#1} + {\cslet{etb@tgl@#1}\etb@toggletrue} + {\etb@noglobal\etb@err@notoggle{#1}}} + +% {} + +\newrobustcmd*{\togglefalse}[1]{% + \ifcsdef{etb@tgl@#1} + {\cslet{etb@tgl@#1}\etb@togglefalse} + {\etb@noglobal\etb@err@notoggle{#1}}} + +\let\etb@toggletrue\@firstoftwo +\let\etb@togglefalse\@secondoftwo + +% {}{} + +\newcommand*{\iftoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname} + {\etb@err@notoggle{#1}\@gobbletwo}} + +% {}{} + +\newcommand*{\nottoggle}[1]{% + \ifcsdef{etb@tgl@#1} + {\csname etb@tgl@#1\endcsname\@secondoftwo\@firstoftwo} + {\etb@err@notoggle{#1}\@gobbletwo}} + +\protected\def\etb@err@notoggle#1{% + \etb@error{Toggle '#1' undefined}\@eha} + +% {}{} + +\protected\def\etb@ifscanable#1{% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% + ####1\def\string\etb@resrvda####2{####3}}% + \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda\meaning#1&}}% + \etb@resrvda + \makeatletter + \scantokens\expandafter{\etb@resrvda}% + \expandafter\endgroup\ifx#1\etb@resrvda + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {}{}{} + +\protected\long\def\etb@ifpattern#1#2{% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{#2}####2&{% + \endgroup\noexpand\noexpand\noexpand\ifblank{####2}}% + \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda + \expandafter\strip@prefix\meaning#1\detokenize{#2}&}% + \noexpand\etb@resrvda} + \etb@resrvda\@secondoftwo\@firstoftwo} + +% {}{} + +\protected\long\def\etb@ifhashcheck#1{% + \begingroup + \edef\etb@resrvda{\detokenize{#1}}% + \expandafter\endgroup + \expandafter\etb@ifhashcheck@i\meaning\etb@resrvda&} + +\edef\etb@ifhashcheck@i#1&{% + \noexpand\expandafter + \noexpand\etb@ifhashcheck@ii + \noexpand\strip@prefix#1\string#\string#&} + +\edef\etb@ifhashcheck@ii{% + \def\noexpand\etb@ifhashcheck@ii##1\string#\string###2&} +\etb@ifhashcheck@ii{\ifblank{#2}} + +% {} + +\newrobustcmd*{\robustify}[1]{% + \ifundef{#1} + {\etb@error{\string#1 undefined}\@eha} + {\ifdefmacro{#1} + {\ifdefltxprotect{#1} + {\letcs\etb@resrvda{\expandafter\@gobble\string#1 }% + \@tempswatrue} + {\let\etb@resrvda#1% + \@tempswafalse}% + \ifdefparam\etb@resrvda + {\etb@ifscanable\etb@resrvda + {\etb@robustify\etb@resrvda + \let#1\etb@resrvda} + {\etb@error{Failed to robustify \string#1} + {The command is special and cannot be + handled by \string\robustify.}% + \@tempswafalse}} + {\protected\edef#1{\expandonce\etb@resrvda}} + \if@tempswa + \ifcsdef{\string#1 } + {} + {\csundef{\expandafter\@gobble\string#1 }}% + \fi + \undef\etb@resrvda} + {\etb@error{\string#1 not a macro}\@eha}}} + +\def\etb@robustify#1{% + \begingroup + \edef\etb@resrvdb{% + \def\noexpand\etb@resrvdb####1\detokenize{macro}:####2->####3&{% + \protected####1\def\string#1\space####2{####3}}% + \edef\noexpand\etb@resrvdb{% + \noexpand\etb@resrvdb\meaning#1&}}% + \etb@resrvdb + \etb@patchcmd@scantoks\etb@resrvdb} + +% {}{}{} +% *{}{} + +\newrobustcmd{\ifpatchable}{% + \etb@dbg@trce\ifpatchable + \begingroup + \@makeother\#% + \@ifstar\etb@ifpatchable@i\etb@ifpatchable} + +\long\def\etb@ifpatchable#1#2{% + \endgroup + \etb@dbg@init#1% + \ifundef{#1} + {\etb@dbg@fail{def}\@secondoftwo} + {\etb@dbg@info{def}% + \ifdefmacro{#1} + {\etb@dbg@info{mac}% + \etb@ifscanable{#1} + {\etb@ifhashcheck{#2} + {\etb@dbg@info{tok}% + \etb@ifpattern#1{#2} + {\etb@dbg@info{pat}% + \etb@dbg@info{pos}\@firstoftwo} + {\etb@dbg@fail{pat}\@secondoftwo}} + {\etb@dbg@fail{hsh}\@secondoftwo}} + {\etb@dbg@fail{tok}\@secondoftwo}} + {\etb@dbg@fail{mac}\@secondoftwo}}} + +\long\def\etb@ifpatchable@i#1{% + \endgroup + \etb@dbg@init#1% + \ifundef{#1} + {\etb@dbg@fail{def}\@secondoftwo} + {\etb@dbg@info{def}% + \ifdefmacro{#1} + {\etb@dbg@info{mac}% + \ifdefparam{#1} + {\etb@dbg@info{prm}% + \etb@ifscanable{#1} + {\etb@dbg@info{tok}% + \etb@dbg@info{pos}\@firstoftwo} + {\etb@dbg@fail{tok}\@secondoftwo}} + {\etb@dbg@info{prl}% + \ifdefprotected{#1} + {\etb@dbg@info{pro}} + {}% + \etb@dbg@info{pos}\@firstoftwo}} + {\etb@dbg@fail{mac}\@secondoftwo}}} + +% []{}{}{}{}{} + +\newrobustcmd*{\patchcmd}{% + \etb@dbg@trce\patchcmd + \begingroup + \@makeother\#% + \etb@patchcmd} + +\newcommand{\etb@patchcmd}[4][########1]{% + \etb@ifpatchable#2{#3} + {\etb@dbg@succ{ret}% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{macro:}####2->####3&{% + #1\def\string\etb@resrvda\space####2{\noexpand\etb@resrvdb####3&}}% + \def\noexpand\etb@resrvdb####1\detokenize{#3}####2&{% + ####1\detokenize{#4}####2}% + \edef\noexpand\etb@resrvda{% + \noexpand\etb@resrvda\meaning#2&}}% + \etb@resrvda + \etb@patchcmd@scantoks\etb@resrvda + \let#2\etb@resrvda + \undef\etb@resrvda + \@firstoftwo} + {\@secondoftwo}} + +\def\etb@patchcmd@scantoks#1{% + \edef\etb@resrvda{\endgroup + \unexpanded{\makeatletter\scantokens}{#1}% + \catcode\number`\@=\the\catcode`\@\relax}% + \etb@resrvda} + +% {}{}{}{} + +\newrobustcmd*{\apptocmd}{% + \etb@dbg@trce\apptocmd + \begingroup + \@makeother\#% + \etb@hooktocmd\etb@append} + +\newrobustcmd*{\pretocmd}{% + \etb@dbg@trce\pretocmd + \begingroup + \@makeother\#% + \etb@hooktocmd\etb@prepend} + +\long\def\etb@hooktocmd#1#2#3{% + \endgroup + \etb@dbg@init#2% + \ifundef{#2} + {\etb@dbg@fail{def}\@secondoftwo} + {\etb@dbg@info{def}% + \ifdefmacro{#2} + {\etb@dbg@info{mac}% + \ifdefparam{#2} + {\etb@dbg@info{prm}% + \etb@ifscanable{#2} + {\etb@ifhashcheck{#3} + {\etb@dbg@info{tok}% + \etb@dbg@succ{ret}% + \etb@hooktocmd@i#1#2{#3}% + \@firstoftwo} + {\etb@dbg@fail{hsh}\@secondoftwo}} + {\etb@dbg@fail{tok}\@secondoftwo}} + {\etb@dbg@info{prl}% + \ifdefprotected{#2} + {\etb@dbg@info{pro}% + \etb@dbg@succ{red}% + \protected} + {\etb@dbg@succ{red}}% + \edef#2{#1{\expandonce#2}{\unexpanded{#3}}}% + \@firstoftwo}} + {\etb@dbg@fail{mac}\@secondoftwo}}} + +\long\def\etb@hooktocmd@i#1#2#3{% + \begingroup + \edef\etb@resrvda{% + \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% + ####1\def\string\etb@resrvda\space####2{#1{####3}{\detokenize{#3}}}}% + \edef\noexpand\etb@resrvda{% + \noexpand\etb@resrvda\meaning#2&}}% + \etb@resrvda + \etb@patchcmd@scantoks\etb@resrvda + \let#2\etb@resrvda + \undef\etb@resrvda} + +\long\def\etb@append#1#2{#1#2} +\long\def\etb@prepend#1#2{#2#1} + +\newrobustcmd*{\tracingpatches}{% + \etb@info{Enabling tracing}% + \input{etoolbox.def}% + \global\let\tracingpatches\relax} +\@onlypreamble\tracingpatches + +\let\etb@dbg@trce\@gobble +\let\etb@dbg@init\@gobble +\let\etb@dbg@info\@gobble +\let\etb@dbg@succ\@gobble +\let\etb@dbg@fail\@gobble + +% {} + +\newcommand{\rmntonum}[1]{% + \ifblank{#1} + {} + {\expandafter\etb@rti@end\number\numexpr + \expandafter\etb@rti@prs\detokenize{#1}&\relax}} + +\def\etb@rti@prs#1#2{% + \ifx% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1#2} + {\ifx% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\etb@rti@chk#1+\etb@rti@num#1#2} + {\etb@rti@chk#1\etb@rti@chk#2% + \ifnum\etb@rti@num#1<\etb@rti@num#2 % + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {+\etb@rti@num#2-\etb@rti@num#1\etb@rti@prs} + {+\etb@rti@num#1\etb@rti@prs#2}}}} + +\def\etb@rti@chk#1{% + \ifcsname etb@rmn@#1\endcsname + \else + \expandafter\etb@rti@brk + \fi} + +\def\etb@rti@brk#1&{+\z@&-1} +\def\etb@rti@end#1\relax{\ifblank{#2}{#1}{#2}} +\def\etb@rti@num#1{\csname etb@rmn@#1\endcsname} + +\chardef\etb@rmn@i=1 +\chardef\etb@rmn@I=1 +\chardef\etb@rmn@v=5 +\chardef\etb@rmn@V=5 +\chardef\etb@rmn@x=10 +\chardef\etb@rmn@X=10 +\chardef\etb@rmn@l=50 +\chardef\etb@rmn@L=50 +\chardef\etb@rmn@c=100 +\chardef\etb@rmn@C=100 +\mathchardef\etb@rmn@d=500 +\mathchardef\etb@rmn@D=500 +\mathchardef\etb@rmn@m=1000 +\mathchardef\etb@rmn@M=1000 + +% {}{}{} + +\newcommand{\ifrmnum}[1]{% + \ifblank{#1} + {\@secondoftwo} + {\expandafter\etb@ifr@prs\detokenize{#1}\relax}} + +\def\etb@ifr@prs#1{% + \ifx\relax#1% + \expandafter\@firstoftwo + \else + \ifcsname etb@rmn@#1\endcsname + \expandafter\expandafter + \expandafter\etb@ifr@prs + \else + \expandafter\expandafter + \expandafter\etb@ifr@brk + \fi + \fi} + +\def\etb@ifr@brk#1\relax{\@secondoftwo} + +% <*>{}{} + +\newrobustcmd*{\DeclareListParser}{% + \@ifstar + {\etb@defparser\etb@defparser@arg} + {\etb@defparser\etb@defparser@do}} + +\def\etb@defparser#1#2#3{% + \@ifdefinable#2{#1{#2}{#3}}} + +\def\etb@defparser@do#1#2{% + \begingroup + \edef\@tempa{\endgroup + \long\def\noexpand#1####1{% + \expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + \space####1\noexpand#2&}% + \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1\noexpand#2####2&{% + \noexpand\etb@listitem\noexpand\do{####1}% + \noexpand\ifblank{####2} + {\noexpand\listbreak} + {\expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + \space####2}&}}% + \@tempa} + +\def\etb@defparser@arg#1#2{% + \begingroup + \edef\@tempa{\endgroup + \long\def\noexpand#1####1####2{% + \expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + {####1}\space####2\noexpand#2&}% + \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2\noexpand#2####3&{% + \noexpand\etb@listitem{####1}{####2}% + \noexpand\ifblank{####3} + {\noexpand\listbreak} + {\expandafter\noexpand + \csname etb@lst@\expandafter\@gobble\string#1\endcsname + {####1}\space####3}&}}% + \@tempa} + +\long\def\etb@listitem#1#2{% + \ifblank{#2} + {} + {\expandafter\etb@listitem@i + \expandafter{\@firstofone#2}{#1}}} +\long\def\etb@listitem@i#1#2{#2{#1}} + +\newcommand*{\listbreak}{} +\long\def\listbreak#1&{} + +% {,,...} => \do{}\do{}... + +\DeclareListParser{\docsvlist}{,} + +% {}{,,...} => {}{}... + +\DeclareListParser*{\forcsvlist}{,} + +% {}{} + +\newrobustcmd{\listadd}[2]{% + \ifblank{#2}{}{\appto#1{#2|}}} +\newrobustcmd{\listeadd}[2]{% + \begingroup + \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% + \etb@tempa{}{\eappto#1{#2|}}} +\newrobustcmd{\listgadd}[2]{% + \ifblank{#2}{}{\gappto#1{#2|}}} +\newrobustcmd{\listxadd}[2]{% + \begingroup + \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% + \etb@tempa{}{\xappto#1{#2|}}} + +% {}{} + +\newrobustcmd{\listcsadd}[1]{% + \expandafter\listadd\csname#1\endcsname} +\newrobustcmd{\listcseadd}[1]{% + \expandafter\listeadd\csname#1\endcsname} +\newrobustcmd{\listcsgadd}[1]{% + \expandafter\listgadd\csname#1\endcsname} +\newrobustcmd{\listcsxadd}[1]{% + \expandafter\listxadd\csname#1\endcsname} + +% {}{}{}{} + +\newrobustcmd{\ifinlist}[2]{% + \begingroup + \def\etb@tempa##1|#1|##2&{\endgroup + \ifblank{##2}\@secondoftwo\@firstoftwo}% + \expandafter\etb@tempa\expandafter|#2|#1|&} + +\newrobustcmd{\xifinlist}[1]{% + \begingroup + \edef\etb@tempa{\endgroup\ifinlist{#1}}% + \etb@tempa} + +% {}{}{}{} + +\newrobustcmd{\ifinlistcs}[2]{% + \expandafter\etb@ifinlistcs@i\csname #2\endcsname{#1}} +\long\def\etb@ifinlistcs@i#1#2{\ifinlist{#2}{#1}} + +\newrobustcmd{\xifinlistcs}[1]{% + \begingroup + \edef\etb@tempa{\endgroup\ifinlistcs{#1}}% + \etb@tempa} + +% {}{} => {}{}... + +\newcommand*{\forlistloop}[2]{% + \expandafter\etb@forlistloop\expandafter{#2}{#1}} + +\long\def\etb@forlistloop#1#2{\etb@forlistloop@i{#2}#1|&} + +\long\def\etb@forlistloop@i#1#2|#3&{% + \ifblank{#2} + {} + {#1{#2}}% + \ifblank{#3} + {\listbreak} + {\etb@forlistloop@i{#1}#3}% + &} + +% {}{} => {}{}... + +\newcommand*{\forlistcsloop}[2]{% + \expandafter\expandafter\expandafter\etb@forlistloop + \expandafter\expandafter\expandafter{\csname#2\endcsname}{#1}} + +% {} => \do{}\do{}... + +\newcommand*{\dolistloop}{\forlistloop\do} + +% {} => \do{}\do{}... + +\newcommand*{\dolistcsloop}{\forlistcsloop\do} + +% {} + +\newrobustcmd*{\AtEndPreamble}{\gappto\@endpreamblehook} +\newcommand*{\@endpreamblehook}{} + +\preto\document{% + \endgroup + \let\AtEndPreamble\@firstofone + \@endpreamblehook + \protected\def\AtEndPreamble{\@notprerr\@gobble}% + \undef\@endpreamblehook + \begingroup} + +% {} + +\newrobustcmd*{\AfterPreamble}{\AtBeginDocument} +\AtEndPreamble{\let\AfterPreamble\@firstofone} + +% {} + +\newrobustcmd*{\AfterEndPreamble}{\gappto\@afterendpreamblehook} +\newcommand*{\@afterendpreamblehook}{} + +\appto\document{% + \let\AfterEndPreamble\@firstofone + \@afterendpreamblehook + \protected\def\AfterEndPreamble{\@notprerr\@gobble}% + \undef\@afterendpreamblehook + \ignorespaces} + +\AtEndDocument{\let\AfterEndPreamble\@gobble} + +% {} + +\newrobustcmd*{\AfterEndDocument}{\gappto\@afterenddocumenthook} +\newcommand*{\@afterenddocumenthook}{} + +\patchcmd\enddocument + {\deadcycles} + {\let\AfterEndDocument\@firstofone + \@afterenddocumenthook + \deadcycles} + {} + {\let\etb@@end\@@end + \def\@@end{% + \let\AfterEndDocument\@firstofone + \@afterenddocumenthook + \etb@@end}} + +% {}{} + +\newrobustcmd{\AtBeginEnvironment}[1]{% + \csgappto{@begin@#1@hook}} + +\patchcmd\begin + {\csname #1\endcsname} + {\csuse{@begin@#1@hook}% + \csname #1\endcsname} + {} + {\etb@warning{% + Patching '\string\begin' failed!\MessageBreak + '\string\AtBeginEnvironment' will not work\@gobble}} + +% {}{} + +\newrobustcmd{\AtEndEnvironment}[1]{% + \csgappto{@end@#1@hook}} + +\patchcmd\end + {\csname end#1\endcsname} + {\csuse{@end@#1@hook}% + \csname end#1\endcsname} + {} + {\etb@warning{% + Patching '\string\end' failed!\MessageBreak + '\string\AtEndEnvironment' will not work\@gobble}} + +% {}{} + +\newrobustcmd{\BeforeBeginEnvironment}[1]{% + \csgappto{@beforebegin@#1@hook}} + +\pretocmd\begin + {\csuse{@beforebegin@#1@hook}} + {} + {\etb@warning{% + Patching '\string\begin' failed!\MessageBreak + '\string\BeforeBeginEnvironment' will not work\@gobble}} + +% {}{} + +\newrobustcmd{\AfterEndEnvironment}[1]{% + \csgappto{@afterend@#1@hook}} + +\patchcmd\end + {\if@ignore} + {\csuse{@afterend@#1@hook}% + \if@ignore} + {} + {\etb@warning{% + Patching '\string\end' failed!\MessageBreak + '\string\AfterEndEnvironment' will not work\@gobble}} + +\endinput diff --git a/etoolbox/etoolbox.tex b/etoolbox/etoolbox.tex new file mode 100644 index 0000000..9cd5375 --- /dev/null +++ b/etoolbox/etoolbox.tex @@ -0,0 +1,1482 @@ +% $Id: etoolbox.tex fea70947ae80 2013/05/29 01:53:47 foley $ +\documentclass{ltxdockit}[2010/09/26] +\usepackage[latin9]{inputenc} +\usepackage[american]{babel} +\usepackage[strict]{csquotes} +\usepackage{shortvrb} +\MakeAutoQuote{}{} +\MakeAutoQuote*{<}{>} +\MakeShortVerb{\|} + +\rcsid{$Id: etoolbox.tex fea70947ae80 2013/05/29 01:53:47 foley $} + +\titlepage{% + title={The \sty{etoolbox} Package}, + subtitle={An \etex Toolbox for Class and Package Authors}, + url={http://www.ctan.org/tex-archive/macros/latex/contrib/etoolbox/}, + author={Philipp Lehman}, + email={plehman@gmx.net}, + revision={\rcsrevision}, + date={\rcstoday}} + +\hypersetup{% + pdftitle={The etoolbox Package}, + pdfsubject={An e-TeX Toolbox for Class and Package Authors}, + pdfauthor={Philipp Lehman}, + pdfkeywords={tex, e-tex, latex, class, package, programming}} + +\begin{document} + +\printtitlepage +\tableofcontents + +\section{Introduction} +\label{int} + +\subsection[About]{About \sty{etoolbox}} + +The \sty{etoolbox} package is a toolbox of programming tools geared primarily towards \latex class and package authors. It provides \latex frontends to some of the new primitives provided by \etex as well as some generic tools which are not related to \etex but match the profile of this package. + +\subsection{License} + +Copyright \textcopyright\ 2007--2011 Philipp Lehman. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version 1.3.\fnurl{http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt} This package is author"=maintained. + +\section{User Commands} +\label{use} + +The tools in this section are geared towards regular users as well as class and package authors. + +\subsection{Definitions} +\label{use:def} + +\begin{ltxsyntax} + +\cmditem{newrobustcmd}{command}[arguments][optarg default]{replacement text} +\cmditem*{newrobustcmd*}{command}[arguments][optarg default]{replacement text} + +The syntax and behavior of this command is similar to \cmd{newcommand} except that the newly defined \prm{command} will be robust. The behavior of this command differs from the \cmd{DeclareRobustCommand} command from the \latex kernel in that it issues an error rather than just an informational message if the \prm{command} is already defined. Since it uses \etex's low-level protection mechanism rather than the corresponding higher-level \latex facilities, it does not require an additional macro to implement the . + +\cmditem{renewrobustcmd}{command}[arguments][optarg default]{replacement text} +\cmditem*{renewrobustcmd*}{command}[arguments][optarg default]{replacement text} + +The syntax and behavior of this command is similar to \cmd{renewcommand} except that the redefined \prm{command} will be robust. + +\cmditem{providerobustcmd}{command}[arguments][optarg default]{replacement text} +\cmditem*{providerobustcmd*}{command}[arguments][optarg default]{replacement text} + +The syntax and behavior of this command is similar to \cmd{providecommand} except that the newly defined \prm{command} will be robust. Note that this command will provide a robust definition of the \prm{command} only if it is undefined. It will not make an already defined \prm{command} robust. + +\end{ltxsyntax} + +\subsection{Patching} +\label{use:pat} + +\begin{ltxsyntax} + +\cmditem{robustify}{command} + +Redefines a \prm{command} defined with \cmd{newcommand} such that it is robust, without altering its parameters, its prefixes, or its replacement text. If the \prm{command} has been defined with \cmd{DeclareRobustCommand}, this will be detected automatically and \latex's high-level protection mechanism will be replaced by the corresponding low-level \etex feature. + +\end{ltxsyntax} + +\subsection{Protection} +\label{use:pro} + +\begin{ltxsyntax} + +\cmditem{protecting}{code} + +This command applies \latex's protection mechanism, which normally requires prefixing each fragile command with \cmd{protect}, to an entire chunk of arbitrary \prm{code}. Its behavior depends on the current state of \cmd{protect}. Note that the braces around the \prm{code} are mandatory even if it is a single token. + +\end{ltxsyntax} + +\subsection[Lengths and Counters]{Length and Counter Assignments} +\label{use:cal} + +The tools in this section are replacements for \cmd{setcounter} and \cmd{setlength} which support arithmetic expressions. + +\begin{ltxsyntax} + +\cmditem{defcounter}{counter}{integer expression} + +Assigns a value to a \latex \prm{counter} previously initialized with \cmd{newcounter}. This command is similar in concept and syntax to \cmd{setcounter} except for two major differences. 1) The second argument may be an \prm{integer expression} which will be processed with \cmd{numexpr}. The \prm{integer expression} may be any arbitrary code which is valid in this context. The value assigned to the \prm{counter} will be the result of that calculation. 2) In contrast to \cmd{setcounter}, the assignment is local by default but \cmd{defcounter} may be prefixed with \cs{global}. The functional equivalent of \cmd{setcounter} would be \cs{global}\cmd{defcounter}. + +\cmditem{deflength}{length}{glue expression} + +Assigns a value to a \prm{length} register previously initialized with \cmd{newlength}. This command is similar in concept and syntax to \cmd{setlength} except that the second argument may be a \prm{glue expression} which will be processed with \cmd{glueexpr}. The \prm{glue expression} may be any arbitrary code which is valid in this context. The value assigned to the \prm{length} register will be the result of that calculation. The assignment is local by default but \cmd{deflength} may be prefixed with \cs{global}. This command may be used as a drop-in replacement for \cmd{setlength}. + +\end{ltxsyntax} + +\subsection[Document Hooks]{Additional Document Hooks} +\label{use:pre} + +\latex provides two hooks which defer the execution of code either to the beginning or to the end of the document body. Any \cmd{AtBeginDocument} code is executed towards the beginning of the document body, after the main \file{aux} file has been read for the first time. Any \cmd{AtEndDocument} code is executed at the end of the document body, before the main \file{aux} file is read for the second time. The hooks introduced here are similar in concept but defer the execution of their \prm{code} argument to slightly different locations. The \prm{code} may be arbitrary \tex code. Parameter characters in the \prm{code} argument are permissible and need not be doubled. + +\begin{ltxsyntax} + +\cmditem{AfterPreamble}{code} + +This hook is a variant of \cmd{AtBeginDocument} which may be used in both the preamble and the document body. When used in the preamble, it behaves exactely like \cmd{AtBeginDocument}. When used in the document body, it immediately executes its \prm{code} argument. \cmd{AtBeginDocument} would issue an error in this case. This hook is useful to defer code which needs to write to the main \file{aux} file. + +\cmditem{AtEndPreamble}{code} + +This hook differs from \cmd{AtBeginDocument} in that the \prm{code} is executed right at the end of the preamble, before the main \file{aux} file (as written on the previous \latex pass) is read and prior to any \cmd{AtBeginDocument} code. Note that it is not possible to write to the \file{aux} file at this point. + +\cmditem{AfterEndPreamble}{code} + +This hook differs from \cmd{AtBeginDocument} in that the \prm{code} is executed at the very end of |\begin{document}|, after any \cmd{AtBeginDocument} code. Note that commands whose scope has been restricted to the preamble with \cmd{@onlypreamble} are no longer available when this hook is executed. + +\cmditem{AfterEndDocument}{code} + +This hook differs from \cmd{AtEndDocument} in that the \prm{code} is executed at the very end of the document, after the main \file{aux} file (as written on the current \latex pass) has been read and after any \cmd{AtEndDocument} code. + +\end{ltxsyntax} + +In a way, \cmd{AtBeginDocument} code is part neither of the preamble nor the document body but located in-between them since it gets executed in the middle of the initialization sequence performed prior to typesetting. It is sometimes desirable to move code to the end of the preamble because all requested packages have been loaded at this point. \cmd{AtBeginDocument} code, however, is executed too late if it is required in the \file{aux} file. In contrast to that, \cmd{AtEndPreamble} code is part of the preamble; \cmd{AfterEndPreamble} code is part of the document body and may contain printable text to be typeset at the very beginning of the document. To sum that up, \latex will perform the following tasks |\begin{document}|: + +\begin{itemize} +\setlength{\itemsep}{0pt} +\item Execute any \cmd{AtEndPreamble} code +\item Start initialization for document body (page layout, default fonts, etc.) +\item Load the main \file{aux} file written on the previous \latex pass +\item Open the main \file{aux} file for writing on the current pass +\item Continue initialization for document body +\item Execute any \cmd{AtBeginDocument} code +\item Complete initialization for document body +\item Disable all \cmd{@onlypreamble} commands +\item Execute any \cmd{AfterEndPreamble} code +\end{itemize} +% +Inside |\end{document}|, \latex will perform the following tasks: + +\begin{itemize} +\setlength{\itemsep}{0pt} +\item Execute any \cmd{AtEndDocument} code +\item Perform a final \cmd{clearpage} operation +\item Close the main \file{aux} file for writing +\item Load the main \file{aux} file written on the current \latex pass +\item Perform final tests and issue warnings, if applicable +\item Execute any \cmd{AfterEndDocument} code +\end{itemize} +% +Any \cmd{AtEndDocument} code may be considered as being part of the document body insofar as it is still possible to perform typesetting tasks and write to the main \file{aux} file when it gets executed. \cmd{AfterEndDocument} code is not part of the document body. This hook is useful to evaluate the data in the \file{aux} file at the very end of a \latex pass. + +\subsection[Environment Hooks]{Environment Hooks} +\label{use:env} + +The tools in this section provide hooks for arbitrary environments. Note that they will not modify the definition of the \prm{environment}. They hook into the \cmd{begin} and \cmd{end} commands instead. Redefining the \prm{environment} will not clear the corresponding hooks. The \prm{code} may be arbitrary \tex code. Parameter characters in the \prm{code} argument are permissible and need not be doubled. + +\begin{ltxsyntax} + +\cmditem{AtBeginEnvironment}{environment}{code} + +Appends arbitrary \prm{code} to a hook executed by the \cmd{begin} command at the beginning of a given \prm{environment}, immediately before \cmd{\prm{environment}}, inside the group opened by \cmd{begin}. + +\cmditem{AtEndEnvironment}{environment}{code} + +Appends arbitrary \prm{code} to a hook executed by the \cmd{end} command at the end of a given \prm{environment}, immediately before \cmd{end\prm{environment}}, inside the group opened by \cmd{begin}. + +\cmditem{BeforeBeginEnvironment}{environment}{code} + +Appends arbitrary \prm{code} to a hook executed at a very early point by the \cmd{begin} command, before the group holding the environment is opened. + +\cmditem{AfterEndEnvironment}{environment}{code} + +Appends arbitrary \prm{code} to a hook executed at a very late point by the \cmd{end} command, after the group holding the environment has been closed. + +\end{ltxsyntax} + +\section{Author Commands} + +The tools in this section are geared towards class and package authors. + +\subsection{Definitions} + +\subsubsection{Macro Definitions} +\label{aut:def:def} + +The tools in this section are simple but frequently required shorthands which extend the scope of the \cmd{@namedef} and \cmd{@nameuse} macros from the \latex kernel. + +\begin{ltxsyntax} + +\cmditem{csdef}{csname}{replacement text} + +Similar to the \tex primitive \cmd{def} except that it takes a control sequence name as its first argument. This command is robust and corresponds to \cmd{@namedef}. + +\cmditem{csgdef}{csname}{replacement text} + +Similar to the \tex primitive \cmd{gdef} except that it takes a control sequence name as its first argument. This command is robust. + +\cmditem{csedef}{csname}{replacement text} + +Similar to the \tex primitive \cmd{edef} except that it takes a control sequence name as its first argument. This command is robust. + +\cmditem{csxdef}{csname}{replacement text} + +Similar to the \tex primitive \cmd{xdef} except that it takes a control sequence name as its first argument. This command is robust. + +\cmditem{protected@csedef}{csname}{replacement text} + +Similar to \cmd{csedef} except that \latex's protection mechanism is temporarily enabled. To put it in other words: this command is similar to the \latex kernel command \cmd{protected@edef} except that it takes a control sequence name as its first argument. This command is robust. + +\cmditem{protected@csxdef}{csname}{replacement text} + +Similar to \cmd{csxdef} except that \latex's protection mechanism is temporarily enabled. To put it in other words: this command is similar to the \latex kernel command \cmd{protected@xdef} except that it takes a control sequence name as its first argument. This command is robust. + +\cmditem{cslet}{csname}{command} + +Similar to the \tex primitive \cmd{let} except that the first argument is a control sequence name. If \prm{command} is undefined, \prm{csname} will be undefined as well after the assignment. This command is robust and may be prefixed with \cs{global}. + +\cmditem{letcs}{command}{csname} + +Similar to the \tex primitive \cmd{let} except that the second argument is a control sequence name. If \prm{csname} is undefined, the \prm{command} will be undefined as well after the assignment. This command is robust and may be prefixed with \cs{global}. + +\cmditem{csletcs}{csname}{csname} + +Similar to the \tex primitive \cmd{let} except that both arguments are control sequence names. If the second \prm{csname} is undefined, the first \prm{csname} will be undefined as well after the assignment. This command is robust and may be prefixed with \cs{global}. + +\cmditem{csuse}{csname} + +Takes a control sequence name as its argument and forms a control sequence token. This command differs from the \cmd{@nameuse} macro in the \latex kernel in that it expands to an empty string if the control sequence is undefined. + +\cmditem{undef} + +Clears a \prm{command} such that \etex's \cmd{ifdefined} and \cmd{ifcsname} tests will consider it as undefined. This command is robust and may be prefixed with \cs{global}. + +\cmditem{csundef}{csname} + +Similar to \cmd{undef} except that it takes a control sequence name as its argument. This command is robust and may be prefixed with \cs{global}. + +\cmditem{csshow}{csname} + +Similar to the \tex primitive \cmd{show} but takes a control sequence name as its argument. If the control sequence is undefined, this command will not implicitly assign a meaning of \cmd{relax} to it. This command is robust. + +\end{ltxsyntax} + +\subsubsection{Arithmetic Definitions} +\label{aut:def:cal} + +The tools in this section permit calculations using macros rather than length registers and counters. + +\begin{ltxsyntax} + +\cmditem{numdef}{integer expression} + +Similar to \cmd{edef} except that the \prm{integer expression} is processed with \cmd{numexpr}. The \prm{integer expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0} before the \prm{integer expression} is processed. + +\cmditem{numgdef}{integer expression} + +Similar to \cmd{numdef} except that the assignment is global. + +\cmditem{csnumdef}{csname}{integer expression} + +Similar to \cmd{numdef} except that it takes a control sequence name as its first argument. + +\cmditem{csnumgdef}{csname}{integer expression} + +Similar to \cmd{numgdef} except that it takes a control sequence name as its first argument. + +\cmditem{dimdef}{dimen expression} + +Similar to \cmd{edef} except that the \prm{dimen expression} is processed with \cmd{dimexpr}. The \prm{dimen expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0pt} before the \prm{dimen expression} is processed. + +\cmditem{dimgdef}{dimen expression} + +Similar to \cmd{dimdef} except that the assignment is global. + +\cmditem{csdimdef}{csname}{dimen expression} + +Similar to \cmd{dimdef} except that it takes a control sequence name as its first argument. + +\cmditem{csdimgdef}{csname}{dimen expression} + +Similar to \cmd{dimgdef} except that it takes a control sequence name as its first argument. + +\cmditem{gluedef}{glue expression} + +Similar to \cmd{edef} except that the \prm{glue expression} is processed with \cmd{glueexpr}. The \prm{glue expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0pt plus 0pt minus 0pt} before the \prm{glue expression} is processed. + +\cmditem{gluegdef}{glue expression} + +Similar to \cmd{gluedef} except that the assignment is global. + +\cmditem{csgluedef}{csname}{glue expression} + +Similar to \cmd{gluedef} except that it takes a control sequence name as its first argument. + +\cmditem{csgluegdef}{csname}{glue expression} + +Similar to \cmd{gluegdef} except that it takes a control sequence name as its first argument. + +\cmditem{mudef}{muglue expression} + +Similar to \cmd{edef} except that the \prm{muglue expression} is processed with \cmd{muexpr}. The \prm{muglue expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0mu} before the \prm{muglue expression} is processed. + +\cmditem{mugdef}{muglue expression} + +Similar to \cmd{mudef} except that the assignment is global. + +\cmditem{csmudef}{csname}{muglue expression} + +Similar to \cmd{mudef} except that it takes a control sequence name as its first argument. + +\cmditem{csmugdef}{csname}{muglue expression} + +Similar to \cmd{mugdef} except that it takes a control sequence name as its first argument. + +\end{ltxsyntax} + +\subsection{Expansion Control} +\label{aut:exp} + +The tools in this section are useful to control expansion in an \cmd{edef} or a similar context. + +\begin{ltxsyntax} + +\cmditem{expandonce} + +This command expands a \prm{command} once and prevents further expansion of the replacement text. This command is expandable. + +\cmditem{csexpandonce}{csname} + +Similar to \cmd{expandonce} except that it takes a control sequence name as its argument. + +\end{ltxsyntax} + +\subsection{Hook Management} +\label{aut:hok} + +The tools in this section are intended for hook management. A \prm{hook} in this context is a plain macro without any parameters and prefixes which is used to collect code to be executed later. These tools may also be useful to patch simple macros by appending code to their replacement text. For more complex patching operations, see section \ref{aut:pat}. All commands in this section will initialize the \prm{hook} if it is undefined. + +\subsubsection{Appending to a Hook} +\label{aut:hok:app} + +The tools in this section append arbitrary code to a hook. + +\begin{ltxsyntax} + +\cmditem{appto}{code} + +This command appends arbitrary \prm{code} to a \prm{hook}. If the \prm{code} contains any parameter characters, they need not be doubled. This command is robust. + +\cmditem{gappto}{code} + +Similar to \cmd{appto} except that the assignment is global. This command may be used as a drop-in replacement for the \cmd{g@addto@macro} command in the \latex kernel. + +\cmditem{eappto}{code} + +This command appends arbitrary \prm{code} to a \prm{hook}. The \prm{code} is expanded at definition"=time. Only the new \prm{code} is expanded, the current replacement text of the \prm{hook} is not. This command is robust. + +\cmditem{xappto}{code} + +Similar to \cmd{eappto} except that the assignment is global. + +\cmditem{protected@eappto}{code} + +Similar to \cmd{eappto} except that \latex's protection mechanism is temporarily enabled. + +\cmditem{protected@xappto}{code} + +Similar to \cmd{xappto} except that \latex's protection mechanism is temporarily enabled. + +\cmditem{csappto}{csname}{code} + +Similar to \cmd{appto} except that it takes a control sequence name as its first argument. + +\cmditem{csgappto}{csname}{code} + +Similar to \cmd{gappto} except that it takes a control sequence name as its first argument. + +\cmditem{cseappto}{csname}{code} + +Similar to \cmd{eappto} except that it takes a control sequence name as its first argument. + +\cmditem{csxappto}{csname}{code} + +Similar to \cmd{xappto} except that it takes a control sequence name as its first argument. + +\cmditem{protected@cseappto}{code} + +Similar to \cmd{protected@eappto} except that it takes a control sequence name as its first argument. + +\cmditem{protected@csxappto}{code} + +Similar to \cmd{protected@xappto} except that it takes a control sequence name as its first argument. + +\end{ltxsyntax} + +\subsubsection{Prepending to a Hook} +\label{aut:hok:pre} + +The tools in this section arbitrary code to a hook, \ie the code is inserted at the beginning of the hook rather than being added at the end. + +\begin{ltxsyntax} + +\cmditem{preto}{code} + +Similar to \cmd{appto} except that the \prm{code} is prepended. + +\cmditem{gpreto}{code} + +Similar to \cmd{preto} except that the assignment is global. + +\cmditem{epreto}{code} + +Similar to \cmd{eappto} except that the \prm{code} is prepended. + +\cmditem{xpreto}{code} + +Similar to \cmd{epreto} except that the assignment is global. + +\cmditem{protected@epreto}{code} + +Similar to \cmd{epreto} except that \latex's protection mechanism is temporarily enabled. + +\cmditem{protected@xpreto}{code} + +Similar to \cmd{xpreto} except that \latex's protection mechanism is temporarily enabled. + +\cmditem{cspreto}{csname}{code} + +Similar to \cmd{preto} except that it takes a control sequence name as its first argument. + +\cmditem{csgpreto}{csname}{code} + +Similar to \cmd{gpreto} except that it takes a control sequence name as its first argument. + +\cmditem{csepreto}{csname}{code} + +Similar to \cmd{epreto} except that it takes a control sequence name as its first argument. + +\cmditem{csxpreto}{csname}{code} + +Similar to \cmd{xpreto} except that it takes a control sequence name as its first argument. + +\cmditem{protected@csepreto}{code} + +Similar to \cmd{protected@epreto} except that it takes a control sequence name as its first argument. + +\cmditem{protected@csxpreto}{code} + +Similar to \cmd{protected@xpreto} except that it takes a control sequence name as its first argument. + +\end{ltxsyntax} + +\subsection{Patching} +\label{aut:pat} + +The tools in this section are useful to hook into or modify existing code. All commands presented here preserve the parameters and the prefixes of the patched \prm{command}. Note that \cs{outer} commands may not be patched. Also note that the commands in this section will not automatically issue any error messages if patching fails. Instead, they take a \prm{failure} argument which should provide suitable fallback code or an error message. Issuing \cmd{tracingpatches} in the preamble will cause the commands to write debugging information to the transcript file. + +\begin{ltxsyntax} + +\cmditem{patchcmd}[prefix]{command}{search}{replace}{success}{failure} + +This command extracts the replacement text of a \prm{command}, replaces \prm{search} with \prm{replace}, and reassembles the \prm{command}. The pattern match is category code agnostic and matches the first occurence of the \prm{search} pattern in the replacement text of the \prm{command} to be patched. Note that the patching process involves detokenizing the replacement text of the \prm{command} and retokenizing it under the current category code regime after patching. The category code of the @ sign is temporarily set to 11. If the replacement text of the \prm{command} includes any tokens with non"=standard category codes, the respective category codes must be adjusted prior to patching. If the code to be replaced or inserted refers to the parameters of the \prm{command} to be patched, the parameter characters need not be doubled. If an optional \prm{prefix} is specified, it replaces the prefixes of the \prm{command}. An empty \prm{prefix} argument strips all prefixes from the \prm{command}. The assignment is local. This command implicitly performs the equivalent of an \cmd{ifpatchable} test prior to patching. If this test succeeds, the command applies the patch and executes \prm{success}. If the test fails, it executes \prm{failure} without modifying the original \prm{command}. This command is robust. + +\cmditem{ifpatchable}{command}{search}{true}{false} + +This command executes \prm{true} if the \prm{command} may be patched with \cmd{patchcmd} and if the \prm{search} pattern is found in its replacement text, and \prm{false} otherwise. This command is robust. + +\cmditem*{ifpatchable*}{command}{true}{false} + +Similar to \cmd{ifpatchable} except that the starred variant does not require a search pattern. Use this version to check if a command may be patched with \cmd{apptocmd} and \cmd{pretocmd}. + +\cmditem{apptocmd}{command}{code}{success}{failure} + +This command appends \prm{code} to the replacement text of a \prm{command}. If the \prm{command} is a parameterless macro, it behaves like \cmd{appto} from section \ref{aut:hok:app}. In contrast to \cmd{appto}, \cmd{apptocmd} may also be used to patch commands with parameters. In this case, it will detokenize the replacement text of the \prm{command}, apply the patch, and retokenize it under the current category code regime. The category code of the @ sign is temporarily set to 11. The \prm{code} may refer to the parameters of the \prm{command}. The assignment is local. If patching succeeds, this command executes \prm{success}. If patching fails, it executes \prm{failure} without modifying the original \prm{command}. This command is robust. + +\cmditem{pretocmd}{command}{code}{success}{failure} + +This command is similar to \cmd{apptocmd} except that the \prm{code} is inserted at the beginning of the replacement text of the \prm{command}. If the \prm{command} is a parameterless macro, it behaves like \cmd{preto} from section \ref{aut:hok:app}. In contrast to \cmd{preto}, \cmd{pretocmd} may also be used to patch commands with parameters. In this case, it will detokenize the replacement text of the \prm{command}, apply the patch, and retokenize it under the current category code regime. The category code of the @ sign is temporarily set to 11. The \prm{code} may refer to the parameters of the \prm{command}. The assignment is local. If patching succeeds, this command executes \prm{success}. If patching fails, it executes \prm{failure} without modifying the original \prm{command}. This command is robust. + +\csitem{tracingpatches} + +Enables tracing for all patching commands, including \cmd{ifpatchable}. The debugging information will be written to the transcript file. This is useful if the reason why a patch is not applied or \cmd{ifpatchable} yields \prm{false} is not obvious. This command must be issued in the preamble. + +\end{ltxsyntax} + +\subsection{Boolean Flags} +\label{aut:bol} + +This package provides two interfaces to boolean flags which are completely independent of each other. The tools in section \ref{aut:bo1:bol} are a \latex frontend to \cmd{newif}. Those in section \ref{aut:bo1:tgl} use a different mechanism. + +\subsubsection{\tex Flags} +\label{aut:bo1:bol} + +Since the tools in this section are based on \cmd{newif} internally, they may be used to test and alter the state of flags previously defined with \cmd{newif}. They are also compatible with the boolean tests of the \sty{ifthen} package and may serve as a \latex interface for querying \tex primitives such as \cmd{ifmmode}. The \cmd{newif} approach requires a total of three macros per flag. + +\begin{ltxsyntax} + +\cmditem{newbool}{name} + +Defines a new boolean flag called \prm{name}. If the flag has already been defined, this command issues an error. The initial state of newly defined flags is \texttt{false}. This command is robust. + +\cmditem{providebool}{name} + +Defines a new boolean flag called \prm{name} unless it has already been defined. This command is robust. + +\cmditem{booltrue}{name} + +Sets the boolean flag \prm{name} to \texttt{true}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. + +\cmditem{boolfalse}{name} + +Sets the boolean flag \prm{name} to \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. + +\cmditem{setbool}{name}{value} + +Sets the boolean flag \prm{name} to \prm{value} which may be either \texttt{true} or \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. + +\cmditem{ifbool}{name}{true}{false} + +Expands to \prm{true} if the state of the boolean flag \prm{name} is \texttt{true}, and to \prm{false} otherwise. If the flag is undefined, this command issues an error. This command may be used to perform any boolean test based on plain \tex syntax, \ie any test normally employed like this: + +\begin{ltxcode} +<<\iftest>> true<<\else>> false<<\fi>> +\end{ltxcode} + +This includes all flags defined with \cmd{newif} as well as \tex primitives such as \cmd{ifmmode}. The \cmd{if} prefix is omitted when using the flag or the primitive in the expression. For example: + +\begin{ltxcode} +<<\ifmytest>> true\else false\fi +<<\ifmmode>> true\else false\fi +\end{ltxcode} +% +becomes + +\begin{ltxcode} +\ifbool{<>}{true}{false} +\ifbool{<>}{true}{false} +\end{ltxcode} + +\cmditem{notbool}{name}{not true}{not false} + +Similar to \cmd{ifbool} but negates the test. + +\end{ltxsyntax} + +\subsubsection{\latex Flags} +\label{aut:bo1:tgl} + +In contrast to the flags from section \ref{aut:bo1:bol}, the tools in this section require only one macro per flag. They also use a separate namespace to avoid name clashes with regular macros. + +\begin{ltxsyntax} + +\cmditem{newtoggle}{name} + +Defines a new boolean flag called \prm{name}. If the flag has already been defined, this command issues an error. The initial state of newly defined flags is \texttt{false}. This command is robust. + +\cmditem{providetoggle}{name} + +Defines a new boolean flag called \prm{name} unless it has already been defined. This command is robust. + +\cmditem{toggletrue}{name} + +Sets the boolean flag \prm{name} to \texttt{true}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. + +\cmditem{togglefalse}{name} + +Sets the boolean flag \prm{name} to \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. + +\cmditem{settoggle}{name}{value} + +Sets the boolean flag \prm{name} to \prm{value} which may be either \texttt{true} or \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. + +\cmditem{iftoggle}{name}{true}{false} + +Expands to \prm{true} if the state of the boolean flag \prm{name} is \texttt{true}, and to \prm{false} otherwise. If the flag is undefined, this command issues an error. + +\cmditem{nottoggle}{name}{not true}{not false} + +Similar to \cmd{iftoggle} but negates the test. + +\end{ltxsyntax} + +\subsection{Generic Tests} +\label{aut:tst} + +\subsubsection{Macro Tests} +\label{aut:tst:def} + +\begin{ltxsyntax} + +\cmditem{ifdef}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is defined, and to \prm{false} otherwise. Note that control sequences will be considered as defined even if their meaning is \cmd{relax}. This command is a \latex wrapper for the \etex primitive \cmd{ifdefined}. + +\cmditem{ifcsdef}{csname}{true}{false} + +Similar to \cmd{ifdef} except that it takes a control sequence name as its first argument. This command is a \latex wrapper for the \etex primitive \cmd{ifcsname}. + +\cmditem{ifundef}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is undefined, and to \prm{false} otherwise. Apart from reversing the logic of the test, this command also differs from \cmd{ifdef} in that commands will be considered as undefined if their meaning is \cmd{relax}. + +\cmditem{ifcsundef}{csname}{true}{false} + +Similar to \cmd{ifundef} except that it takes a control sequence name as its first argument. This command may be used as a drop-in replacement for the \cmd{@ifundefined} test in the \latex kernel. + +\cmditem{ifdefmacro}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is defined and is a macro, and to \prm{false} otherwise. + +\cmditem{ifcsmacro}{csname}{true}{false} + +Similar to \cmd{ifdefmacro} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefparam}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is defined and is a macro with one or more parameters, and to \prm{false} otherwise. + +\cmditem{ifcsparam}{csname}{true}{false} + +Similar to \cmd{ifdefparam} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefprefix}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is defined and is a macro prefixed with \cs{long} and\slash or \cs{protected}, and to \prm{false} otherwise. Note that \cs{outer} macros may not be tested. + +\cmditem{ifcsprefix}{csname}{true}{false} + +Similar to \cmd{ifdefprefix} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefprotected}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is defined and is a macro prefixed with \cs{protected}, and to \prm{false} otherwise. + +\cmditem{ifcsprotected}{csname}{true}{false} + +Similar to \cmd{ifdefprotected} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefltxprotect}{control sequence}{true}{false} + +Executes \prm{true} if the \prm{control sequence} is defined and is a \latex protection shell, and \prm{false} otherwise. This command is robust. It will detect commands which have been defined with \cmd{DeclareRobustCommand} or by way of a similar technique. + +\cmditem{ifcsltxprotect}{csname}{true}{false} + +Similar to \cmd{ifdefltxprotect} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefempty}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is defined and is a parameterless macro whose replacement text is empty, and to \prm{false} otherwise. In contrast to \cmd{ifx}, this test ignores the prefixes of the \prm{command}. + +\cmditem{ifcsempty}{csname}{true}{false} + +Similar to \cmd{ifdefempty} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefvoid}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is undefined, if is a macro whose meaning is \cmd{relax}, or a parameterless macro whose replacement text is empty, and to \prm{false} otherwise. + +\cmditem{ifcsvoid}{csname}{true}{false} + +Similar to \cmd{ifdefvoid} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefequal}{control sequence}{control sequence}{true}{false} + +Compares two control sequences and expands to \prm{true} if they are equal in the sense of \cmd{ifx}, and to \prm{false} otherwise. In contrast to \cmd{ifx}, this test will also yield \prm{false} if both control sequences are undefined or have a meaning of \cmd{relax}. + +\cmditem{ifcsequal}{csname}{csname}{true}{false} + +Similar to \cmd{ifdefequal} except that it takes control sequence names as arguments. + +\cmditem{ifdefstring}{command}{string}{true}{false} + +Compares the replacement text of a \prm{command} to a \prm{string} and executes \prm{true} if they are equal, and \prm{false} otherwise. Neither the \prm{command} nor the \prm{string} is expanded in the test and the comparison is category code agnostic. Control sequence tokens in the \prm{string} argument will be detokenized and treated as strings. This command is robust. Note that it will only consider the replacement text of the \prm{command}. For example, this test + +\begin{ltxcode} +\long\edef\mymacro#1#2{\string&} +\ifdefstring{\mymacro}{&}{true}{false} +\end{ltxcode} +% +would yield \prm{true}. The prefix and the parameters of \cmd{mymacro} as well as the category codes in the replacement text are ignored. + +\cmditem{ifcsstring}{csname}{string}{true}{false} + +Similar to \cmd{ifdefstring} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefstrequal}{command}{command}{true}{false} + +Performs a category code agnostic string comparison of the replacement text of two commands. This command is similar to \cmd{ifdefstring} except that both arguments to be compared are macros. This command is robust. + +\cmditem{ifcsstrequal}{csname}{csname}{true}{false} + +Similar to \cmd{ifdefstrequal} except that it takes control sequence names as arguments. + +\end{ltxsyntax} + +\subsubsection{Counter and Length Tests} +\label{aut:tst:cnt} + +\begin{ltxsyntax} + +\cmditem{ifdefcounter}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is a \tex \cmd{count} register allocated with \cmd{newcount}, and to \prm{false} otherwise. + +\cmditem{ifcscounter}{csname}{true}{false} + +Similar to \cmd{ifdefcounter} except that it takes a control sequence name as its first argument. + +\cmditem{ifltxcounter}{name}{true}{false} + +Expands to \prm{true} if \prm{name} is a \latex counter allocated with \cmd{newcounter}, and to \prm{false} otherwise. + +\cmditem{ifdeflength}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is a \tex \cmd{skip} register allocated with \cmd{newskip} or \cmd{newlength}, and to \prm{false} otherwise. + +\cmditem{ifcslength}{csname}{true}{false} + +Similar to \cmd{ifdeflength} except that it takes a control sequence name as its first argument. + +\cmditem{ifdefdimen}{control sequence}{true}{false} + +Expands to \prm{true} if the \prm{control sequence} is a \tex \cmd{dimen} register allocated with \cmd{newdimen}, and to \prm{false} otherwise. + +\cmditem{ifcsdimen}{csname}{true}{false} + +Similar to \cmd{ifdefdimen} except that it takes a control sequence name as its first argument. + +\end{ltxsyntax} + +\subsubsection{String Tests} +\label{aut:tst:str} + +\begin{ltxsyntax} + +\cmditem{ifstrequal}{string}{string}{true}{false} + +Compares two strings and executes \prm{true} if they are equal, and \prm{false} otherwise. The strings are not expanded in the test and the comparison is category code agnostic. Control sequence tokens in any of the \prm{string} arguments will be detokenized and treated as strings. This command is robust. + +\cmditem{ifstrempty}{string}{true}{false} + +Expands to \prm{true} if the \prm{string} is empty, and to \prm{false} otherwise. The \prm{string} is not expanded in the test. + +\cmditem{ifblank}{string}{true}{false} + +Expands to \prm{true} if the \prm{string} is blank (empty or spaces), and to \prm{false} otherwise. The \prm{string} is not expanded in the test.\footnote{This macro is based on code by Donald Arseneau.} + +\cmditem{notblank}{string}{not true}{not false} + +Similar to \cmd{ifblank} but negates the test. + +\end{ltxsyntax} + +\subsubsection{Arithmetic Tests} +\label{aut:tst:num} + +\begin{ltxsyntax} + +\cmditem{ifnumcomp}{integer expression}{relation}{integer expression}{true}{false} + +Compares two integer expressions according to \prm{relation} and expands to \prm{true} or \prm{false} depending on the result. The \prm{relation} may be |<|, |>|, or |=|. Both integer expressions will be processed with \cmd{numexpr}. An \prm{integer expression} may be any arbitrary code which is valid in this context. All arithmetic expressions may contain spaces. Here are some examples: + +\begin{ltxcode} +\ifnumcomp{<<3>>}{<<>>>}{<<6>>}{true}{<>} +\ifnumcomp{<<(7 + 5) / 2>>}{<<=>>}{<<6>>}{<>}{false} +\ifnumcomp{<<(7+5) / 4>>}{<<>>>}{<<3*(12-10)>>}{true}{<>} +\newcounter{countA} +\setcounter{countA}{<<6>>} +\newcounter{countB} +\setcounter{countB}{<<5>>} +\ifnumcomp{<<\value{countA} * \value{countB}/2}>>{<<=>>}{<<15>>}{<>}{false} +\ifnumcomp{<<6/2>>}{<<=>>}{<<5/2>>}{<>}{false} +\end{ltxcode} +% +Technically, this command is a \latex wrapper for the \tex primitive \cmd{ifnum}, incorporating \cmd{numexpr}. Note that \cmd{numexpr} will round the result of all integer expressions, \ie both expressions will be processed and rounded prior to being compared. In the last line of the above examples, the result of the second expression is 2.5, which is rounded to 3, hence \cmd{ifnumcomp} will expand to \prm{true}. + +\cmditem{ifnumequal}{integer expression}{integer expression}{true}{false} + +Alternative syntax for |\ifnumcomp{...}{=}{...}{...}{...}|. + +\cmditem{ifnumgreater}{integer expression}{integer expression}{true}{false} + +Alternative syntax for |\ifnumcomp{...}{>}{...}{...}{...}|. + +\cmditem{ifnumless}{integer expression}{integer expression}{true}{false} + +Alternative syntax for |\ifnumcomp{...}{<}{...}{...}{...}|. + +\cmditem{ifnumodd}{integer expression}{true}{false} + +Evaluates an integer expression and expands to \prm{true} if the result is an odd number, and to \prm{false} otherwise. Technically, this command is a \latex wrapper for the \tex primitive \cmd{ifodd}, incorporating \cmd{numexpr}. + +\cmditem{ifdimcomp}{dimen expression}{relation}{dimen expression}{true}{false} + +Compares two dimen expressions according to \prm{relation} and expands to \prm{true} or \prm{false} depending on the result. The \prm{relation} may be |<|, |>|, or |=|. Both dimen expressions will be processed with \cmd{dimexpr}. A \prm{dimen expression} may be any arbitrary code which is valid in this context. All arithmetic expressions may contain spaces. Here are some examples: + +\begin{ltxcode} +\ifdimcomp{<<1cm>>}{<<=>>}{<<28.45274pt>>}{<>}{false} +\ifdimcomp{<<(7pt + 5pt) / 2>>}{<<<>>}{2pt}{true}{<>} +\ifdimcomp{<<(3.725pt + 0.025pt) * 2>>}{<<<>>}{<<7pt>>}{true}{<>} +\newlength{\lengthA} +\setlength{\lengthA}{<<7.25pt>>} +\newlength{\lengthB} +\setlength{\lengthB}{<<4.75pt>>} +\ifdimcomp{<<(\lengthA + \lengthB) / 2>>}{<<>>>}{<<2.75pt * 2>>}{<>}{false} +\ifdimcomp{<<(\lengthA + \lengthB) / 2>>}{<<>>>}{<<25pt / 6>>}{<>}{false} +\end{ltxcode} +% +Technically, this command is a \latex wrapper for the \tex primitive \cmd{ifdim}, incorporating \cmd{dimexpr}. Since both \cmd{ifdimcomp} and \cmd{ifnumcomp} are expandable, they may also be nested: + +\begin{ltxcode} +<<\ifnumcomp>>{<<\ifdimcomp>>{<<5pt+5pt>>}{<<=>>}{<<10pt>>}{<<1>>}{<<0>>}}{<<>>>}{<<0>>}{<>}{false} +\end{ltxcode} + +\cmditem{ifdimequal}{dimen expression}{dimen expression}{true}{false} + +Alternative syntax for |\ifdimcomp{...}{=}{...}{...}{...}|. + +\cmditem{ifdimgreater}{dimen expression}{dimen expression}{true}{false} + +Alternative syntax for |\ifdimcomp{...}{>}{...}{...}{...}|. + +\cmditem{ifdimless}{dimen expression}{dimen expression}{true}{false} + +Alternative syntax for |\ifdimcomp{...}{<}{...}{...}{...}|. + +\end{ltxsyntax} + +\subsubsection{Boolean Expressions} +\label{aut:tst:bol} + +The commands in this section are replacements for the \cmd{ifthenelse} command provided by the \sty{ifthen} package. They serve the same purpose but differ in syntax, concept, and implementation. In contrast to \cmd{ifthenelse}, they do not provide any tests of their own but serve as a frontend to other tests. Any test which satisfies certain syntactical requirements may be used in a boolean expression. + +\begin{ltxsyntax} + +\cmditem{ifboolexpr}{expression}{true}{false} + +Evaluates the \prm{expression} and executes \prm{true} if it is true, and \prm{false} otherwise. The \prm{expression} is evaluated sequentially from left to right. The following elements, discussed in more detail below, are available in the \prm{expression}: the test operators \texttt{togl}, \texttt{bool}, \texttt{test}; the logical operators \texttt{not}, \texttt{and}, \texttt{or}; and the subexpression delimiter \texttt{(...)}. Spaces, tabs, and line endings may be used freely to arrange the \prm{expression} visually. Blank lines are not permissible in the \prm{expression}. This command is robust. + +\cmditem{ifboolexpe}{expression}{true}{false} + +An expandable version of \cmd{ifboolexpr} which may be processed in an expansion-only context, \eg in an \cmd{edef} or in a \cmd{write} operation. Note that all tests used in the \prm{expression} must be expandable, even if \cmd{ifboolexpe} is not located in an expansion-only context. + +\cmditem{whileboolexpr}{expression}{code} + +Evaluates the \prm{expression} like \cmd{ifboolexpr} and repeatedly executes the \prm{code} while the expression is true. The \prm{code} may be any valid \tex or \latex code. This command is robust. + +\cmditem{unlessboolexpr}{expression}{code} + +Similar to \cmd{whileboolexpr} but negates the \prm{expression}, \ie it keeps executing the \prm{code} repeatedly unless the expression is true. This command is robust. + +\end{ltxsyntax} +% +The following test operators are available in the \prm{expression}: + +\begin{marglist} +\appto\marglistfont{\verbatimfont} + +\item[togl] + +Use the \texttt{togl} operator to test the state of a flag defined with \cmd{newtoggle}. For example: + +\begin{ltxcode} +<<\iftoggle{mytoggle}>>{true}{false} +\end{ltxcode} +% +becomes + +\begin{ltxcode} +\ifboolexpr{ <> {<>} }{true}{false} +\end{ltxcode} +% +The \texttt{togl} operator may be used with both \cmd{ifboolexpr} and \cmd{ifboolexpe}. + +\item[bool] + +Use the \texttt{bool} operator to perform a boolean test based on plain \tex syntax, \ie any test normally employed like this: + +\begin{ltxcode} +<<\iftest>> true<<\else>> false<<\fi>> +\end{ltxcode} +% +This includes all flags defined with \cmd{newif} as well as \tex primitives such as \cmd{ifmmode}. The \cmd{if} prefix is omitted when using the flag or the primitive in the expression. For example: + +\begin{ltxcode} +<<\ifmmode>> true\else false\fi +<<\ifmytest>> true\else false\fi +\end{ltxcode} +% +becomes + +\begin{ltxcode} +\ifboolexpr{ <> {<>} }{true}{false} +\ifboolexpr{ <> {<>} }{true}{false} +\end{ltxcode} +% +This also works with flags defined with \cmd{newbool} (see \secref{aut:bo1:bol}). In this case + +\begin{ltxcode} +<<\ifbool{mybool}>>{true}{false} +\end{ltxcode} +% +becomes + +\begin{ltxcode} +\ifboolexpr{ <> {<>} }{true}{false} +\end{ltxcode} +% +The \texttt{bool} operator may be used with both \cmd{ifboolexpr} and \cmd{ifboolexpe}. + +\item[test] + +Use the \texttt{test} operator to perform a test based on \latex syntax, \ie any test normally employed like this: + +\begin{ltxcode} +<<\iftest>>{<>}{<>} +\end{ltxcode} +% +This applies to all macros based on \latex syntax, \ie the macro must take a \prm{true} and a \prm{false} argument and these must be the final arguments. For example: + +\begin{ltxcode} +<<\ifdef>>{\somemacro}<<{true}{false}>> +<<\ifdimless>>{\textwidth}{365pt}<<{true}{false}>> +<<\ifnumcomp>>{\value{somecounter}}{>}{3}<<{true}{false}>> +\end{ltxcode} + +When using such tests in the \prm{expression}, their \prm{true} and \prm{false} arguments are omitted. For example: + +\begin{ltxcode} +<<\ifcsdef{mymacro}>>{true}{false} +\end{ltxcode} +% +becomes + +\begin{ltxcode} +\ifboolexpr{ <> {<<\ifcsdef{mymacro}>>} }{true}{false} +\end{ltxcode} +% +and + +\begin{ltxcode} +<<\ifnumcomp{\value{mycounter}}{>}{3}>>{true}{false} +\end{ltxcode} +% +becomes + +\begin{ltxcode} +\ifboolexpr{ + <> {<<\ifnumcomp{\value{mycounter}}{>}{3}>>} +} +{true} +{false} +\end{ltxcode} +% +The \texttt{test} operator may be used with \cmd{ifboolexpr} without any restrictions. It may also be used with \cmd{ifboolexpe}, provided that the test is expandable. Some of the generic tests in \secref{aut:tst} are robust and may not be used with \cmd{ifboolexpe}, even if \cmd{ifboolexpe} is not located in an expansion-only context. Use \cmd{ifboolexpr} instead if the test is not expandable. + +\end{marglist} + +Since \cmd{ifboolexpr} and \cmd{ifboolexpe} imply processing overhead, there is generally no benefit in employing them for a single test. The stand-alone tests in \secref{aut:tst} are more efficient than \texttt{test}, \cmd{ifbool} from \secref{aut:bo1:bol} is more efficient than \texttt{bool}, and \cmd{iftoggle} from \secref{aut:bo1:tgl} is more efficient than \texttt{togl}. The point of \cmd{ifboolexpr} and \cmd{ifboolexpe} is that they support logical operators and subexpressions. The following logical operators are available in the \prm{expression}: + +\begin{marglist} +\appto\marglistfont{\verbatimfont} + +\item[not] + +The \texttt{not} operator negates the truth value of the immediately following element. You may prefix \texttt{togl}, \texttt{bool}, \texttt{test}, and subexpressions with \texttt{not}. For example: + +\begin{ltxcode} +\ifboolexpr{ + <> bool {mybool} +} +{true} +{false} +\end{ltxcode} +% +will yield \prm{true} if \texttt{mybool} is false and \prm{false} if \texttt{mybool} is true, and + +\begin{ltxcode} +\ifboolexpr{ + <> bool {boolA} or bool {boolB} <<)>> +} +{true} +{false} +\end{ltxcode} +% +will yield \prm{true} if both \texttt{boolA} and \texttt{boolB} are false. + +\item[and] + +The \texttt{and} operator expresses a conjunction (both \emph{a} and \emph{b}). The \prm{expression} is true if all elements joined with \texttt{and} are true. For example: + +\begin{ltxcode} +\ifboolexpr{ + bool {boolA} <> bool {boolB} +} +{true} +{false} +\end{ltxcode} +% +will yield \prm{true} if both \texttt{bool} tests are true. The \texttt{nand} operator (negated \texttt{and}, \ie not both) is not provided as such but may be expressed by using \texttt{and} in a negated subexpression. For example: + +\begin{ltxcode} +bool {boolA} <> bool {boolB} +\end{ltxcode} +% +may be written as + +\begin{ltxcode} +<> <<(>> bool {boolA} <> bool {boolB} <<)>> +\end{ltxcode} + +\item[or] + +The \texttt{or} operator expresses a non-exclusive disjunction (either \emph{a} or \emph{b} or both). The \prm{expression} is true if at least one of the elements joined with \texttt{or} is true. For example: + +\begin{ltxcode} +\ifboolexpr{ + togl {toglA} <> togl {toglB} +} +{true} +{false} +\end{ltxcode} +% +will yield \prm{true} if either \texttt{togl} test or both tests are true. The \texttt{nor} operator (negated non-exclusive disjunction, \ie neither \emph{a} nor \emph{b} nor both) is not provided as such but may be expressed by using \texttt{or} in a negated subexpression. For example: + +\begin{ltxcode} +bool {boolA} <> bool {boolB} +\end{ltxcode} +% +may be written as + +\begin{ltxcode} +<> <<(>> bool {boolA} <> bool {boolB} <<)>> +\end{ltxcode} + +\item[(...)] + +The parentheses delimit a subexpression in the \prm{expression}. The subexpression is evaluated and the result of this evaluation is treated as a single truth value in the enclosing expression. Subexpressions may be nested. For example, the expression: + +\begin{ltxcode} + <<(>> bool {boolA} or bool {boolB} <<)>> + and + <<(>> bool {boolC} or bool {boolD} <<)>> +\end{ltxcode} +% +is true if both subexpressions are true, \ie if at least one of \texttt{boolA}/\texttt{boolB} and at least one of \texttt{boolC}/\texttt{boolD} is true. Subexpressions are generally not required if all elements are joined with \texttt{and} or with \texttt{or}. For example, the expressions + +\begin{ltxcode} +bool {boolA} <> bool {boolB} <> {boolC} <> bool {boolD} +bool {boolA} <> bool {boolB} <> {boolC} <> bool {boolD} +\end{ltxcode} +% +will yield the expected results: the first one is true if all elements are true; the second one is true if at least one element is true. However, when combining \texttt{and} and \texttt{or}, it is advisable to always group the elements in subexpressions in order to avoid potential misconceptions which may arise from differences between the semantics of formal boolean expressions and the semantics of natural languages. For example, the following expression + +\begin{ltxcode} +bool {<>} <> bool {<>} <> bool {<>} +\end{ltxcode} +% +is always true if \texttt{sugar} is true since the \texttt{or} operator will take the result of the \texttt{and} evaluation as input. In contrast to the meaning of this expression when pronounced in English, it is not processed like this + +\begin{ltxcode} +bool {<>} <> <<(>> bool {<>} <> bool {<>} <<)>> +\end{ltxcode} +% +but evaluated strictly from left to right: + +\begin{ltxcode} +<<(>> bool {<>} <> bool {<>} <<)>> <> bool {<>} +\end{ltxcode} +% +which is probably not what you meant to order. + +\end{marglist} + +\subsection{List Processing} +\label{aut:lst} + +\subsubsection{User Input} +\label{aut:lst:inp} + +The tools in this section are primarily designed to handle user input. When building lists for internal use by a package, using the tools in section \ref{aut:lst:int} may be preferable as they allow testing if an element is in a list. + +\begin{ltxsyntax} + +\cmditem{DeclareListParser}{command}{separator} + +This command defines a list parser similar to the \cmd{docsvlist} command below, which is defined like this: + +\begin{ltxcode} +\DeclareListParser{\docsvlist}{,} +\end{ltxcode} +% +Note that the list parsers are sensitive to the category code of the \prm{separator}. + +\cmditem*{DeclareListParser*}{command}{separator} + +The starred variant of \cmd{DeclareListParser} defines a list parser similar to the \cmd{forcsvlist} command below, which is defined like this: + +\begin{ltxcode} +\DeclareListParser*{\forcsvlist}{,} +\end{ltxcode} + +\cmditem{docsvlist}{item, item, ...} + +This command loops over a comma"=separated list of items and executes the auxiliary command \cmd{do} for every item in the list, passing the item as an argument. In contrast to the \cmd{@for} loop in the \latex kernel, \cmd{docsvlist} is expandable. With a suitable definition of \cmd{do}, lists may be processed in an \cmd{edef} or a comparable context. You may use \cmd{listbreak} at the end of the replacement text of \cmd{do} to stop processing and discard the remaining items in the list. Whitespace after list separators is ignored. If an item contains a comma or starts with a space, it must be wrapped in curly braces. The braces will be removed as the list is processed. Here is a usage example which prints a comma"=separated list as an \env{itemize} environment: + +\begin{ltxcode} +\begin{itemize} +\renewcommand*{\do}[1]{\item #1} +\docsvlist{item1, item2, {item3a, item3b}, item4} +\end{itemize} +\end{ltxcode} +% +Here is another example: + +\begin{ltxcode} +\renewcommand*{\do}[1]{* #1\MessageBreak} +\PackageInfo{mypackage}{% + Example list:\MessageBreak + \docsvlist{item1, item2, {item3a, item3b}, item4}} +\end{ltxcode} +% +In this example, the list is written to the log file as part of an informational message. The list processing takes place during the \cmd{write} operation. + +\cmditem{forcsvlist}{handler}{item, item, ...} + +This command is similar to \cmd{docsvlist} except that \cmd{do} is replaced by a \prm{handler} specified at invocation time. The \prm{handler} may also be a sequence of commands, provided that the command given last takes the item as trailing argument. For example, the following code will convert a comma"=separated list of items into an internal list called \cmd{mylist}: + +\begin{ltxcode} +\forcsvlist{\listadd\mylist}{item1, item2, item3} +\end{ltxcode} + +\end{ltxsyntax} + +\subsubsection{Internal Lists} +\label{aut:lst:int} + +The tools in this section handle internal lists of data. An in this context is a plain macro without any parameters and prefixes which is employed to collect data. These lists use a special character as internal list separator.\footnote{The character \texttt{\string|} with category code 3. Note that you may not typeset a list by saying \cmd{listname}. Use \cmd{show} instead to inspect the list.} When processing user input in list format, see the tools in section \ref{aut:lst:inp}. + +\begin{ltxsyntax} + +\cmditem{listadd}{listmacro}{item} + +This command appends an \prm{item} to a \prm{listmacro}. A blank \prm{item} is not added to the list. + +\cmditem{listgadd}{listmacro}{item} + +Similar to \cmd{listadd} except that the assignment is global. + +\cmditem{listeadd}{listmacro}{item} + +Similar to \cmd{listadd} except that the \prm{item} is expanded at definition"=time. Only the new \prm{item} is expanded, the \prm{listmacro} is not. If the expanded \prm{item} is blank, it is not added to the list. + +\cmditem{listxadd}{listmacro}{item} + +Similar to \cmd{listeadd} except that the assignment is global. + +\cmditem{listcsadd}{listcsname}{item} + +Similar to \cmd{listadd} except that it takes a control sequence name as its first argument. + +\cmditem{listcsgadd}{listcsname}{item} + +Similar to \cmd{listcsadd} except that the assignment is global. + +\cmditem{listcseadd}{listcsname}{item} + +Similar to \cmd{listeadd} except that it takes a control sequence name as its first argument. + +\cmditem{listcsxadd}{listcsname}{item} + +Similar to \cmd{listcseadd} except that the assignment is global. + +\cmditem{dolistloop}{listmacro} + +This command loops over all items in a \prm{listmacro} and executes the auxiliary command \cmd{do} for every item in the list, passing the item as an argument. The list loop itself is expandable. You may use \cmd{listbreak} at the end of the replacement text of \cmd{do} to stop processing and discard the remaining items in the list. Here is a usage example which prints an internal list called \cmd{mylist} as an \env{itemize} environment: + +\begin{ltxcode} +\begin{itemize} +\renewcommand*{\do}[1]{\item #1} +\dolistloop{\mylist} +\end{itemize} +\end{ltxcode} + +\cmditem{dolistcsloop}{listcsname} + +Similar to \cmd{dolistloop} except that it takes a control sequence name as its argument. + +\cmditem{forlistloop}{handler}{listmacro} + +This command is similar to \cmd{dolistloop} except that \cmd{do} is replaced by a \prm{handler} specified at invocation time. The \prm{handler} may also be a sequence of commands, provided that the command given last takes the item as trailing argument. For example, the following code will prefix all items in the internal list \cmd{mylist} with \cmd{item}, count the items as the list is processed, and append the item count at the end: + +\begin{ltxcode} +\newcounter{itemcount} +\begin{itemize} +\forlistloop{\stepcounter{itemcount}\item}{\mylist} +\item Total: \number\value{itemcount} items +\end{itemize} +\end{ltxcode} + +\cmditem{forlistcsloop}{handler}{listcsname} + +Similar to \cmd{forlistloop} except that it takes a control sequence name as its second argument. + +\cmditem{ifinlist}{item}{listmacro}{true}{false} + +This command executes \prm{true} if the \prm{item} is included in a \prm{listmacro}, and \prm{false} otherwise. Note that this test uses pattern matching based on \tex's argument scanner to check if the search string is included in the list. This means that it is usually faster than looping over all items in the list, but it also implies that the items must not include curly braces which would effectively hide them from the scanner. In other words, this macro is most useful when dealing with lists of plain strings rather than printable data. When dealing with printable text, it is safer to use \cmd{dolistloop} to check if an item is in the list as follows: + +\begin{ltxcode} +\renewcommand*{\do}[1]{% + \ifstrequal{#1}{<>} + {item found!\listbreak} + {}} +\dolistloop{\mylist} +\end{ltxcode} + +\cmditem{xifinlist}{item}{listmacro}{true}{false} + +Similar to \cmd{ifinlist} except that the \prm{item} is expanded prior to the test. + +\cmditem{ifinlistcs}{item}{listcsname}{true}{false} + +Similar to \cmd{ifinlist} except that it takes a control sequence name as its second argument. + +\cmditem{xifinlistcs}{item}{listcsname}{true}{false} + +Similar to \cmd{xifinlist} except that it takes a control sequence name as its second argument. + +\end{ltxsyntax} + +\subsection{Miscellaneous Tools} +\label{aut:msc} + +\begin{ltxsyntax} + +\cmditem{rmntonum}{numeral} + +The \tex primitive \cmd{romannumeral} converts an integer to a Roman numeral but \tex or \latex provide no command which goes the opposite way. \cmd{rmntonum} fills this gap. It takes a Roman numeral as its argument and converts it to the corresponding integer. Since it is expandable, it may also be used in counter assignments or arithmetic tests: + +\begin{ltxcode} +<<\rmntonum>>{<>} +\setcounter{counter}{<<\rmntonum>>{<>}} +\ifnumless{<<\rmntonum>>{<>}}{2000}{true}{false} +\end{ltxcode} +% +The \prm{numeral} argument must be a literal string. It will be detokenized prior to parsing. The parsing of the numeral is case"=insensitive and whitespace in the argument is ignored. If there is an invalid token in the argument, \cmd{rmntonum} will expand to~\texttt{-1}; an empty argument will yield an empty string. Note that \cmd{rmntonum} will not check the numeral for formal validity. For example, both \texttt{V} and \texttt{VX} would yield \texttt{5}, \texttt{IC} would yield \texttt{99}, etc. + +\cmditem{ifrmnum}{string}{true}{false} + +Expands to \prm{true} if \prm{string} is a Roman numeral, and to \prm{false} otherwise. The \prm{string} will be detokenized prior to performing the test. The test is case"=insensitive and ignores whitespace in the \prm{string}. Note that \cmd{ifrmnum} will not check the numeral for formal validity. For example, both \texttt{V} and \texttt{VXV} will yield \prm{true}. Strictly speaking, what \cmd{ifrmnum} does is parse the \prm{string} in order to find out if it consists of characters which may form a valid Roman numeral, but it will not check if they really are a valid Roman numeral. + +\end{ltxsyntax} + +\section{Revision History} + +This revision history is a list of changes relevant to users of this package. Changes of a more technical nature which do not affect the user interface or the behavior of the package are not included in the list. If an entry in the revision history states that a feature has been \emph{improved} or \emph{extended}, this indicates a syntactically backwards compatible modification, such as the addition of an optional argument to an existing command. Entries stating that a feature has been \emph{modified} demand attention. They indicate a modification which may require changes to existing documents in some, hopefully rare, cases. The numbers on the right indicate the relevant section of this manual. + +\begin{changelog} + +\begin{release}{2.1}{2011-01-03} +\item Added \cmd{AtBeginEnvironment}\see{use:env} +\item Added \cmd{AtEndEnvironment}\see{use:env} +\item Added \cmd{BeforeBeginEnvironment}\see{use:env} +\item Added \cmd{AfterEndEnvironment}\see{use:env} +\item Added \cmd{ifdefstrequal}\see{aut:tst:def} +\item Added \cmd{ifcsstrequal}\see{aut:tst:def} +\item Added \cmd{ifdefcounter}\see{aut:tst:cnt} +\item Added \cmd{ifcscounter}\see{aut:tst:cnt} +\item Added \cmd{ifltxcounter}\see{aut:tst:cnt} +\item Added \cmd{ifdeflength}\see{aut:tst:cnt} +\item Added \cmd{ifcslength}\see{aut:tst:cnt} +\item Added \cmd{ifdefdimen}\see{aut:tst:cnt} +\item Added \cmd{ifcsdimen}\see{aut:tst:cnt} +\end{release} + +\begin{release}{2.0a}{2010-09-12} +\item Fixed bug in \cmd{patchcmd}, \cmd{apptocmd}, \cmd{pretocmd}\see{aut:pat} +\end{release} + +\begin{release}{2.0}{2010-08-21} + +\item Added \cmd{csshow}\see{aut:def:def} +\item Added \cmd{DeclareListParser*}\see{aut:lst:inp} +\item Added \cmd{forcsvlist}\see{aut:lst:inp} +\item Added \cmd{forlistloop}\see{aut:lst:int} +\item Added \cmd{forlistcsloop}\see{aut:lst:int} +\item Allow testing \cmd{par} in macro tests\see{aut:tst:def} +\item Fixed some bugs + +\end{release} + +\begin{release}{1.9}{2010-04-10} + +\item Improved \cmd{letcs}\see{aut:def:def} +\item Improved \cmd{csletcs}\see{aut:def:def} +\item Improved \cmd{listeadd}\see{aut:lst:int} +\item Improved \cmd{listxadd}\see{aut:lst:int} +\item Added \cmd{notblank}\see{aut:tst:str} +\item Added \cmd{ifnumodd}\see{aut:tst:num} +\item Added \cmd{ifboolexpr}\see{aut:tst:bol} +\item Added \cmd{ifboolexpe}\see{aut:tst:bol} +\item Added \cmd{whileboolexpr}\see{aut:tst:bol} +\item Added \cmd{unlessboolexpr}\see{aut:tst:bol} + +\end{release} + +\begin{release}{1.8}{2009-08-06} + +\item Improved \cmd{deflength}\see{use:cal} +\item Added \cmd{ifnumcomp}\see{aut:tst:num} +\item Added \cmd{ifnumequal}\see{aut:tst:num} +\item Added \cmd{ifnumgreater}\see{aut:tst:num} +\item Added \cmd{ifnumless}\see{aut:tst:num} +\item Added \cmd{ifdimcomp}\see{aut:tst:num} +\item Added \cmd{ifdimequal}\see{aut:tst:num} +\item Added \cmd{ifdimgreater}\see{aut:tst:num} +\item Added \cmd{ifdimless}\see{aut:tst:num} + +\end{release} + +\begin{release}{1.7}{2008-06-28} + +\item Renamed \cmd{AfterBeginDocument} to \cmd{AfterEndPreamble} (name clash)\see{use:pre} +\item Resolved conflict with \sty{hyperref} +\item Rearranged manual slightly + +\end{release} + +\begin{release}{1.6}{2008-06-22} + +\item Improved \cmd{robustify}\see{use:pat} +\item Improved \cmd{patchcmd} and \cmd{ifpatchable}\see{aut:pat} +\item Modified and improved \cmd{apptocmd}\see{aut:pat} +\item Modified and improved \cmd{pretocmd}\see{aut:pat} +\item Added \cmd{ifpatchable*}\see{aut:pat} +\item Added \cmd{tracingpatches}\see{aut:pat} +\item Added \cmd{AfterBeginDocument}\see{use:pre} +\item Added \cmd{ifdefmacro}\see{aut:tst:def} +\item Added \cmd{ifcsmacro}\see{aut:tst:def} +\item Added \cmd{ifdefprefix}\see{aut:tst:def} +\item Added \cmd{ifcsprefix}\see{aut:tst:def} +\item Added \cmd{ifdefparam}\see{aut:tst:def} +\item Added \cmd{ifcsparam}\see{aut:tst:def} +\item Added \cmd{ifdefprotected}\see{aut:tst:def} +\item Added \cmd{ifcsprotected}\see{aut:tst:def} +\item Added \cmd{ifdefltxprotect}\see{aut:tst:def} +\item Added \cmd{ifcsltxprotect}\see{aut:tst:def} +\item Added \cmd{ifdefempty}\see{aut:tst:def} +\item Added \cmd{ifcsempty}\see{aut:tst:def} +\item Improved \cmd{ifdefvoid}\see{aut:tst:def} +\item Improved \cmd{ifcsvoid}\see{aut:tst:def} +\item Added \cmd{ifstrempty}\see{aut:tst:str} +\item Added \cmd{setbool}\see{aut:bo1:bol} +\item Added \cmd{settoggle}\see{aut:bo1:tgl} + +\end{release} + +\begin{release}{1.5}{2008-04-26} + +\item Added \cmd{defcounter}\see{use:cal} +\item Added \cmd{deflength}\see{use:cal} +\item Added \cmd{ifdefstring}\see{aut:tst:def} +\item Added \cmd{ifcsstring}\see{aut:tst:def} +\item Improved \cmd{rmntonum}\see{aut:msc} +\item Added \cmd{ifrmnum}\see{aut:msc} +\item Added extended \pdf bookmarks to this manual +\item Rearranged manual slightly + +\end{release} + +\begin{release}{1.4}{2008-01-24} + +\item Resolved conflict with \sty{tex4ht} + +\end{release} + +\begin{release}{1.3}{2007-10-08} + +\item Renamed package from \sty{elatex} to \sty{etoolbox}\see{int} +\item Renamed \cmd{newswitch} to \cmd{newtoggle} (name clash)\see{aut:bo1:tgl} +\item Renamed \cmd{provideswitch} to \cmd{providetoggle} (consistency)\see{aut:bo1:tgl} +\item Renamed \cmd{switchtrue} to \cmd{toggletrue} (consistency)\see{aut:bo1:tgl} +\item Renamed \cmd{switchfalse} to \cmd{togglefalse} (consistency)\see{aut:bo1:tgl} +\item Renamed \cmd{ifswitch} to \cmd{iftoggle} (consistency)\see{aut:bo1:tgl} +\item Renamed \cmd{notswitch} to \cmd{nottoggle} (consistency)\see{aut:bo1:tgl} +\item Added \cmd{AtEndPreamble}\see{use:pre} +\item Added \cmd{AfterEndDocument}\see{use:pre} +\item Added \cmd{AfterPreamble}\see{use:pre} +\item Added \cmd{undef}\see{aut:def:def} +\item Added \cmd{csundef}\see{aut:def:def} +\item Added \cmd{ifdefvoid}\see{aut:tst:def} +\item Added \cmd{ifcsvoid}\see{aut:tst:def} +\item Added \cmd{ifdefequal}\see{aut:tst:def} +\item Added \cmd{ifcsequal}\see{aut:tst:def} +\item Added \cmd{ifstrequal}\see{aut:tst:str} +\item Added \cmd{listadd}\see{aut:lst:int} +\item Added \cmd{listeadd}\see{aut:lst:int} +\item Added \cmd{listgadd}\see{aut:lst:int} +\item Added \cmd{listxadd}\see{aut:lst:int} +\item Added \cmd{listcsadd}\see{aut:lst:int} +\item Added \cmd{listcseadd}\see{aut:lst:int} +\item Added \cmd{listcsgadd}\see{aut:lst:int} +\item Added \cmd{listcsxadd}\see{aut:lst:int} +\item Added \cmd{ifinlist}\see{aut:lst:int} +\item Added \cmd{xifinlist}\see{aut:lst:int} +\item Added \cmd{ifinlistcs}\see{aut:lst:int} +\item Added \cmd{xifinlistcs}\see{aut:lst:int} +\item Added \cmd{dolistloop}\see{aut:lst:int} +\item Added \cmd{dolistcsloop}\see{aut:lst:int} + +\end{release} + +\begin{release}{1.2}{2007-07-13} + +\item Renamed \cmd{patchcommand} to \cmd{patchcmd} (name clash)\see{aut:pat} +\item Renamed \cmd{apptocommand} to \cmd{apptocmd} (consistency)\see{aut:pat} +\item Renamed \cmd{pretocommand} to \cmd{pretocmd} (consistency)\see{aut:pat} +\item Added \cmd{newbool}\see{aut:bo1:bol} +\item Added \cmd{providebool}\see{aut:bo1:bol} +\item Added \cmd{booltrue}\see{aut:bo1:bol} +\item Added \cmd{boolfalse}\see{aut:bo1:bol} +\item Added \cmd{ifbool}\see{aut:bo1:bol} +\item Added \cmd{notbool}\see{aut:bo1:bol} +\item Added \cmd{newswitch}\see{aut:bo1:tgl} +\item Added \cmd{provideswitch}\see{aut:bo1:tgl} +\item Added \cmd{switchtrue}\see{aut:bo1:tgl} +\item Added \cmd{switchfalse}\see{aut:bo1:tgl} +\item Added \cmd{ifswitch}\see{aut:bo1:tgl} +\item Added \cmd{notswitch}\see{aut:bo1:tgl} +\item Added \cmd{DeclareListParser}\see{aut:lst:inp} +\item Added \cmd{docsvlist}\see{aut:lst:inp} +\item Added \cmd{rmntonum}\see{aut:msc} + +\end{release} + +\begin{release}{1.1}{2007-05-28} + +\item Added \cmd{protected@csedef}\see{aut:def:def} +\item Added \cmd{protected@csxdef}\see{aut:def:def} +\item Added \cmd{gluedef}\see{aut:def:cal} +\item Added \cmd{gluegdef}\see{aut:def:cal} +\item Added \cmd{csgluedef}\see{aut:def:cal} +\item Added \cmd{csgluegdef}\see{aut:def:cal} +\item Added \cmd{mudef}\see{aut:def:cal} +\item Added \cmd{mugdef}\see{aut:def:cal} +\item Added \cmd{csmudef}\see{aut:def:cal} +\item Added \cmd{csmugdef}\see{aut:def:cal} +\item Added \cmd{protected@eappto}\see{aut:hok:app} +\item Added \cmd{protected@xappto}\see{aut:hok:app} +\item Added \cmd{protected@cseappto}\see{aut:hok:app} +\item Added \cmd{protected@csxappto}\see{aut:hok:app} +\item Added \cmd{protected@epreto}\see{aut:hok:pre} +\item Added \cmd{protected@xpreto}\see{aut:hok:pre} +\item Added \cmd{protected@csepreto}\see{aut:hok:pre} +\item Added \cmd{protected@csxpreto}\see{aut:hok:pre} +\item Fixed bug in \cmd{newrobustcmd}\see{use:def} +\item Fixed bug in \cmd{renewrobustcmd}\see{use:def} +\item Fixed bug in \cmd{providerobustcmd}\see{use:def} + +\end{release} + +\begin{release}{1.0}{2007-05-07} + +\item Initial public release + +\end{release} + +\end{changelog} + +\end{document} diff --git a/foley-bio.txt b/foley-bio.txt new file mode 100644 index 0000000..f1a8a67 --- /dev/null +++ b/foley-bio.txt @@ -0,0 +1,17 @@ +Dr. Joseph T. Foley (MIT B.Sc, M.Eng, Ph.D) has worked on analyzing how to make manufacturing processes use less energy. At iRobot, he developed shape-changing robots to fit through small holes. As a professor at Reykjavík University, Joseph is continuing to expand his interests into engineer and artist collaborative works, Shape Memory Alloy research, and the Axiomatic Design method. He is a member of the scientific committee for the International Conference on Axiomatic Design 2017 and has published an article on how Axiomatic Design can be applied to artistic endeavors. His personal projects with Icelandic museums resulted in development of low-cost synchronizers for video installations and a wireless tablet-based interface for playing video works on screens. + + +Joseph Timothy Foley (MIT BSc ‘99, MEng, ‘99, PhD ‘07) previously worked at iRobot's Government and Industrial division designing and building shape-changing robots. At Reykjavik University, he focuses on Mechatronics and Mechanical Design for teaching. His research interests include Axiomatic Design, aircraft maintenance, product design, embedded smart devices, wireless communication, physical security, and engineering-artist collaborations. + + +Dr. Joseph Timothy Foley (MIT BSc ‘99, MEng, ‘99, PhD ‘07) has worked as a researcher and designer in a large variety of fields with a heavy emphasis on infrastructure and mechatronics. +His graduate research at MIT focused on integrating RFID into smart devices in a scalable and secure way. +He worked as a postgraduate researcher in the Environmentally Benign Manufacturing group at MIT in partnership with SKF, investigating methods of reducing the impact and energy usage of manufacturing processes. +At iRobot's Government and Industrial division, he developed shape-changing robots as the technical lead for the Harvard-MIT-iRobot DARPA ChemBots team. +This research resulted in a US patent on the manufacture of enhanced Shape Memory Alloy springs, a topic he still is researching. + +He is now an assistant professor at Reykjavik University teaching topics in mechatronics and mechanical design. +He has integrated Axiomatic Design into the courses he currently teaches to provide students with a common framework for the heavily multi-disciplinary nature of modern computer-controlled manufacturing and smart devices. +His research interests include aircraft maintenance automation, product design, embedded smart devices, wireless communication, physical security, and engineering-artist collaborations. +His most recent developments in Axiomatic Design research include Creative Axiomatic Design (CIRP DC 2016), Desirable Complexity (ICAD 2017), and Axiomatic Design as an Ontology (CIRP DC 2017). +In addition, he was the head organizer for the 12th International Conference on Axiomatic Design 2018 at Reykjavík University. diff --git a/foley-crop-lowres.jpg b/foley-crop-lowres.jpg new file mode 100644 index 0000000..e9887a2 Binary files /dev/null and b/foley-crop-lowres.jpg differ diff --git a/foley-embedded_cv.tex b/foley-embedded_cv.tex new file mode 100644 index 0000000..f55a1ea --- /dev/null +++ b/foley-embedded_cv.tex @@ -0,0 +1,230 @@ +% $Id: foley-embedded_cv.tex 86a91d83c4a8 2011/10/01 16:05:21 foley $ +\hyphenpenalty=5000 +\tolerance=1000 + +\subsection{Education} +% june 21, 2007 +\cventry{2000-2007}{Doctor of Philosophy in Mechanical + Engineering}{Massachusetts Institute of Technology}{}{}{} +% june 1, 1999 +\cventry{1998-1999}{Master of Engineering in Computer Science and + Electrical Engineering}{Massachusetts Institute of Technology}{}{}{} +\cventry{1994-1999}{Bachelor of Science in Computer Science and + Electrical Engineering}{Massachusetts Institute of Technology}{}{}{} + +\subsection{Doctor of Philosophy Dissertation} +\cvitem{title}{\emph{Security Approaches for Radio Frequency + Identification Systems}} +\cvitem{supervisor}{Professor Sanjay Sarma} +\cvitem{description}{\small Describes preventative measures +and protection from the privacy invasion potential associated with +ubiquitous Radio Frequency Identification (RFID) while still +maintaining current capabilities.} + +\subsection{Master Thesis} +\cvitem{title}{\emph{An Infrastructure for Electromechanical +Appliances on the Internet}} +\cvitem{supervisor}{Professor Sanjay Sarma} +\cvitem{description}{\small Design and implementation of an Radio +Frequency Identification(RFID) and internet enabled appliance. The +design focused on general methods applicable to a wide variety of +intelligent devices. Fundamental development of ONS and EPC technologies.} + +\subsection{Published Work} +\cventry{2010}{Exploitable Assumptions}{A. Brooks, E. Schmiedl, + J. Foley}{DEFCON 2011}{}{} +\cventry{2009}{Micro artificial muscle fiber using + NiTi spring for soft robotics}{S. Kim, E. Hawkes, K. Cho, M. Jolda, + J. Foley, and R. Wood}{IROS 2009}{}{} +\cventry{2008}{TurbSim: Reliability-based Wind Turbine + Simulator}{J. Foley, T. Gutowski}{2008 ISEE}{}{} +\cventry{2001}{The Networked Physical World: An Automated + Identification Architecture}{D. Engels, J. Foley, J. Waldrop, + S. Sarma, D. Brock}{WIAPP '01}{}{} + +\subsection{Invited Talks and Presentations} +\cventry{2012}{Digital Manufacturing and Personal Sustainability}{Joe + Foley}{Alþjóðlegi Umhverfisdagurinn (World Environment Day)} + {Reykjavík University, June 5}{}{} +\cventry{2006}{Security Approaches for Radio Frequency Identification + Systems}{Dr. Joseph T. Foley}{EPCglobaUS Conference}{Los Angeles, October 19}{} +\cventry{2003}{Happy Trails: Automated Lifting Trailer}{MIT 2.009 Team + Purple '99}{Lemelson Inventor Conference}{Washington DC}{} +\cventry{2002}{AutoID Technology Demonstration}{Distributed + Information System Center MIT}{Cambridge University UK}{}{} + +\subsection{Intellectual Property} +\cventry{2011}{Google Code ``arduino-roomba''}{Joe Foley}{}{}{Library + for interfacing an Arduino and iRobot Create/Roomba. GPL2.} +\cventry{2009}{US Patent Pending ``Manufacture of Inverted SMA + Springs''}{M. Jolda and J. Foley, iRobot Patent }{}{}{} +\cventry{2007}{US Patent Pending ``Tag Anti-Counterfeit Systems''}{Joe + Foley \& Sanjay Sarma, MIT TLO 10695}{}{}{} +\cventry{2000}{US Patent 7,765,253 ``Object Name Service''}{Joseph + Foley, Erik Nygren, \& Sanjay Sarma. MIT TLO 9789}{}{}{} + +\subsection{Collaboration} +\cventry{2011-Current}{RU-LHÍ Music, Art, Software, Engineering + Collaboration}{RU Lead}{Reykjavik University and Listaháskolinn Islands}{}{Ongoing collaboration efforts are underway between the LHÍ + Music and Visual Arts and the RU Computer Science and Science and + Engineering department. This + collaboration is expected to develop an + interdiscipline project incorporating Music, Art, Software, and + Engineering by building upon the last program's success.} +\cventry{2011}{``Emerging and Imposing Spaces'' (``Vaxandi og + uppáþrengjandi rými'')}{co-organized with Sigrún + Harðardóttir}{RU and LHÍ}{Electro-mechanical Interactive Art}{Visual + Arts class ``Interactivity'' LHÍ \& RU VT + HUN1013 ``Design'' cooperated to produce 7 unique art installation + works shown at LHÍ. Selected pieces +shown at Hreindirland Festival 2011 and covered by RÚV 2.} +\cventry{2010--Current}{Faculty Advisor}{RU and Hakkavélin}{Hackspace}{}{} +\cventry{2003--2004}{Internet Engineering Task Force (IETF) ONS Working Group}{founding member}{AutoID Center MIT, Verisign, + \& EPC Global}{}{} +\cventry{2005}{ONS 1.0}{architect}{AutoID + Center MIT \& OATsystems}{}{} + +\subsection{Teaching} +\cventry{August 2011-Present}{Lecturer}{Reykjavik + University}{Reykjavik 101, Iceland}{}{Teaching T-865-MADE + ``Precision Machine Design'', developing low-cost precision lab + equipment to be used by RU bioengineering department. Teaching + T-411-MECH ``Mechatronics 1'', building affordable circuit prototyping and + automation education using the Arduino architecture.} +\cventry{January 2010-May 2010}{Lecturer}{Reykjavik + University}{Reykjavik 101, Iceland}{}{Taught VT + HUN1013 (Hönnun) Mechanical Design, which produced designs for + research equipment and interactive art installations. (See collaborations). + Co-taught T-420-HON (Hönnun X): class project that developed an aluminum + smelter pot inspection robot for Rio Tinto Alcan.} +\cventry{September 2005-January 2006}{Teaching Assistant}{CSCI-E-170: + Computer Security and Privacy}{Harvard Extension School}{Cambridge, + MA}{Lectures, problem set generation, and grading on security + material.} +\cventry{September 2002-August 2005}{Head Instructor}{MIT Faculty + Pistol \& Rifle Club}{Cambridge, MA}{}{Revised NRA pistol safety + curriculum to integrate international target pistol trends. Taught + Marksmanship and Pistol Safety course every semester.} +\cventry{September 1999-December 1999}{Teaching Assistant}{MIT 2.007 + Introduction to Mechanical Design}{Cambridge, MA}{}{Revised + curriculum, developed control system and scoring system for + ``Ballcano'' robotics competition.} +\subsection{Research Grants} +\cventry{June 2011-September 2011}{Advisor}{Rannis Student Innovaton + Fund (Nýsköpunarsjóður námsmanna)}{Menntavegur 1, + Reykjavik 101, Iceland}{}{Grant: ``CNC foam-cutter for micro air + vehicle wings'' for student research salary during summer. Advised software and mechanical + undergraduates in the design and construction of a high-precision, + low-cost computer-controlled (CNC) hot-wire foam cutter for the prototyping of small-scale + foam-composite aircraft wings. Materials funded from RANNIS ``Flapping-wing + Unmanned Air Vehicle''. } +\subsection{Experience} +\cventry{January 2010-Current}{Specialist}{Reykjavik + University}{Menntavegur 1, Reykjavik 101, Iceland}{}{Research into + simplified robotics infrastructure to solve many sensing problems + and rapid prototyping capabilities.} +\cventry{September 2011-February 2012}{Consultant}{Icelandair + Technical Services, Design Department}{Building 8, 235 Keflavik + Airport, Iceland}{}{Designing and prototyping ATMega/Arduino avionics interface to + convert and filter data between A757 and A429 data buses. This + interface will allow real-time monitoring of flight data, with + particular focus on the accelerometer inputs.} +\cventry{June 2011-September 2011}{Consultant}{3Z ehf.}{Menntavegur 1, + Reykjavik 101, Iceland}{}{Designed and implemented prototype + zebrafish embryo dispensing robot for pharmacology and toxicity studies.} +\cventry{September 2010-March 2011}{Consultant}{Brass Drift, + Inc.}{Emeryville, CA}{}{Designed custom low-cost flexture locking mechanism + for an electronic security box.} +\cventry{September 2010-January 2011}{Consultant}{MIT Biomimetic Robotics + Lab}{Cambridge, MA USA \& Reykjavik, Iceland}{}{Finite element analysis of advanced + structural composites used to develop a high speed quadruped robot + for Professor Sangbae Kim.} +\cventry{November 2007-August 2010}{Senior Research Scientist}{iRobot + G \& I Research}{Bedford, MA}{}{Designing new + robotics concepts and mechanisms in the DARPA ChemBots program. + iRobot research \& development in government and industrial applications/proposals.} +\cventry{November 2006-November 2007}{PostDoctoral Research + Associate}{MIT}{Cambridge, MA}{}{``Energy Efficiency in + Manufacturing'' Investigated energy usage in the manufacturing + industries and created wind turbine reliability simulator.} +\cventry{January 2004-March 2004}{Web software engineer}{SigMantra + LLC}{Bedford, MA}{}{Developed social-media website ``Uffinity'' for + connecting recently graduated young-professionals to others offering +employment.} +\cventry{May 2000 - September 2000}{Magic Mechanic}{Emode, + Inc.}{Cambridge, MA}{}{Developed world's largest fully-indexed quote + database. Developed and installed network security policies and + equipment} +\cventry{May 1997 - September 1997}{Mechanical Design Engineer}{Brute + Force Games}{Cambridge, MA}{}{Designed full immersion game simulator + platform leveraging vection research.} +\cventry{September 1996 - September 1999}{Network Programmer}{MIT + Network Operations}{Cambridge, MA}{}{Security operations and + emergency paging system development.} + +\subsection{Unpublished and Project Works, available upon request} +\subsubsection{Manufacturing} +\cventry{2011}{Bio-tensegrity: A New Design Paradigm for Hyperdynamic + Legged Robots}{A. Ananthanarayanan, J. Foley, and S. Kim}{}{}{} +\cventry{2000}{System Analysis and Design of the Insight M3/M5 Tactical +Illuminator}{Vince E. Carballo, Miguel A. Chavez, Joe Foley}{}{}{} +\cventry{1998}{Cambridge Heart}{Joe Foley, Marc Lebovitz, Ranjini +Srikantiah, Victor Su}{}{}{} +\cventry{1998}{Low-Cost Pine Car Derby Timing System}{Joe +Foley}{Advanced Undergraduate Project}{Advisor: Professor Alex Slocum}{} +\subsubsection{Design} +\cventry{2001}{Wireless Friends: Company Business Plan}{Sofy Tarud, Joe +Foley, Oscar Lopez, Omri Pedatzur}{}{}{} +\cventry{2001}{Automotive Diagnosis Assistant}{Joe Foley, Ariel Segall}{}{}{} +\cventry{1999}{Kraken: Distributed Cooperative Web Caching}{Joe Foley, Amy +Vandiver, Ben Vandiver}{}{}{} +\cventry{1998}{Evolved PacMan: Genetic Algorithm for Design of Control +Systems}{Joe Foley \& Mike Phillips}{}{}{} +\cventry{1996}{An Ad-Hoc FPGA - Xilinx Type}{Joe Foley \& Mark Roh}{}{}{} +\cventry{1996}{A Partly Read-Only, Portable Web Site}{Joe Foley}{}{}{} +\subsubsection{Security} +\cventry{2006}{ONS Deployment and Visibility Challenges}{Dan Engles and Joe Foley}{}{}{} +\cventry{2004}{Flingetty: Secure Multiparty Computation for a Dating Match-Up +System}{Natan Cliffer, Joe Foley, Hongyi Hu}{}{}{}{} +\cventry{2003}{KLite: A RFID Tag Anti-Counterfeit System}{Joe Foley}{}{}{} +\cventry{2003}{EPC Reductionism}{Joe Foley}{}{}{} +\cventry{1996}{WhoRU: Anyonymous Encrypted Remailer}{Daniel Derksen, Joe Foley, Matthew Rimer}{}{}{} + +%\subsection{Languages} +%\cvlanguage{English}{Native}{} +%\cvlanguage{Spanish}{Novice}{High School education, 1990-1994} +%\cvlanguage{Chinese}{Novice}{MIT 2005} +%\cvlanguage{Icelandic}{Elementary}{Taking classes at University of Reykjavík} +%\pagebreak + +%\subsection{Skills} +%\cvcomputer{programming}{\textsc{Java}, C/C++}{scripting}{PHP, Shell, python, perl} +%\cvcomputer{scientific}{Matlab, Maple}{Modeling}{ProEngineer, +%SolidWorks} +%\cvcomputer{simulation}{ABAQUS, CFDesigner}{typography}{\LaTeX, PostScript}{}{} +%\cvcomputer{control}{Arduino/Atmega, PIC}{Rapid prototyping}{FDM, +% Laser templates, silicone molding} +%\cvcomputer{OS}{Linux, UNIX, Windows, OSX}{administration}{Apache, +% DNS, ONS} +%\cvcomputer{web design}{PostNuke, Turbogears}{database}{MySQL, PostgreSQL} + +%\section{Interests} +%\cvitem{design}{\small I am a design fan, especially when it comes to typography and photography.} +%\cvitem{adventure sports}{\small I like practicing adventure sports like skiing, rock climbing and scuba diving, and have been a boy scout for five years.} +%\cvitem{travelling}{\small I have been living abroad during my childhood, and love travelling around the world.} + +%\section{Section with a list} +%\cvlistitem{lol} +%\cvlistitem{lol} +%\cvlistdoubleitem{lol}{relol} +%\cvlistdoubleitem{lol}{relol} + +%\section{Section with your own content}\closesection +%Your content here,\\ +%inside the normal \LaTeX{} environment. + +%\emptysection{} +%\cvitem{Now}{Back to moderncv layout, without making a new section :-)} + +\hyphenpenalty=50 +\tolerance=100 diff --git a/foley-europass-bibliography.tex b/foley-europass-bibliography.tex new file mode 100644 index 0000000..f19cb97 --- /dev/null +++ b/foley-europass-bibliography.tex @@ -0,0 +1,44 @@ +%\nocite{foley2021ad-software-engineering} +\nocite{sudermann2021mobile} +%\nocite{foley2021dindesign} +\nocite{des2021} +%\nocite{foley2021descomplexitykitchen} +%\nocite{foley2019complexitykitchen} +\nocite{icad2018book} +%\nocite{vossebeld2018customer}%01015 +%\nocite{helgason2018tablet}%01015 +\nocite{foley2017antenna}%01015 +%\nocite{foley2017faucet}%01009 +%\nocite{foley2017motorcyclelift}%01008 +%\nocite{foley2017adjustadesk}%01002 +\nocite{breznik2017collaborative} +\nocite{foley2017msddontology} +\nocite{petursson2017smaspring} +%\nocite{erlingsson2016roboclaw} +\nocite{foley2016desirable} +\nocite{guls2016auvlight} +%\nocite{gerhard2016suretrack} +\nocite{omarsdottir2016chessmate} +%\nocite{puik2016ignorance} +%\nocite{foley2016evaluating} +%\nocite{foley2016creative} +%\nocite{cochran2016hospital} +\nocite{cochran2016msdd} +\nocite{bragason2015parachuterelease} +\nocite{jonsson2015uget} +%\nocite{solvason2015spectrometer} +%\nocite{thompson2014additive} +\nocite{gudmundsdottir2014extendingviametricity} +%\nocite{gudmundsdottir2014wirelessscheduling} +%\nocite{foley2011colliding} +%\nocite{foley2012vitro} +\nocite{foley2012epd} +%\nocite{foley2012epdposter} +\nocite{kim2009microartificialmuscle} +\nocite{foley2008turbsim} +\nocite{engels2001networkedworld} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "foley-europass" +%%% End: diff --git a/foley-europass.tex b/foley-europass.tex new file mode 100644 index 0000000..c7ffd88 --- /dev/null +++ b/foley-europass.tex @@ -0,0 +1,253 @@ +% -*- coding: utf-8 -*- +\documentclass[english,a4paper]{europasscv} +\usepackage[main=english]{babel} +\usepackage{amssymb} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} + +\usepackage{enumitem} +\usepackage{graphicx} +\usepackage{csquotes} +\usepackage[mode=text]{siunitx} +\usepackage{doi} +\usepackage{url} +\usepackage{hyperref} +\usepackage{ifthen} + +\usepackage[backend=biber,citestyle=numeric,bibstyle=authoryear,sorting=ydnt,maxnames=99]{biblatex} +% biber --mincrossrefs=9999 --output-encoding=ascii foley-europass +\addbibresource{../references-foley.bib} +\addbibresource{../references-collections.bib} + +\usepackage{europasscv-bibliography} + +\newboolean{notes}\setboolean{notes}{false} +\newboolean{photo}\setboolean{photo}{false} +\newboolean{long}\setboolean{long}{false} +\newboolean{private}\setboolean{private}{false} +\newboolean{bibliography}\setboolean{bibliography}{true} +\newboolean{bibliographylong}\setboolean{bibliographylong}{true} +\newboolean{references}\setboolean{references}{false} +\newboolean{reviewing}\setboolean{reviewing}{true} +\newboolean{skills}\setboolean{skills}{false} +\newboolean{software}\setboolean{software}{false} +\newboolean{supervision}\setboolean{supervision}{true} +\newboolean{teaching}\setboolean{teaching}{true} + +\begin{document} + +\begin{europasscv} + \ecvname{Joseph Timothy Foley} + \ecvaddress{Álakvísl 39, 110 Reykjavík, Ísland} + \ecvmobile{(+354) 661 7658} + \ecvemail{foley@ru.is} + % \ecvhomepage{ http://www.ru.is/starfsfolk/Marcel https://scholar.google.com/citations?user=fGCgk\_EAAAAJ} + \ecvhomepage{https://www.ru.is/haskolinn/starfsfolk/foley https://scholar.google.com/citations?user=k_g9VkkAAAAJ} + \ecvorcid[label,link]{0000-0003-2515-1799} + \ecvdateofbirth{29 July 1977} + \ecvnationality{United States of America} + \ecvgender{Male} + + \ecvpersonalinfo + + \ecvsection{Work Experience} + + \ecvtitle{since 08/2013}{\foreignlanguage{icelandic}{Lektor} + (Assistant Professor)} + \ecvitem{}{\foreignlanguage{icelandic}{H{\'a}sk{\'o}linn {\'i} + Reykjav{\'\i}k}(Reykjavík University), Menntavegur 1, 102 Reykjav{\'i}k, Iceland} + \ecvitem{}{Teacher of \enquote{Mechatronics}, + \enquote{Precision Machine Design}, + \enquote{EngineeringX}, + \enquote{Design}, + \enquote{Integrated Project}, and + \enquote{Introduction to Engineering}. + } + \ecvitem{2017 to 2021}{Head Advisor for Laboratory for Unmanned Vehicles which became the RIOT Lab in 2022} + \ecvtitle{01/2011 to 08/2013}{Specialist} + \ecvitem{}{\foreignlanguage{icelandic}{H{\'a}sk{\'o}linn {\'i} + Reykjav{\'\i}k}(Reykjavík University), Menntavegur 1, 102 Reykjav{\'i}k, Iceland} + \ecvitem{}{Teacher of \enquote{Mechatronics}, + \enquote{Design}, and + \enquote{Integrated Project}. + } + \ecvtitle{09/2010 to 01/2011}{Consultant} + \ecvitem{}{Biomimetic Robotics Lab, Massachusetts Institute of Technology (MIT), Cambridge, Massachusetts, U.S.A.} + + \ecvtitle{11/2007 to 08/2010}{Senior Research Scientist} + \ecvitem{}{iRobot, + Government and Industrial Department, Bedford, Massachusetts + U.S.A.} + \ecvtitle{11/2006 to 11/2007}{Postdoctoral research associate} + \ecvitem{}{Massachusetts Institute of Technology (MIT) and SKF:\@``Energy Efficiency in Manufacturing''} + \ecvtitle{01/2001--04/2006}{Doctoral researcher} + \ecvitem{}{AutoID Center, Massachusetts Institute of Technology (MIT), Cambridge, Massachusetts, U.S.A.} + + \ecvsection{Education} + + \ecvtitle{06/2007}{Philosophical Doctor} + \ecvitem{}{Massachusetts Institute of Technology, U.S.A.} + \ecvitem{}{Dissertation: ``Security Approaches for Radio Frequency + Identification Systems''} + + \ecvtitle{06/1999}{Master of Engineering} + \ecvitem{}{Massachusetts Institute of Technology, U.S.A.} + \ecvitem{}{Thesis: ``An Infrastructure for Electromechanical + Appliances on the Internet''} + + \ecvtitle{06/1999}{Bachelor of Science} + \ecvitem{}{Massachusetts Institute of Technology, U.S.A.} + \ecvitem{}{Advanced Undergraduate Project: ``Low-Cost Pine Car Derby Timing System''} + + % \ecvsection{Language skills} + % \ecvmothertongue{English} + % \ecvlanguageheader + % \ecvlanguage{Icelandic}{A1}{A1}{A1}{A1}{A1} + % \ecvlanguage{Spanish}{A1}{A1}{A1}{A1}{A1} + % \ecvlanguage{Chinese}{A1}{A1}{A1}{A1}{A1} + % \ecvlanguagefooter + +% \ecvsection{Professional memberships} +% \ecvitem{2011-2013}{IEEE} + + \ecvsection{Supervision} + \ecvtitle{Doctoral Students}{} + \ecvitem{08/2020--}{Joshua David Springer, Reykjavik University} + + \ecvtitle{MSc Students}{} +% \ecvitem{06/2020}{Joshua David Springer, \enquote{Autonomous landing of a multicopter +% using computer vision}} + \ecvitem{06/2022}{Rakel Hrönn Sveinsdóttir, Closed thesis for Marel, ehf. Iceland} + \ecvitem{06/2021}{Danila Kraivenko, Closed thesis for Össur, ehf. Iceland.} + \ecvitem{02/2019}{Einar Pétursson, \enquote{NB-IoT Tracking device}} + \ecvitem{01/2018}{Vladimir Omelianov, ``Automated 3-axis multi-Ghz antenna testing unit''} + \ecvitem{09/2017}{Nicholas Randall, ``Improving power-grid stability with real-time analysis of PMU data''} + \ecvitem{06/2016}{Sævar Örn Einarsson, ``Shape Memory Alloy resistive heating degradation analysis''} + \ecvitem{01/2016}{Krisján Gerhard, ``Redesign of the SureTrack Grader Transfer Bin Using Axiomatic Design Theory''} + \ecvitem{06/2015}{Gunnar Óli Sölvason, ``Low cost spectrometer for Icelandic chemistry education''} + \ecvitem{06/2015}{Eiður Örn Þórsson, ``Dust Maker: a Volcanic Ash Dispersion Unit''} + \ecvitem{06/2015}{Sigurður Ingi Einarsson, ``Cabin Air Flow in Icelandair Boeing 757--200 Airplanes''} + \ecvitem{06/2015}{Georgios Petropoulos, ``Automated Flight Data Bus Testing System''} + % \ifthenelse{\boolean{teaching}}{ + % \ecvsection{Teaching Experience} + + % \ecvtitle{Háskolinn i Reykjavík}{} + % \ecvitem{}{Introduction to Embedded Systems and the Internet of Things (Fall 2018)} + + % \ecvtitle{Massachusetts Institute of Technology}{} + % \ecvitem{}{2.007 \enquote{Introduction to Design} (Spring 1999)} + + % }{} + +% \ifthenelse{\boolean{bibliography}}{% + \input{foley-europass-bibliography} + \renewcommand{\section}[2]{\ecvsection{#2}} + \printbibtabular[title=Publications]%% Getting errors on the bib +% }{% +% \relax +% } +\end{europasscv} + +\end{document} + +\ifskills +% \section{Skills} + +% \cvitem{}{Modelling and analysing systems with the equational rewriting +% system \textsc{maude}} +% \cvitem{}{Modelling and verifying systems with the interactive theorem +% prover \textsc{pvs}} +% \cvitem{}{Modelling and verifying systems with the model checkers +% \textsc{spin} and \textsc{NuSMV}} +% \cvitem{}{Modelling and verifying real-time systems with the model +% che\-cker \textsc{uppaal}} +% \cvitem{}{Programming applications in Java, C, C++, Python, Objective +% Caml, Erlang, and Haskell} +% \cvitem{}{Modelling software systems with UML and OCL} +% % & Data modelling with XML and data processing with XSLT. +% % & Knowledge in administrating the data base PostgreSQL. +% % & Knowledge in administrating the Linux-distribution +% % \emph{Fedora} +% % & Knowledge of the operating systems GNU/Linux and +% % Solaris. +% \fi + +% \section{Memberships} + +% \ifthenelse{\boolean{reviewing}}{% +% % \newpage +% \input{reviewing} +% }{% +% \relax +% } + +% \ifthenelse{\boolean{software}}{% +% \input{en-software} +% }{% +% \relax +% } + + +% \ifthenelse{\boolean{supervision}}{ +% \pagebreak +% \section{Supervision} + +% \input{supervision}}{} + + +% \ifreferences +% \newpage +% \section*{References} + +% \begin{trivlist} +% \item Prof.\ Sanjay Sarma\\ +% % \foreignlanguage{german}{Christian-""Albrechts-""Universität zu +% % Kiel\\ Institut für Informatik\\ D-24098 Kiel}\\ Germany\\ +% % % Phone (direct): +49 431 880-3732\\ +% % Phone (secretary Kirsten Kriegel): +49 431 880-3734\\ +% % Fax: +49 431 880-7617\\ +% % e-mail: \href{mailto:wpr@informatik.uni-kiel.de}{wpr@informatik.uni-kiel.de} +% \item Prof.\ Alexander Slocum\\ +% % Department of Informatics\\ +% % University of Oslo\\ +% % Postboks 1139 Forskningsparken I\\ +% % 0316 Oslo\\ +% % Norway\\ +% % Phone (office): +47 22 85 24 49 \\ +% % Fax: +47 22 85 24 01 \\ +% % e-mail: \href{mailto:olaf@ifi.uio.no}{olaf@ifi.uio.no} +% \item Prof. Ágúst Vafells\\ +% % Centrum voor Wiskunde en Informatica (CWI)\\ +% % Department of Software Engineering\\ +% % % Kruislaan 413\\ +% % P.O.\ Box 94079\\ +% % 1090 GB Amsterdam\\ +% % The Netherlands\\ +% % % Phone (direct): +31 20 592 4139\\ +% % Phone (secretary Susanne van Dam) +31 20 592 4189\\ +% % Fax: +31 20 592 4199\\ +% % e-mail: \href{mailto:F.S.de.Boer@cwi.nl}{F.S.de.Boer@cwi.nl} +% \end{trivlist} +% \fi + +% % \vskip 7\baselineskip +% % \noindent\rule{4in}{1pt}\par +% % \noindent\hbox to 4in {\hss Dr.\ Marcel Kyas\hss} + +% %\vskip 5\baselineskip +% %\noindent\rule{4in}{1pt}\par +% %\noindent\hbox to 4in {\hss Witnessed by Dr.\ habil.\ Martin Steffen\hss} +% %\par\noindent\hbox to 4in {\hss University of Oslo\hss} +% %\par\noindent\hbox to 4in {\hss Phone: +47 22\,85\,04\,17 (office), +% %+47 94\,24\,59\,46 (mobile)\hss} + +% \label{lastpage} +% \end{document} + +% LocalWords: Foley + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: + diff --git a/foley-main_cv-publish.pdf b/foley-main_cv-publish.pdf new file mode 100644 index 0000000..4fcd4fc Binary files /dev/null and b/foley-main_cv-publish.pdf differ diff --git a/foley-main_cv.tex b/foley-main_cv.tex new file mode 100644 index 0000000..f3d4549 --- /dev/null +++ b/foley-main_cv.tex @@ -0,0 +1,588 @@ + +\documentclass[11pt]{moderncv} +%% embedded when included in another document +%% You may need XeLatex, as it was optimized for certain fonts +%\documentclass[11pt]{embeddedcv} + +% moderncv styles +%\moderncvstyle{casual} +%\moderncvstyle[nocolor]{casual} +%\moderncvstyle{classic} +%\moderncvstyle[roman]{classic} +\moderncvtheme[blue]{casual} + +% character encoding +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} % allows UTF encoding, needed for Icelandic characters + +% biblatex/biber citations +%% We set when etal is used in maxnames=XX +\usepackage[backend=biber, bibencoding=utf8, style=ieee, maxnames=99]{biblatex} +%\usepackage[backend=biber, bibencoding=utf8, style=apa]{biblatex} +%\usepackage[american]{babel} +%\DeclareLanguageMapping{american}{american-apa} % after biblatex and babel +\usepackage[margin=20mm]{geometry} +\addbibresource{references-foley.bib} +\addbibresource{references-collections.bib} + + +% resize margins if needed, mostly for A4 +%\usepackage[scale=0.8]{geometry} +\hyphenpenalty=5000 +\tolerance=500 + +% personal data +\firstname{Dr.\ Joseph T.} +\familyname{Foley} +\title{Assistant Professor, Reykjavík University} +%\address{12 somestreet}{3456 somecity} % for classic style +%\address{11 Ticklefancy Lane}{Salem, NH 03079 USA} % for casual style +%\phone{(617)395-0383} %Vonage +%\mobile{(617)233-4590} %Cellphone +%\email{foley@alum.mit.edu} +\address{Menntavegur 1}{101 Reykjavík, Iceland} % for casual style +%\address{Álakvísl 39}{110 Reykjavík, Iceland} % for casual style +%\phone{+1(617)395--0383} %Vonage° +\phone{+354--599--6569} %RU +%\mobile{+354--661--7658} %Cellphone +%\email{foley@ru.is} +\email{foley@ru.is} +\photo{foley-crop-lowres} +%\extrainfo{{\small married with childrens}} +%\quote{} + +%\renewcommand{\listsymbol}{{\fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}}} +%\definecolor{see}{rgb}{0.5,0.5,0.5} + +% command for text subscripts +%\newcommand{\up}[1]{\ensuremath{^\textrm{\scriptsize#1}}} + + +% slanted small caps (only with roman family; the sans serif font doesn't exists :-() +%\usepackage{slantsc} +%\DeclareFontFamily{T1}{myfont}{} +%\DeclareFontShape{T1}{myfont}{m}{scsl}{ <-> cork-lmssqbo8}{} +%\usefont{T1}{myfont}{m}{scsl}Testing the font +\setlength{\footskip}{36.8pt} + +%---------------------------------------------------------------------------------- +% content +%---------------------------------------------------------------------------------- +\begin{document} +\maketitle +%\makequote + +\section{Education} +% june 21, 2007 +\cventry{2000--2007}{Doctor of Philosophy in Mechanical + Engineering}{Massachusetts Institute of Technology}{}{}{} +% june 1, 1999 +\cventry{1998--1999}{Master of Engineering in Computer Science and + Electrical Engineering}{Massachusetts Institute of Technology}{}{}{} +\cventry{1994--1999}{Bachelor of Science in Computer Science and + Electrical Engineering}{Massachusetts Institute of Technology}{}{}{} + +\section{Doctor of Philosophy Dissertation} +\cvitem{title}{\emph{Security Approaches for Radio Frequency + Identification Systems}} +\cvitem{supervisor}{Professor Sanjay Sarma} +\cvitem{description}{\small Describes preventative measures +and protection from the privacy invasion potential associated with +ubiquitous Radio Frequency Identification (RFID) while still +maintaining capabilities to track items and prevent theft. The unified RFID protection system is called TinFoil.} + +\section{Master Thesis} +\cvitem{title}{\emph{An Infrastructure for Electromechanical +Appliances on the Internet}} +\cvitem{supervisor}{Professor Sanjay Sarma} +\cvitem{description}{\small Design and implementation of an Radio +Frequency Identification (RFID) and Internet enabled appliance. The +design focused on general methods applicable to a wide variety of +intelligent devices. Fundamental development of ONS and EPC technologies.} + +%\newcommand{\cvbibentry}[1]{\cventry{\citeyear{#1}}{\citetitle{#1}}{\fullcite{#1}}{}{}{}} +\newcommand{\cvbibentry}[1]{\fullcite{#1}\vspace{\baselineskip}\\} + +\section{Published Work} + +\cvbibentry{foley2022embracingfailure} +\cvbibentry{foley2021ad-software-engineering} +\cvbibentry{sudermann2021mobile} +\cvbibentry{foley2021dindesign} +\cvbibentry{des2021} +\cvbibentry{foley2021descomplexitykitchen} +\cvbibentry{foley2019complexitykitchen} +\cvbibentry{icad2018book} +\cvbibentry{vossebeld2018customer}%01015 +\cvbibentry{helgason2018tablet}%01015 +\cvbibentry{foley2017antenna}%01015 +\vbox{ + \cvbibentry{foley2017faucet}%01009 + } +\cvbibentry{foley2017motorcyclelift}%01008 +\cvbibentry{foley2017adjustadesk}%01002 +\cvbibentry{breznik2017collaborative} +\cvbibentry{foley2017msddontology} +\cvbibentry{petursson2017smaspring} +\cvbibentry{erlingsson2016roboclaw} +\cvbibentry{foley2016desirable} +\cvbibentry{guls2016auvlight} +\cvbibentry{gerhard2016suretrack} +\cvbibentry{omarsdottir2016chessmate} +\cvbibentry{puik2016ignorance} +\cvbibentry{foley2016evaluating} +\cvbibentry{foley2016creative} +\cvbibentry{cochran2016hospital} +\cvbibentry{cochran2016msdd} +\cvbibentry{bragason2015parachuterelease} +\cvbibentry{jonsson2015uget} +\cvbibentry{solvason2015spectrometer} +\cvbibentry{thompson2014additive} +\cvbibentry{gudmundsdottir2014extendingviametricity} +\cvbibentry{gudmundsdottir2014wirelessscheduling} +\cvbibentry{foley2011colliding} +\cvbibentry{foley2012vitro} +\cvbibentry{foley2012epd} +\cvbibentry{foley2012epdposter} +\cvbibentry{kim2009microartificialmuscle} +\cvbibentry{foley2008turbsim} +\cvbibentry{engels2001networkedworld} + +\section{Invited Talks and Presentations} +\cventry{2018}{Axiomatic Design and Desirable Complexity}{Joe +Foley}{IWSSIP 2018 --- 25th International Conference on Systems, Signals, and Image Processing}{Maribor, Slovenia, June 20}{}{} + +\cventry{2017}{Axiomatic Design for Everyone}{Joe +Foley}{International Conference on Axiomatic Design Tutorial}{ +Iasi, Romania, September 11}{}{} +\cventry{2014}{Raspberry Pi: Affordable Embedded Linux}{Joe +Foley}{Félag rafeindavirkja (Icelandic Electronics Association) Keynote}{Stórhöfði 29, +Reykjavík 110, May 29}{}{} +\cventry{2013}{Introduction to Axiomatic Design}{Joe Foley}{MPM + Product Course Guest Lecturer}{Reykajvík University, February 15}{}{} +\cventry{2012}{RU High Altitude Balloon Project}{Joe Foley}{RU Lecture +Marathon Series}{Reykjavík University, March 23}{}{} +\cventry{2012}{RU High Altitude Balloon Project}{Joe Foley}{Icelandic + Rotary Club Guest Speaker}{August 17}{}{} +\cventry{2012}{APRS Basics and Tracking}{Joe Foley}{Icelandic Radio + Amateur Club}{Reykjavik, May 31}{} +\cventry{2011}{Digital Manufacturing and Personal Sustainability}{Joe + Foley}{Alþjóðlegi Umhverfisdagurinn (World Environment + Day)}{Reykjavík University, June 5}{}{} +\cventry{2011}{Exploitable Assumptions}{A. Brooks, E. Schmiedl, + J. Foley}{DEFCON 2011}{}{} +\cventry{2007}{U.S.Industrial Energy Use: Making Less with + More?}{Jeffrey Dahmus, Alissa Jones, Lynette Cheah, Matthew Branham, + Joseph Foley and Young Song}{MIT Energy Conference Poster Session, + March 9 2007}{}{} +\cventry{2006}{Security Approaches for Radio Frequency Identification + Systems}{Dr.\ Joseph T. Foley}{EPCglobal US Conference}{Los Angeles, + October 19}{} +\cventry{2003}{Happy Trails: Automated Lifting Trailer}{MIT 2.009 Team + Purple '99}{Lemelson Inventor Conference}{Washington DC, USA}{} +\cventry{2002}{AutoID Technology Demonstration}{Distributed + Information System Center MIT}{Cambridge University, UK}{}{} + +\section{Advising} +\cventry{2017--2021}{Lab for Unmanned Vehicles}{Joseph T. Foley}{Reykjavík University}{}{} +%% Marcel's student? +\cventry{2021}{ME Master's thesis advisor for Danila Krapivenko}{Joseph T. Foley}{Reykjavík University}{Completed June 2021}{Proprietary Information released in 10 years} +\cventry{2021}{ME Master's thesis advisor for Patrekur Smári Þrastarson ``International Pistol Training Tool --- Competition Shooting Device''}{Joseph T. Foley}{Reykjavík University}{Completed June 2021}{} +\cventry{2018}{ME Master's thesis advisor for Sævar Örn Einarsson ``Development of a Dynamic Multi-Belt Scale for IQF sorting''}{Joseph T. Foley}{Reykjavík University}{Completed June 2019}{} +\cventry{2018}{MSc.\ Master's thesis advisor for Shahab Ali Shah ``Using the Collective System Design Approach to Facilitate Sustainable Manufacturing''}{David S. Cochran, Todor Cooklev, Behin Elahi, Joseph Timothy Foley}{Purdue Fort Wayne and Reykjavík University}{Completed June 2019}{} +%\cventry{2018}{ME Master's thesis advisor for Páll Pálsson ``Reduced fatigue tattoo needle system''}{Joseph T. Foley}{Reykjavík University}{Expected graduation: June 2019}{} +\cventry{2018}{EE Master's thesis advisor for Einar Pétursson ``Low-power recovery system for patients with dementia''}{Marcel Kyas and Joseph T. Foley}{Reykjavík University}{Completed: January 2019}{} +\cventry{2017}{ME Master's thesis advisor for Vladimir Omelianov ``Automated 3-axis multi-Ghz antenna testing unit''} +{Joe Foley and Slawomir Koziel}{Reykjavík University}{Completed January 2018}{} +\cventry{2017}{ME Master's thesis advisor for Nicholas Randall ``Improving power-grid stability with real-time analysis of PMU data''} +{Joe Foley and Ragnar Kristjansson}{Reykjavík University}{Completed September 2017}{} +\cventry{2016} +{ME Bachelors's thesis advisor for Sævar Örn Einarsson ``Shape Memory Alloy resistive heating degradation analysis''} +{Joe Foley}{Reykjavík University}{Completed June 2016}{} +\cventry{2016}{ME Master's thesis advisor for Krisján Gerhard + ``Redesign of the SureTrack Grader Transfer Bin Using Axiomatic Design Theory''}{Joe + Foley}{Reykjavík University}{Completed January 2016}{} +\cventry{2016}{EE Bachelor's thesis evaluator for Borys Niekurzak + ``Yaw angle measurement using inertial measurement unit''} +{Advisor: Baldur Þorgilsson, Evaluator: Joe Foley}{Reykjavík University}{}{} +\cventry{2015}{ME Master's thesis advisor for Gunnar Óli Sölvason + ``Low cost spectrometer for Icelandic chemistry education''}{Joe + Foley}{Reykjavík University}{Completed June 2015}{} +\cventry{2015}{ME Master's thesis advisor for Eiður Örn Þórsson + ``Dust Maker: a Volcanic Ash Dispersion Unit''}{Joe + Foley \& Þorgeir Palsson}{Reykjavík University}{Expected + completion June 2015}{} +\cventry{2015}{ME Master's thesis advisor for Sigurður Ingi Einarsson + ``Cabin Air Flow in Icelandair Boeing 757--200 Airplanes''}{Joe + Foley \& Þorgeir Palsson}{Reykjavík University/Icelandair Technical Services} +{Expected completion June 2015}{} +\cventry{2014}{EE Batchelor's thesis advisor for Sigríður Árný Júlíusdóttir + ``Movement measurement device for airplanes''}{Joe + Foley}{Reykjavík University/Icelandair Technical Services}{Completed May 2014}{} +\cventry{2013}{Independant Study for Björgvin Rúnar Þórhallsson + ``DustLoop'' for T-870-INTE Integrated Project}{Joe Foley \& Þorgeir + Palsson}{Reykajvík University/University of Iceland}{Completed + August 2013}{} +\cventry{2013}{CS Master's thesis advisor for Georgios Petropoulos + ``Automated Flight Data Bus Testing System'' (working title)}{Joe + Foley \& Þorgeir Palsson}{Reykjavík University/Icelandair Technical + Services hosting for University of Camerino, Italy}{Completed June + 2015}{} +\cventry{2012}{Independant study for Guðmundur Viktorsson + ``Development of a Flight Data Acquisition and Converter System''}{Joe Foley + \& Þorgeir Palsson}{Reykjavík University and Icelandair Technical Services}{}{} +\cventry{2012}{Master's thesis evaluator for Guðjón Hugberg Björnsson + ``Automatic thermal inspection of aluminum reduction + cell''}{Evaluators: Joe Foley, Jón Guðnason, Agni + Asgeirsson}{Reykjavík University}{}{} + +\section{Referee} +\cventry{2018}{International Conference on Axiomatic Design 12 (ICAD2018)}{Head Organizer, Scientific Chair, Editor}{Reykjavik, Iceland}{}{} +\cventry{2017}{International Conference on Axiomatic Design 11 (ICAD2017)}{Scientific Chair}{Iasi, Romania}{}{} +\cventry{2017}{27th CIRP Design Conference}{Session Chair}{Cranfield University, UK}{}{} +\cventry{2016}{International Conference on Axiomatic Design 10 (ICAD2016)}{Reviewer}{Xi'an, Shaanxi, China}{}{} +\cventry{2016}{CDIO Annual International Conference}{Session Chair}{Turku, Finland}{}{} +\cventry{2016--2017}{International Journal of Production Research}{Reviewer}{}{}{} +\cventry{2016}{Journal of Engineering Design}{Reviewer}{}{}{} +\cventry{2016}{International Journal of Numerical Modelling: Electronic Networks, Devices and Fields}{Reviewer}{}{}{} +\cventry{2015}{International Conference on Axiomatic Design 9 (ICAD2015)}{Reviewer}{Florence, Italy}{}{} +\cventry{2014}{ASME 2014 12th Biennial Conference on Engineering Systems Design and Analysis (ESDA2014)}{External reviewer}{Copenhagen, Denmark}{}{} +\cventry{2003}{IEEE Workshop on Pervasive Computing and Communication Security (PerSec)}{External reviewer}{Fort Worth, Texas}{}{} + +\section{Intellectual Property} +\cventry{2017}{Portable escape-room media platform}{Joe Foley and Vladimir Omelianov}{}{}{Raspberri pi based media display system for interfacing with ``escape room'' type games. + Developed for Escape Reykjavik.} +\cventry{2014}{iPad Video Control}{Joe + Foley}{}{}{Modular cgi-based iPad Video control system for use with + Raspberry Pi. Developed for the Reykjavík Art Museum, Icelandic National Gallery, and Listasafn Árnesinga} +\cventry{2013}{DVD and Blue-ray Art Installation Synchronizer}{Joe + Foley}{}{}{Arduino system for video synchronization. Developed for the Reykjavík Art Museum} +\cventry{2013}{US Patent 8,384,546 ``Tag Anti-Countefeit + Systems''}{Joseph T. Foley, Sanjay E. Sarma, and Steve Weis}{}{}{} +\cventry{2011}{US Patent 20110083325 A ``Method of Manufacturing a + Nickel Titanium Coil Actuator''}{M. Jolda and J. Foley, iRobot Patent }{}{}{} +\cventry{2011}{Google Code ``arduino-roomba''}{Joe Foley}{}{}{Library + for interfacing an Arduino and iRobot Create/Roomba. GPL2.} +\cventry{2000}{US Patent 7,765,253 ``Object Name Service''}{Joseph + Foley, Erik Nygren, \& Sanjay Sarma. MIT TLO 9789}{}{}{} + +\section{Collaboration} +\cventry{2018}{``Huglæg rými'' aka. ``Subjective Spaces'' Video Art Installation}{Ólafur Sveinn Gíslason, Inga Jónsdóttir, and Joseph T. Foley}{}{}{2 pair of dual-screen synchronized video players deployed in the info-beamer hosted framework. Developed for Lístasafn Árnesinga in Hveragerði, Iceland.} +\cventry{2018}{``Hver-gerði'' Interactive Art Installation}{Sigrun Harðardóttir and Joseph T. Foley}{}{}{Adafruit Feather LoRA based interactive furniture, room, and instrument system. Developed for Lístasafn Árnesinga in Hveragerði, Iceland.} +\cventry{2016--}{Mjolnir 2 rocket launch project}{Rocket flight system architect}{Reykjavík University and Thorildsplan Gymnasium in Stockholm, Sweden}{}{Developing a liquid-fuel rocket platform for high altitude launch in Iceland.} +\cventry{2011--2014}{RU-LHÍ Music, Art, Software, Engineering + Collaboration}{RU Lead}{Reykjavik University and Listaháskolinn + Islands}{}{ +Co-teaching T-428-EMIR, Gagnvirk rafvélræn list + ``Electromechanical Interactive Art'' with faculty in RU Computer + Science, LHÍ Music, and LHÍ Visual Arts. This class will create + teams of engineers, programmers, musicians, and visual artists to + create collaborative inter-disciplinary interactive art.} +\cventry{2011}{``Emerging and Imposing Spaces'' (``Vaxandi og + uppáþrengjandi rými'')}{co-organized with Sigrún + Harðardóttir}{RU and LHÍ}{Electro-mechanical Interactive Art}{Visual + Arts class ``Interactivity'' LHÍ \& RU VT + HUN1013 ``Design'' cooperated to produce 7 unique art installation + works shown at LHÍ. Selected pieces +shown at Hreindirland Festival 2011 and covered by RÚV 2.} +\cventry{2010--2016}{Faculty Advisor}{RU and Hakkavélin}{Hackspace}{}{} +\cventry{2003--2004}{Internet Engineering Task Force (IETF) ONS Working Group}{founding member}{AutoID Center MIT, Verisign, + \& EPC Global}{}{} +\cventry{2005}{ONS 1.0}{architect}{AutoID + Center MIT \& OATsystems}{}{} + +\section{Teaching} +% \cventry{Fall 2021}{Lecturer}{Reykjavík +% University}{Reykjavík 101, Iceland}{}{T-411-MECH +% ``Mechatronics 1'', T-865-MADE ``Precision Machine Design''} +\cventry{Spring 2021}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-620-ENGX ``EngineeringX''} +\cventry{Fall 2017-2020}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-411-MECH + ``Mechatronics 1'', T-865-MADE ``Precision Machine Design'', T-102-VERK ``Intro to Engineering'' (2017-2018)} +\cventry{Spring 2019}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{VT HUN1013 ``Design''} +\cventry{Fall 2016--2020}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-411-MECH + ``Mechatronics 1'' and T-865-MADE ``Precision Machine Design'': Instrument for simultaneous testing of 6 SMA spring actuators} +\cventry{Spring 2016}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{VT HUN1013 ``Design'': Adjustable desk and motorcycle lift} +\cventry{Fall 2015}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-411-MECH + ``Mechatronics 1'' and T-865-MADE ``Precision Machine Design'': class project improving rocket parachute release mechanisms.} +\cventry{Spring 2015}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{VT HUN1013 + ``Design'': students developed gunpowderless parachute release and SMA spring winder.} +\cventry{Fall 2014}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-411-MECH + ``Mechatronics 1'' and T-865-MADE ``Precision Machine Design'': class projects related to fuel-mixing for internal combustion engines.} +\cventry{Spring 2014}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{VT HUN1013 + ``Design'': class project to develop 2.3 meter synchronized + suspended rotating project cube + for Reykjavík City Theater. T-820-INTE ``Integrated Project'': + Master's class performed 2 high-altitude rocket launches (2+ km). + See collaboration section for info on T-420-EMIR.} +\cventry{Fall 2013}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-411-MECH + ``Mechatronics 1'' and T-865-MADE ``Precision Machine Design'': class + project is to designed an XYZ robot capable of FDM printing and + magnetic field measurement.} +\cventry{Spring 2013}{Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{VT HUN1013 ``Design'': class project is to redesign and reimplement the RU AUV + for competition in RoboSub 2013.} +\cventry{Fall 2012}{Part-time Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{T-411-MECH + ``Mechatronics'' 1 and Lab instructor for T-722-WNMO ``Wireless Networks + and Mobility''.} +\cventry{Spring 2012}{Part-time Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{VT~HUN1013 ``Hönnun'' Mechanical Design: industry collaboration with + CCP games to develop high-altitude balloon platform capable of + multiple high-definition video capture. + Co-teaching T-420-HON ``Hönnun X'': integrated project class + developing a walking robot for doing prosthesis gait testing at + Össur HF.\@ See collaboration section for information on T-428-EMIR.} +\cventry{2011--2013}{Advisor/Consultant}{Icelandair + Technical Services, Design Department}{Building 8, 235 Keflavik + Airport, Iceland}{}{Designing and prototyping ATMega/Arduino avionics interface to + convert and filter data between A757 and A429 data buses. This + interface will allow real-time monitoring of flight data, with + particular focus on the accelerometer inputs. Co-advising bachelor's +student Guðmundur Viktorsson in this project with Þorgeir Pállson of RU.} +\cventry{Fall 2011}{Part-time Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{Teaching T-865-MADE + ``Precision Machine Design'', developing low-cost precision spectrometer + equipment to be used by RU bioengineering department. Teaching + T-411-MECH ``Mechatronics 1'', building affordable circuit prototyping and + automation education using the Arduino architecture.} +\cventry{Spring 2010}{Part-time Lecturer}{Reykjavík + University}{Reykjavík 101, Iceland}{}{Taught VT + HUN1013 ``Hönnun'' Mechanical Design, which produced designs for + research equipment and interactive art installations. (See collaborations). + Co-taught T-420-HON ``Hönnun X'': class project that developed an aluminum + smelter pot inspection robot for Rio Tinto Alcan.} +\cventry{Spring 2006}{Teaching Assistant}{CSCI-E-170: + Computer Security and Privacy}{Harvard Extension School}{Cambridge, + MA}{Lectures, problem set generation, and grading on security + material.} +\cventry{2002--2005}{Head Instructor}{MIT Faculty + Pistol \& Rifle Club}{Cambridge, MA}{}{Revised NRA pistol safety + curriculum to integrate international target pistol trends. Taught + Marksmanship and Pistol Safety course every semester.} +\cventry{Fall 1999}{Teaching Assistant}{MIT 2.007 + Introduction to Mechanical Design}{Cambridge, MA}{}{Revised + curriculum, developed control system and scoring system for + ``Ballcano'' robotics competition.} + +\section{Grants} +\cventry{June~2021--August~2021}{Advisor}{Student Innovation Fund}{Menntavegur 1, Reykjavík 101, Iceland}{} +{Grants: DUFL enhanced bouy tracking system} +\cventry{June~2021--August~2021}{Advisor}{Iceland Summer Student Fund}{Menntavegur 1, Reykjavík 101, Iceland}{} +{Grants: Integrate Robot Operating System and Python into Mechatronics teaching; Implement convolutional neural networking for MARS feature recognition; Airborn sensor deployment} + +\cventry{June~2020--August~2020}{Advisor}{Iceland Summer Student Fund}{Menntavegur 1, Reykjavík 101, Iceland}{} +{Grant: Lab Designers to re-design Mechatronics 1 to be more suitable during COVID-19} +\cventry{Sept~2014--Jan~2014}{Advisor}{Icelandair Group Research + Fund}{Menntavegur 1, Reykjavík 101, Iceland}{}{Grant: Cabin Air Flow + in Icelandair Boeing 757--200 Airplanes} + +\cventry{Sept~2012--Jan~2013}{Advisor}{RANNIS Technology Fund + (Tækjniróunarsjóður)}{Menntavegur 1, Reykjavík 101, + Iceland}{}{Grant: Automated Pinbone Removal in Cod and Whitefish + (APRICOT). PI:\@ Kristinn Andersen (Marel)} + +\cventry{June~2011--Sept~2011}{Advisor}{RANNIS Student Innovation Fund + (Nýsköpunarsjóður námsmanna)}{Menntavegur 1, Reykjavík 101, + Iceland}{}{Grant: ``CNC foam-cutter for micro air vehicle wings'' + for student research salary during summer. Advised software and + mechanical undergraduates in the design and construction of a + high-precision, low-cost computer-controlled (CNC) hot-wire foam + cutter for the prototyping of small-scale foam-composite aircraft + wings. Materials funded from RANNIS ``Flapping-wing Unmanned Air + Vehicle''. } + +\section{Experience} + +\cventry{2018--Current}{Assistant Professor} +{Reykjavík University School of Technology, Department of Engineering} +{Menntavegur 1, Reykjavík 102, Iceland}{}{Teaching + and researching mechatronics devices, focusing on avionics and + wireless. Product and Axiomatic Design is a common technique used in all of these fields.} + +\cventry{2013--2018}{Assistant Professor}{Reykjavík University Science + and Engineering}{Menntavegur 1, Reykjavík 101, Iceland}{}{Teaching + and researching mechatronics devices, focusing on avionics and + wireless. Axiomatic Design is a common technique used in all of these fields.} + +\cventry{2013--2014}{IT Researcher}{Reykjavík University + UTS}{Menntavegur 1, Reykjavík 101, Iceland}{}{Researching into + file/media servers, better help-desk experience, collaboration + tools, and DNS management.} + +\cventry{2012--Sept~2012}{Research Engineer}{MIT + Laboratory for Manufacturing and Productivity: Distributed Quality + Control Project}{77 Massachusetts Ave, Cambridge MA}{}{Researching + automation technology on NIST manufacturing grant on decentralized + manufacturing and quality control practices. PI:\@ Sanjay Sarma} + +\cventry{2010--2012}{Specialist}{Reykjavík University + Science and Engineering}{Menntavegur 1, Reykjavík 101, + Iceland}{}{Research into simplified robotics infrastructure to solve + sensing problems and improve rapid prototyping capabilities. Also + developing cross-discipline programs and classes with Iceland + Academy of the Arts (LHÍ)} + +\cventry{June~2011--Sept~2011}{Consultant}{3Z ehf.}{Menntavegur 1, + Reykjavík 101, Iceland}{}{Designed and implemented prototype + zebrafish embryo dispensing robot for pharmacology and toxicity studies.} + +\cventry{Sept~2010--March~2011}{Consultant}{Brass Drift, + Inc.}{Emeryville, CA}{}{Designed custom low-cost flexure locking mechanism + for an electronic security box.} + +\cventry{Sept~2010--Jan~2011}{Consultant}{MIT Biomimetic Robotics + Lab}{Cambridge, MA USA \& Reykjavík, Iceland}{}{Finite element analysis of advanced + structural composites used to develop a high speed quadruped robot + for Professor Sangbae Kim.} + +\cventry{Nov~2007--Aug~2010}{Senior Research Scientist}{iRobot + G \& I Research}{Bedford, MA}{}{Designing new + robotics concepts and mechanisms in the DARPA ChemBots program. + iRobot research \& development in government and industrial applications/proposals.} + +\cventry{Nov~2006--Nov~2007}{PostDoctoral Research + Associate}{MIT}{Cambridge, MA}{}{``Energy Efficiency in + Manufacturing'' Investigated energy usage in the manufacturing + industries and created wind turbine reliability simulator.} + +\cventry{2004--March~2004}{Web software engineer}{SigMantra + LLC}{Bedford, MA}{}{Developed social-media website ``Uffinity'' for + connecting recently graduated young-professionals to others offering +employment.} + +\cventry{May~2000--Sept~2000}{Magic Mechanic}{Emode, + Inc.}{Cambridge, MA}{}{Developed world's largest fully-indexed quote + database. Developed and installed network security policies and + equipment} + +\cventry{May~1997--Sept~1997}{Mechanical Design Engineer}{Brute + Force Games}{Cambridge, MA}{}{Designed full immersion game simulator + platform leveraging vection research.} + +\cventry{Sept~1996--Sept~1999}{Network Programmer}{MIT + Network Operations}{Cambridge, MA}{}{Security operations and + emergency paging system development.} + +\cventry{July~1994--Sept~1994}{Network Administrator}{Brooks Automation}{Lowell, MA}{}{Installation and configuration of network infrastructure, development of automated FAX document server.} + +\cventry{July~1993--Sept~1993}{Intern}{Solar Cell Lab, University of Massachusetts, Lowell}{Lowell, MA}{}{Programming of HPGIB-based electrical analyzer for solar cell efficiency} + + +\section{Pending, Unpublished, and Project Works, available upon request} + +\subsection{Mechanical Design} + +\cventry{2018}{PLASBAR:\@ Heat-activated Parachute Release System} +{J. Foley, H. Gunnarson, T. Semmler, O. Vasques, J. Holfelder, M. Ariaudo, M. Jafri, D. Cochran}{}{}{} + +\cventry{2011}{Low-cost high-accuracy spectroscope}{ Arnar + Þ. Stefánsson, Elín A. Steinarsdottir, Guðjón H. Björnsson, Matthías + Stefánsson, Máni Ólafsson, Ólöf K. Hrafnsdóttir, and Joe + Foley}{}{}{\url{http://afs.rnd.ru.is/course/T-865-MADE/2011/Projects/Spectrometer/Documentation/Report/report.pdf}} + +\cventry{2011}{Bio-tensegrity: A New Design Paradigm for Hyperdynamic + Legged Robots}{A. Ananthanarayanan, J. Foley, and S. Kim}{}{}{} + +\cventry{2001}{Wireless Friends: Company Business Plan}{Sofy Tarud, Joe + Foley, Oscar Lopez, Omri Pedatzur}{}{}{} + +\cventry{2000}{System Analysis and Design of the Insight M3/M5 + Tactical Illuminator}{Vince E. Carballo, Miguel A. Chavez, Joe + Foley}{}{}{} + +\cventry{1998}{Low-Cost Pine Car Derby Timing System}{Joe + Foley}{Advanced Undergraduate Project}{Advisor: Professor Alex + Slocum}{} + +\subsection{Software Engineering} + +\cventry{2001}{Automotive Diagnosis Assistant}{Joe Foley, Ariel Segall}{}{}{} + +\cventry{1999}{Kraken: Distributed Cooperative Web Caching}{Joe Foley, Amy + Vandiver, \& Ben Vandiver}{}{}{} + +\cventry{1998}{Evolved PacMan: Genetic Algorithm for Design of Control + Systems}{Joe Foley \& Mike Phillips}{}{}{} + +\cventry{1996}{An Ad-Hoc FPGA --- Xilinx Type}{Joe Foley \& Mark Roh}{}{}{} + +\cventry{1996}{A Partly Read-Only, Portable Web Site}{Joe Foley}{}{}{} + +\subsection{Security} + +\cventry{2006}{ONS Deployment and Visibility Challenges}{Dan Engles + and Joe Foley}{}{}{} + +\cventry{2004}{Flingetty: Secure Multiparty Computation for a Dating Match-Up + System}{Natan Cliffer, Joe Foley, Hongyi Hu}{}{}{}{} + +\cventry{2003}{KLite: A RFID Tag Anti-Counterfeit System}{Joe Foley}{}{}{} + +\cventry{2003}{EPC Reductionism}{Joe Foley}{}{}{} + +\cventry{1996}{WhoRU:\@ Anonymous Encrypted Remailer}{Daniel Derksen, + Joe Foley, Matthew Rimer}{}{}{} + +\subsection{Miscellaneous} + +\cventry{1998}{Cambridge Heart}{Joe Foley, Marc Lebovitz, Ranjini + Srikantiah, Victor Su}{}{}{} + + +\section{Languages} +\cvlanguage{English}{Native}{} +\cvlanguage{Spanish}{Novice}{High School education, 1990--1994} +\cvlanguage{Chinese}{Novice}{MIT 2005} +\cvlanguage{Icelandic}{Novice}{RU Islenska fýrir Útlendingur 1--3} +%\pagebreak + +\section{Skills} +\cvcomputer{programming}{Rust, C/C++, Java}{scripting}{PHP, Bash, + python, perl} +\cvcomputer{scientific}{Matlab, Maple}{Modeling}{Creo, +SolidWorks, Inventor} +\cvcomputer{simulation}{AutoDesk SimulateCFD}{typography}{\LaTeX, PostScript}{}{} +\cvcomputer{control}{Arduino/Atmega, Raspberry Pi, BeagleBone, PIC}{Rapid prototyping}{FDM, + Laser templates, silicone molding} +\cvcomputer{OS}{Linux, UNIX, Windows, OSX}{administration}{Apache, + DNS, ONS} +\cvcomputer{web design}{PostNuke, Turbogears}{database}{MySQL, PostgreSQL} +\cvcomputer{EEA}{IS Explosives certification (class B), Amateur Radio License}{SCUBA}{PADI Rescue Diver, Dry Suit, Nitrox} + +%\section{Interests} +%\cvitem{design}{\small I am a design fan, especially when it comes to typography and photography.} +%\cvitem{adventure sports}{\small I like practicing adventure sports like skiing, rock climbing and scuba diving, and have been a boy scout for five years.} +%\cvitem{travelling}{\small I have been living abroad during my childhood, and love travelling around the world.} + +%\section{Section with a list} +%\cvlistitem{lol} +%\cvlistitem{lol} +%\cvlistdoubleitem{lol}{relol} +%\cvlistdoubleitem{lol}{relol} + +%\section{Section with your own content}\closesection +%Your content here,\\ +%inside the normal \LaTeX{} environment. + +%\emptysection{} +%\cvitem{Now}{Back to moderncv layout, without making a new section :-)} + +%\hyphenpenalty=50 +%\tolerance=100 +\end{document} +%\printbibliography{} %biblatex invocation if needed +% if you give it keyword options type={foo} then it will only put items of type foo +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/foley-short_cv.bbl b/foley-short_cv.bbl new file mode 100644 index 0000000..42191a1 --- /dev/null +++ b/foley-short_cv.bbl @@ -0,0 +1,669 @@ +% $ biblatex auxiliary file $ +% $ biblatex bbl format version 2.9 $ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber as required. +% +\begingroup +\makeatletter +\@ifundefined{ver@biblatex.sty} + {\@latex@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \aftergroup\endinput} + {} +\endgroup + + +\refsection{0} + \datalist[entry]{none/global//global/global} + \entry{foley2017antenna}{inproceedings}{} + \name{author}{4}{}{% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=fd8fcfa65c244c162859baa18ec82992}{% + family={Omelianov}, + familyi={O\bibinitperiod}, + given={Vladimir}, + giveni={V\bibinitperiod}}}% + {{hash=1cdcbbffa8433936aa212c361d36fff6}{% + family={Koziel}, + familyi={K\bibinitperiod}, + given={Slawomir}, + giveni={S\bibinitperiod}}}% + {{hash=4aac32dfa5b18ee401c3d2e608d5eb85}{% + family={Bekasiewcz}, + familyi={B\bibinitperiod}, + given={Adrian}, + giveni={A\bibinitperiod}}}% + } + \name{editor}{1}{}{% + {{hash=c26c17e81feb0143e0f94c28b75cc9d5}{% + family={Dodoun}, + familyi={D\bibinitperiod}, + given={Oana}, + giveni={O\bibinitperiod}}}% + } + \list{location}{1}{% + {Iasi, Romania}% + } + \list{publisher}{1}{% + {MATEC Web of Conferences}% + } + \strng{namehash}{74270433499e9c0af7afc10385380642} + \strng{fullhash}{74270433499e9c0af7afc10385380642} + \strng{bibnamehash}{74270433499e9c0af7afc10385380642} + \strng{authorbibnamehash}{74270433499e9c0af7afc10385380642} + \strng{authornamehash}{74270433499e9c0af7afc10385380642} + \strng{authorfullhash}{74270433499e9c0af7afc10385380642} + \strng{editorbibnamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editornamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editorfullhash}{c26c17e81feb0143e0f94c28b75cc9d5} + \field{sortinit}{1} + \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{11th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \strng{crossref}{icad2017} + \field{note}{Sep. 15--18} + \field{title}{Low-cost Antenna Positioning System Designed with {A}xiomatic {D}esign} + \field{year}{2017} + \field{pages}{7} + \range{pages}{1} + \endentry + \entry{foley2017faucet}{inproceedings}{} + \name{author}{3}{}{% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=1dcc7d4f53f8ee5b8b070beb07f68eb4}{% + family={Puik}, + familyi={P\bibinitperiod}, + given={Erik}, + giveni={E\bibinitperiod}}}% + {{hash=5119295c62e2f13b65c887fe3d23f34a}{% + family={Cochran}, + familyi={C\bibinitperiod}, + given={David\bibnamedelima S.}, + giveni={D\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + } + \name{editor}{1}{}{% + {{hash=c26c17e81feb0143e0f94c28b75cc9d5}{% + family={Dodoun}, + familyi={D\bibinitperiod}, + given={Oana}, + giveni={O\bibinitperiod}}}% + } + \list{location}{1}{% + {Iasi, Romania}% + } + \list{publisher}{1}{% + {MATEC Web of Conferences}% + } + \strng{namehash}{52580fd33c688c03deac9ca72b403a67} + \strng{fullhash}{52580fd33c688c03deac9ca72b403a67} + \strng{bibnamehash}{52580fd33c688c03deac9ca72b403a67} + \strng{authorbibnamehash}{52580fd33c688c03deac9ca72b403a67} + \strng{authornamehash}{52580fd33c688c03deac9ca72b403a67} + \strng{authorfullhash}{52580fd33c688c03deac9ca72b403a67} + \strng{editorbibnamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editornamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editorfullhash}{c26c17e81feb0143e0f94c28b75cc9d5} + \field{sortinit}{2} + \field{sortinithash}{cbff857e587bcb4635511624d773949e} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{11th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \strng{crossref}{icad2017} + \field{note}{Sep. 15--18} + \field{title}{The Faucet Reloaded: Improving {A}xiomatic {D}esign by Example} + \field{year}{2017} + \field{pages}{7} + \range{pages}{1} + \endentry + \entry{breznik2017collaborative}{inproceedings}{} + \name{author}{3}{}{% + {{hash=3d22ef9fda7908fe09c4b2e8a66f3dd2}{% + family={Breznik}, + familyi={B\bibinitperiod}, + given={Aleš}, + giveni={A\bibinitperiod}}}% + {{hash=a746bfceae6d90eaf88e6f51ca0d8079}{% + family={Planišič}, + familyi={P\bibinitperiod}, + given={Peter}, + giveni={P\bibinitperiod}}}% + {{hash=cca4d1118bd2e1fa7eac5246398bdf81}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima T.}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + } + \list{location}{1}{% + {Portorož, Slovenia}% + } + \strng{namehash}{d68e81d50cd8490ae8f64184f1b248b9} + \strng{fullhash}{d68e81d50cd8490ae8f64184f1b248b9} + \strng{bibnamehash}{d68e81d50cd8490ae8f64184f1b248b9} + \strng{authorbibnamehash}{d68e81d50cd8490ae8f64184f1b248b9} + \strng{authornamehash}{d68e81d50cd8490ae8f64184f1b248b9} + \strng{authorfullhash}{d68e81d50cd8490ae8f64184f1b248b9} + \field{sortinit}{3} + \field{sortinithash}{a4b52e5432884761f50fb9571273b93e} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{IEEE 26th International Electrotechnical and Computer Science Conference ERK 2017} + \field{title}{Collaborative development of an open-source rocket control system} + \field{year}{2017} + \field{pages}{4} + \range{pages}{1} + \endentry + \entry{foley2017msddontology}{inproceedings}{} + \name{author}{2}{}{% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=5119295c62e2f13b65c887fe3d23f34a}{% + family={Cochran}, + familyi={C\bibinitperiod}, + given={David\bibnamedelima S.}, + giveni={D\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + } + \list{location}{1}{% + {Cranfield University, UK}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{8e63c565eb21c60e2582ca792a7d5a41} + \strng{fullhash}{8e63c565eb21c60e2582ca792a7d5a41} + \strng{bibnamehash}{8e63c565eb21c60e2582ca792a7d5a41} + \strng{authorbibnamehash}{8e63c565eb21c60e2582ca792a7d5a41} + \strng{authornamehash}{8e63c565eb21c60e2582ca792a7d5a41} + \strng{authorfullhash}{8e63c565eb21c60e2582ca792a7d5a41} + \field{sortinit}{4} + \field{sortinithash}{11cdaee3b18e01d77f3f428b13c1fc76} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{Complex Systems Engineering and Development Proceedings of the 27th CIRP Design Conference} + \strng{crossref}{cirpdc2017} + \field{note}{May 10--12} + \field{title}{Manufacturing System Design Decomposition: An Ontology for Data Analytics and System Design Evaluation} + \field{year}{2017} + \field{pages}{175\bibrangedash 180} + \range{pages}{6} + \endentry + \entry{petursson2017smaspring}{inproceedings}{} + \name{author}{6}{}{% + {{hash=6abe9d1376f5cee9cc8ebed000959a6a}{% + family={Pétursson}, + familyi={P\bibinitperiod}, + given={Einar}, + giveni={E\bibinitperiod}}}% + {{hash=8a2af5749b3712209c543433fd28d93f}{% + family={Karlsson}, + familyi={K\bibinitperiod}, + given={Ingi\bibnamedelima N\'\iels}, + giveni={I\bibinitperiod\bibinitdelim N\bibinitperiod}}}% + {{hash=d8860ef0c98968d00566c4cdd2f74883}{% + family={Garðarsson}, + familyi={G\bibinitperiod}, + given={Olaf\bibnamedelima Garðar}, + giveni={O\bibinitperiod\bibinitdelim G\bibinitperiod}}}% + {{hash=e6d0127896d6ac1d943181d95b0952c2}{% + family={Pálsson}, + familyi={P\bibinitperiod}, + given={Páll}, + giveni={P\bibinitperiod}}}% + {{hash=e1b2c7eac813f357670ef5596f320dce}{% + family={Saulius\bibnamedelima Genutis}, + familyi={S\bibinitperiod\bibinitdelim G\bibinitperiod}, + given={Vladimir\bibnamedelima Omelianov}, + giveni={V\bibinitperiod\bibinitdelim O\bibinitperiod}}}% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + } + \list{location}{1}{% + {Cranfield University, UK}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{f4b65e5bfb1e61f14880aa383a0b4124} + \strng{fullhash}{f4b65e5bfb1e61f14880aa383a0b4124} + \strng{bibnamehash}{f4b65e5bfb1e61f14880aa383a0b4124} + \strng{authorbibnamehash}{f4b65e5bfb1e61f14880aa383a0b4124} + \strng{authornamehash}{f4b65e5bfb1e61f14880aa383a0b4124} + \strng{authorfullhash}{f4b65e5bfb1e61f14880aa383a0b4124} + \field{sortinit}{5} + \field{sortinithash}{3c19c3776b658b3558e9e2e4840c01e2} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{Complex Systems Engineering and Development Proceedings of the 27th CIRP Design Conference} + \strng{crossref}{cirpdc2017} + \field{note}{May 10--12} + \field{title}{{A}xiomatic {D}esign of Equipment for Analysis of {SMA} Spring Degradation During Electronic Actuation} + \field{year}{2017} + \field{pages}{261\bibrangedash 266} + \range{pages}{6} + \endentry + \entry{foley2016desirable}{inproceedings}{} + \name{author}{3}{}{% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=1dcc7d4f53f8ee5b8b070beb07f68eb4}{% + family={Puik}, + familyi={P\bibinitperiod}, + given={Erik}, + giveni={E\bibinitperiod}}}% + {{hash=5119295c62e2f13b65c887fe3d23f34a}{% + family={Cochran}, + familyi={C\bibinitperiod}, + given={David\bibnamedelima S.}, + giveni={D\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + } + \name{editor}{1}{}{% + {{hash=fc503e8b62eecf2c1f583b4191d838e1}{% + family={Liu}, + familyi={L\bibinitperiod}, + given={Ang}, + giveni={A\bibinitperiod}}}% + } + \list{location}{1}{% + {Xi'an, Shaanxi, China}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{52580fd33c688c03deac9ca72b403a67} + \strng{fullhash}{52580fd33c688c03deac9ca72b403a67} + \strng{bibnamehash}{52580fd33c688c03deac9ca72b403a67} + \strng{authorbibnamehash}{52580fd33c688c03deac9ca72b403a67} + \strng{authornamehash}{52580fd33c688c03deac9ca72b403a67} + \strng{authorfullhash}{52580fd33c688c03deac9ca72b403a67} + \strng{editorbibnamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editornamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editorfullhash}{fc503e8b62eecf2c1f583b4191d838e1} + \field{sortinit}{6} + \field{sortinithash}{57e57fb8451e7fcfa45d1e069f6d3136} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \strng{crossref}{icad2016} + \field{note}{Sep. 21--23} + \field{title}{Desirable Complexity} + \field{volume}{53} + \field{year}{2016} + \field{pages}{101\bibrangedash 106} + \range{pages}{6} + \endentry + \entry{guls2016auvlight}{inproceedings}{} + \name{author}{5}{}{% + {{hash=ee8bb7985c97fd158d3242232f988037}{% + family={Guls}, + familyi={G\bibinitperiod}, + given={Jevgenij}, + giveni={J\bibinitperiod}}}% + {{hash=0ee6927655ea4d891b7fbba8e9d21ede}{% + family={Bjarnason}, + familyi={B\bibinitperiod}, + given={Ólafur\bibnamedelima Ingi}, + giveni={Ó\bibinitperiod\bibinitdelim I\bibinitperiod}}}% + {{hash=ad7a805204d6598a69436ac748837e87}{% + family={Pétursson}, + familyi={P\bibinitperiod}, + given={Óskar}, + giveni={Ó\bibinitperiod}}}% + {{hash=89004433f1373e4e12090cd0c1915f7d}{% + family={Einarsson}, + familyi={E\bibinitperiod}, + given={Sævar\bibnamedelima Örn}, + giveni={S\bibinitperiod\bibinitdelim Ö\bibinitperiod}}}% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + } + \name{editor}{1}{}{% + {{hash=fc503e8b62eecf2c1f583b4191d838e1}{% + family={Liu}, + familyi={L\bibinitperiod}, + given={Ang}, + giveni={A\bibinitperiod}}}% + } + \list{location}{1}{% + {Xi'an, Shaanxi, China}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{0c164ab76408eebf5355169fd8ae2962} + \strng{fullhash}{0c164ab76408eebf5355169fd8ae2962} + \strng{bibnamehash}{0c164ab76408eebf5355169fd8ae2962} + \strng{authorbibnamehash}{0c164ab76408eebf5355169fd8ae2962} + \strng{authornamehash}{0c164ab76408eebf5355169fd8ae2962} + \strng{authorfullhash}{0c164ab76408eebf5355169fd8ae2962} + \strng{editorbibnamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editornamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editorfullhash}{fc503e8b62eecf2c1f583b4191d838e1} + \field{sortinit}{7} + \field{sortinithash}{c818dd9105a2852444fc9f5e145c294e} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \strng{crossref}{icad2016} + \field{note}{Sep. 21--23} + \field{title}{Application of {A}xiomatic {D}esign in designing Autonomous Underwater photography lighting} + \field{volume}{53} + \field{year}{2016} + \field{pages}{278\bibrangedash 283} + \range{pages}{6} + \endentry + \entry{puik2016ignorance}{inproceedings}{} + \name{author}{3}{}{% + {{hash=1dcc7d4f53f8ee5b8b070beb07f68eb4}{% + family={Puik}, + familyi={P\bibinitperiod}, + given={Erik}, + giveni={E\bibinitperiod}}}% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=c913156b569446a68cd7689a7c2c3fe8}{% + family={Ceglarek}, + familyi={C\bibinitperiod}, + given={Darek}, + giveni={D\bibinitperiod}}}% + } + \name{editor}{1}{}{% + {{hash=fc503e8b62eecf2c1f583b4191d838e1}{% + family={Liu}, + familyi={L\bibinitperiod}, + given={Ang}, + giveni={A\bibinitperiod}}}% + } + \list{location}{1}{% + {Xi'an, Shaanxi, China}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{c221015e4281d5a0df5f60b0cc9dbef4} + \strng{fullhash}{c221015e4281d5a0df5f60b0cc9dbef4} + \strng{bibnamehash}{c221015e4281d5a0df5f60b0cc9dbef4} + \strng{authorbibnamehash}{c221015e4281d5a0df5f60b0cc9dbef4} + \strng{authornamehash}{c221015e4281d5a0df5f60b0cc9dbef4} + \strng{authorfullhash}{c221015e4281d5a0df5f60b0cc9dbef4} + \strng{editorbibnamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editornamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editorfullhash}{fc503e8b62eecf2c1f583b4191d838e1} + \field{sortinit}{8} + \field{sortinithash}{07edf88d4ea82509b9c4b4d13f41c452} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \strng{crossref}{icad2016} + \field{note}{Sep. 21--23} + \field{title}{Ignorance is bliss: sudden appearance of previously unrecognized information and its effect} + \field{volume}{53} + \field{year}{2016} + \field{pages}{70\bibrangedash 77} + \range{pages}{8} + \endentry + \entry{foley2016creative}{inproceedings}{} + \name{author}{2}{}{% + {{hash=51c12315034df22572adffe45728ebdc}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima Timothy}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=b957e9f8ccecba6788a0e30e99259f40}{% + family={Harðardóttir}, + familyi={H\bibinitperiod}, + given={Sigrún}, + giveni={S\bibinitperiod}}}% + } + \list{location}{1}{% + {Stockholm, Sweden}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{dc8d7343da1ffe3c72efce3c358a6bc7} + \strng{fullhash}{dc8d7343da1ffe3c72efce3c358a6bc7} + \strng{bibnamehash}{dc8d7343da1ffe3c72efce3c358a6bc7} + \strng{authorbibnamehash}{dc8d7343da1ffe3c72efce3c358a6bc7} + \strng{authornamehash}{dc8d7343da1ffe3c72efce3c358a6bc7} + \strng{authorfullhash}{dc8d7343da1ffe3c72efce3c358a6bc7} + \field{sortinit}{9} + \field{sortinithash}{1dd72ab054147731c9d824b49aba0534} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{26th CIRP Design Conference} + \strng{crossref}{cirpdc2016} + \field{note}{Jun. 15--17} + \field{title}{Creative {A}xiomatic {D}esign} + \field{year}{2016} + \field{pages}{688\bibrangedash 694} + \range{pages}{7} + \endentry + \entry{cochran2016hospital}{inproceedings}{} + \name{author}{4}{}{% + {{hash=5119295c62e2f13b65c887fe3d23f34a}{% + family={Cochran}, + familyi={C\bibinitperiod}, + given={David\bibnamedelima S.}, + giveni={D\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + {{hash=508f0a4e80af71a1970f575437811489}{% + family={Li}, + familyi={L\bibinitperiod}, + given={Jia}, + giveni={J\bibinitperiod}}}% + {{hash=4776cfd5afe29c5cd830889a15806865}{% + family={Vanover}, + familyi={V\bibinitperiod}, + given={Kyle}, + giveni={K\bibinitperiod}}}% + {{hash=cca4d1118bd2e1fa7eac5246398bdf81}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima T.}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + } + \list{location}{1}{% + {Stockholm, Sweden}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{9a487eabdf3a79ecdcbfd65b035a9979} + \strng{fullhash}{9a487eabdf3a79ecdcbfd65b035a9979} + \strng{bibnamehash}{9a487eabdf3a79ecdcbfd65b035a9979} + \strng{authorbibnamehash}{9a487eabdf3a79ecdcbfd65b035a9979} + \strng{authornamehash}{9a487eabdf3a79ecdcbfd65b035a9979} + \strng{authorfullhash}{9a487eabdf3a79ecdcbfd65b035a9979} + \field{sortinit}{1} + \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{26th CIRP Design Conference} + \strng{crossref}{cirpdc2016} + \field{note}{Jun. 15--17} + \field{title}{{A} {S}ystem {D}esign of a {R}ural {H}ospital {O}perating {R}oom} + \field{year}{2016} + \field{pages}{597\bibrangedash 603} + \range{pages}{7} + \endentry + \entry{cochran2016msdd}{article}{} + \name{author}{3}{}{% + {{hash=5119295c62e2f13b65c887fe3d23f34a}{% + family={Cochran}, + familyi={C\bibinitperiod}, + given={David\bibnamedelima S.}, + giveni={D\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + {{hash=cca4d1118bd2e1fa7eac5246398bdf81}{% + family={Foley}, + familyi={F\bibinitperiod}, + given={Joseph\bibnamedelima T.}, + giveni={J\bibinitperiod\bibinitdelim T\bibinitperiod}}}% + {{hash=93c8b1c5accaeea2d4c801365e52e2ba}{% + family={Bi}, + familyi={B\bibinitperiod}, + given={Zhuming}, + giveni={Z\bibinitperiod}}}% + } + \strng{namehash}{f96c1f4ac3296bad84a4cb31e480dbc9} + \strng{fullhash}{f96c1f4ac3296bad84a4cb31e480dbc9} + \strng{bibnamehash}{f96c1f4ac3296bad84a4cb31e480dbc9} + \strng{authorbibnamehash}{f96c1f4ac3296bad84a4cb31e480dbc9} + \strng{authornamehash}{f96c1f4ac3296bad84a4cb31e480dbc9} + \strng{authorfullhash}{f96c1f4ac3296bad84a4cb31e480dbc9} + \field{sortinit}{1} + \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{issue}{3} + \field{journaltitle}{International Journal of Production Research} + \field{title}{{U}se of the {M}anufacturing {S}ystem {D}esign {D}ecomposition for {C}omparative {A}nalysis and {E}ffective {D}esign of {P}roduction {S}ystems} + \field{volume}{55} + \field{year}{2016} + \field{pages}{870\bibrangedash 890} + \range{pages}{21} + \endentry + \entry{cirpdc2016}{proceedings}{} + \list{location}{1}{% + {Stockholm, Sweden}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \true{crossrefsource} + \field{labeltitlesource}{title} + \field{booktitle}{26th CIRP Design Conference} + \field{note}{Jun. 15--17} + \field{title}{26th CIRP Design Conference} + \field{year}{2016} + \endentry + \entry{icad2016}{proceedings}{} + \name{editor}{1}{}{% + {{hash=fc503e8b62eecf2c1f583b4191d838e1}{% + family={Liu}, + familyi={L\bibinitperiod}, + given={Ang}, + giveni={A\bibinitperiod}}}% + } + \list{location}{1}{% + {Xi'an, Shaanxi, China}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \strng{namehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{fullhash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{bibnamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editorbibnamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editornamehash}{fc503e8b62eecf2c1f583b4191d838e1} + \strng{editorfullhash}{fc503e8b62eecf2c1f583b4191d838e1} + \true{crossrefsource} + \field{labelnamesource}{editor} + \field{labeltitlesource}{title} + \field{booktitle}{10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \field{note}{Sep. 21--23} + \field{title}{10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \field{volume}{53} + \field{year}{2016} + \endentry + \entry{icad2017}{proceedings}{} + \name{editor}{1}{}{% + {{hash=c26c17e81feb0143e0f94c28b75cc9d5}{% + family={Dodoun}, + familyi={D\bibinitperiod}, + given={Oana}, + giveni={O\bibinitperiod}}}% + } + \list{location}{1}{% + {Iasi, Romania}% + } + \list{publisher}{1}{% + {MATEC Web of Conferences}% + } + \strng{namehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{fullhash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{bibnamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editorbibnamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editornamehash}{c26c17e81feb0143e0f94c28b75cc9d5} + \strng{editorfullhash}{c26c17e81feb0143e0f94c28b75cc9d5} + \true{crossrefsource} + \field{labelnamesource}{editor} + \field{labeltitlesource}{title} + \field{booktitle}{11th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \field{note}{Sep. 15--18} + \field{title}{11th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})} + \field{year}{2017} + \endentry + \entry{cirpdc2017}{proceedings}{} + \list{location}{1}{% + {Cranfield University, UK}% + } + \list{organization}{1}{% + {Procedia CIRP}% + } + \list{publisher}{1}{% + {Elsevier ScienceDirect}% + } + \true{crossrefsource} + \field{labeltitlesource}{title} + \field{booktitle}{Complex Systems Engineering and Development Proceedings of the 27th CIRP Design Conference} + \field{note}{May 10--12} + \field{title}{Complex Systems Engineering and Development Proceedings of the 27th CIRP Design Conference} + \field{year}{2017} + \endentry + \enddatalist +\endrefsection +\endinput + diff --git a/foley-short_cv.pdf b/foley-short_cv.pdf new file mode 100644 index 0000000..9290996 Binary files /dev/null and b/foley-short_cv.pdf differ diff --git a/foley-short_cv.synctex.gz b/foley-short_cv.synctex.gz new file mode 100644 index 0000000..464de74 Binary files /dev/null and b/foley-short_cv.synctex.gz differ diff --git a/foley-short_cv.tex b/foley-short_cv.tex new file mode 100644 index 0000000..d5a221c --- /dev/null +++ b/foley-short_cv.tex @@ -0,0 +1,207 @@ +\documentclass[11pt]{moderncv} +\RequirePackage{ifxetex} + +% moderncv styles +%\moderncvstyle{casual} +%\moderncvstyle[nocolor]{casual} +%\moderncvstyle{classic} +%\moderncvstyle[roman]{classic} +\moderncvtheme[blue]{classic} + +\ifxetex% + \RequirePackage{fontspec}% font selecting commands + \RequirePackage{xunicode}% unicode character macros + \RequirePackage{xltxtra}% a few fixes and extras + \setmainfont{Times New Roman}%The IEEE Slovenia conference wants Times + \PassOptionsToPackage{warn}{textcomp}% + %% Turn substitutions from errors into warnings on + %% the textcomp package. + %% This is needed because some fonts do not have a \textohm for siunitx + \RequirePackage{textcomp}% special glyphs +\else + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} % allows UTF encoding, needed for Icelandic characters + +\fi + +% character encoding +%\usepackage[T1]{fontenc} +%\usepackage[utf8]{inputenc} % allows UTF encoding, needed for Icelandic characters +% But not needed if we are using XeLaTeX + +% biblatex/biber citations +%% We set when etal is used in maxnames=XX +\usepackage[backend=biber, bibencoding=utf8, style=ieee, maxnames=99]{biblatex} +%\usepackage[backend=biber, bibencoding=utf8, style=apa]{biblatex} +%\usepackage[american]{babel} +%\DeclareLanguageMapping{american}{american-apa} % after biblatex and babel +\usepackage[margin=20mm]{geometry} +\addbibresource{references.bib} +\addbibresource{references-collections.bib} + + +% resize margins if needed, mostly for A4 +%\usepackage[scale=0.8]{geometry} +\hyphenpenalty=5000 +\tolerance=500 + +% personal data +\firstname{Dr.\ Joseph T.} +\familyname{Foley} +\title{Assistant Professor, Reykjavík University} +%\address{12 somestreet}{3456 somecity} % for classic style +%\address{11 Ticklefancy Lane}{Salem, NH 03079 USA} % for casual style +%\phone{(617)395-0383} %Vonage +%\mobile{(617)233-4590} %Cellphone +%\email{foley@alum.mit.edu} +\address{Menntavegur 1}{101 Reykjavík, Iceland} % for casual style +%\address{Álakvísl 39}{110 Reykjavík, Iceland} % for casual style +%\phone{+1(617)395--0383} %Vonage° +\phone{+354--599--6569} %RU +%\mobile{+354--661--7658} %Cellphone +%\email{foley@ru.is} +\email{foley@ru.is} +%\photo{foley-crop-lowres} +%\extrainfo{{\small married with childrens}} +%\quote{} + +%\renewcommand{\listsymbol}{{\fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}}} +%\definecolor{see}{rgb}{0.5,0.5,0.5} + +% command for text subscripts +%\newcommand{\up}[1]{\ensuremath{^\textrm{\scriptsize#1}}} + + +% slanted small caps (only with roman family; the sans serif font doesn't exists :-() +%\usepackage{slantsc} +%\DeclareFontFamily{T1}{myfont}{} +%\DeclareFontShape{T1}{myfont}{m}{scsl}{ <-> cork-lmssqbo8}{} +%\usefont{T1}{myfont}{m}{scsl}Testing the font + + +%---------------------------------------------------------------------------------- +% content +%---------------------------------------------------------------------------------- +\hyphenpenalty=5000 +\tolerance=500 +\begin{document} +%\maketitle +%\makequote +\textbf{Dr.\ Joseph T. Foley , Assistant Professor\\Reykjavík University Science and Engineering Department} +\section{Education} +% june 21, 2007 +\cventry{2000--2007}{Ph.D.\ in Mechanical + Engineering}{Massachusetts Institute of Technology~(MIT)}{}{}{} +% june 1, 1999 +\cventry{1998--1999}{M.Eng.\ in Computer Science and + Electrical Engineering}{MIT}{}{}{} +\cventry{1994--1999}{B.Sc.\ in Computer Science and + Electrical Engineering}{MIT}{}{}{} + +% \section{Doctor of Philosophy Dissertation} +% \cvitem{title}{\emph{Security Approaches for Radio Frequency +% Identification Systems}} +% \cvitem{supervisor}{Professor Sanjay Sarma} +% \cvitem{description}{\small Describes preventative measures +% and protection from the privacy invasion potential associated with +% ubiquitous Radio Frequency Identification (RFID) while still +% maintaining capabilities to track items and prevent theft. The unified RFID protection system is called TinFoil.} + +% \section{Master Thesis} +% \cvitem{title}{\emph{An Infrastructure for Electromechanical +% Appliances on the Internet}} +% \cvitem{supervisor}{Professor Sanjay Sarma} +% \cvitem{description}{\small Design and implementation of an Radio +% Frequency Identification(RFID) and Internet enabled appliance. The +% design focused on general methods applicable to a wide variety of +% intelligent devices. Fundamental development of ONS and EPC technologies.} + +\setlength{\parskip}{0.7\baselineskip} +%\newcommand{\cvbibentry}[1]{\cventry{\citeyear{#1}}{\citetitle{#1}}{\fullcite{#1}}{}{}{}} +\newcommand{\cvbibentry}[1]{\fullcite{#1}\par} + +\section{Published Work} +\cvbibentry{foley2017antenna}%01015 +\cvbibentry{foley2017faucet}%01009 +%\cvbibentry{foley2017motorcyclelift}%01008 +%\cvbibentry{foley2017adjustadesk}%01002 +\cvbibentry{breznik2017collaborative} +\cvbibentry{foley2017msddontology} +\cvbibentry{petursson2017smaspring} +%\cvbibentry{erlingsson2016roboclaw} +\cvbibentry{foley2016desirable} +\cvbibentry{guls2016auvlight} +%\cvbibentry{gerhard2016suretrack} +%\cvbibentry{omarsdottir2016chessmate} +\cvbibentry{puik2016ignorance} +%\cvbibentry{foley2016evaluating} +\cvbibentry{foley2016creative} +\cvbibentry{cochran2016hospital} +\cvbibentry{cochran2016msdd} + +\end{document} +\section{Invited Talks and Presentations} +%\cventry{2018}{Axiomatic Design and Desirable Complexity}{Joe +%Foley}{IWSSIP 2018 --- 25th International Conference on Systems, Signals, and Image Processing}{Maribor, Slovenia, June 20}{}{} + +\cventry{2017}{Axiomatic Design for Everyone}{Joe +Foley}{International Conference on Axiomatic Design Tutorial}{ +Iasi, Romania, September 11}{}{} +\cventry{2014}{Raspberry Pi: Affordable Embedded Linux}{Joe +Foley}{Félag rafeindavirkja (Icelandic Electronics Association) Keynote}{Stórhöfði 29, +Reykjavík 110, May 29}{}{} + +\section{Intellectual Property} +\cventry{2014}{iPad Video Control}{Joe + Foley}{}{}{Modular cgi-based iPad Video control system for use with + Raspberry Pi. Developed for the Reykjavík Art Museum.} +\cventry{2013}{DVD and Blue-ray Art Installation Synchronizer}{Joe + Foley}{}{}{Arduino system for video synchronization. Developed for + the Reykjavík Art Museum} +\cventry{2013}{US Patent 8,384,546 ``Tag Anti-Countefeit + Systems''}{Joseph T. Foley, Sanjay E. Sarma, and Steve Weis}{}{}{} +\cventry{2011}{US Patent 20110083325 A ``Method of Manufacturing a + Nickel Titanium Coil Actuator''}{M. Jolda and J. Foley, iRobot Patent }{}{}{} +\cventry{2011}{Google Code ``arduino-roomba''}{Joe Foley}{}{}{Library + for interfacing an Arduino and iRobot Create/Roomba. GPL2.} +\cventry{2000}{US Patent 7,765,253 ``Object Name Service''}{Joseph + Foley, Erik Nygren, \& Sanjay Sarma. MIT TLO 9789}{}{}{} + + +\section{Research Grants} +\cventry{September 2012-January 2013}{Advisor}{RANNIS Technology Fund + (Tækjniróunarsjóður)}{Menntavegur 1, + Reykjavík 101, Iceland}{}{Grant: Automated Pinbone Removal in Cod + and Whitefish (APRICOT). PI:~Kristinn Andersen (Marel)} +\cventry{June 2011-September 2011}{Advisor}{RANNIS Student Innovation + Fund (Nýsköpunarsjóður námsmanna)}{Menntavegur 1, + Reykjavík 101, Iceland}{}{Grant: ``CNC foam-cutter for micro air + vehicle wings'' for student research salary during summer. Advised software and mechanical + undergraduates in the design and construction of a high-precision, + low-cost computer-controlled (CNC) hot-wire foam cutter for the prototyping of small-scale + foam-composite aircraft wings. Materials funded from RANNIS ``Flapping-wing + Unmanned Air Vehicle''. } + + +%\section{Section with a list} +%\cvlistitem{lol} +%\cvlistitem{lol} +%\cvlistdoubleitem{lol}{relol} +%\cvlistdoubleitem{lol}{relol} + +%\section{Section wit h your own content}\closesection +%Your content here,\\ +%inside the normal \LaTeX{} environment. + +%\emptysection{} +%\cvitem{Now}{Back to moderncv layout, without making a new section :-)} + +%\hyphenpenalty=50 +%\tolerance=100 +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% TeX-engine: xetex +%%% End: diff --git a/foley_cv-old.tex b/foley_cv-old.tex new file mode 100644 index 0000000..47766e2 --- /dev/null +++ b/foley_cv-old.tex @@ -0,0 +1,278 @@ +\documentclass[11pt]{moderncv} +\hyphenpenalty=5000 +\tolerance=1000 +% moderncv styles +%\moderncvstyle{casual} +%\moderncvstyle[nocolor]{casual} +%\moderncvstyle{classic} +%\moderncvstyle[roman]{classic} +\moderncvtheme[blue]{classic} + +% character encoding +\usepackage[utf8]{inputenc} + +% resize margins if needed, mostly for A4 +%\usepackage[scale=0.8]{geometry} + +% personal data +\firstname{Dr. Joseph} +\familyname{Foley} +\title{Mechanical, Manufacturing and Security Designer\dots} +%\address{12 somestreet}{3456 somecity} % for classic style +%\address{11 Ticklefancy Lane}{Salem, NH 03079 USA} % for casual style +\address{Ásvegur 15}{104 Reykavík, Iceland} % for casual style +\phone{+1 (617) 395-0383} +\mobile{+354-661-7658} +\email{foley@objid.net} +%\extrainfo{{\small married with childrens}} +%\quote{} + +%\renewcommand{\listsymbol}{{\fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}}} +%\definecolor{see}{rgb}{0.5,0.5,0.5} + +% command for text subscripts +%\newcommand{\up}[1]{\ensuremath{^\textrm{\scriptsize#1}}} + + +% slanted small caps (only with roman family; the sans serif font doesn't exists :-() +%\usepackage{slantsc} +%\DeclareFontFamily{T1}{myfont}{} +%\DeclareFontShape{T1}{myfont}{m}{scsl}{ <-> cork-lmssqbo8}{} +%\usefont{T1}{myfont}{m}{scsl}Testing the font + + +%---------------------------------------------------------------------------------- +% content +%---------------------------------------------------------------------------------- +\begin{document} +\maketitle +%\makequote + +\section{Education} +% june 21, 2007 +\cventry{2000-2007}{Doctor of Philosophy in Mechanical + Engineering}{Massachusetts Institute of Technology}{}{}{} +% june 1, 1999 +\cventry{1998-1999}{Master of Engineering in Computer Science and + Electrical Engineering}{Massachusetts Institute of Technology}{}{}{} +\cventry{1994-1999}{Bachelor of Science in Computer Science and + Electrical Engineering}{Massachusetts Institute of Technology}{}{}{} + +\section{Doctor of Philosophy Dissertation} +\cvitem{title}{\emph{Security Approaches for Radio Frequency + Identification Systems}} +\cvitem{supervisor}{Professor Sanjay Sarma} +\cvitem{description}{\small Describes preventative measures +and protection from the privacy invasion potential associated with +ubiquitous Radio Frequency Identification (RFID) while still +maintaining current capabilities.} + +\section{Master Thesis} +\cvitem{title}{\emph{An Infrastructure for Electromechanical +Appliances on the Internet}} +\cvitem{supervisor}{Professor Sanjay Sarma} +\cvitem{description}{\small Design and implementation of an Radio +Frequency Identification(RFID) and internet enabled appliance. The +design focused on general methods applicable to a wide variety of +intelligent devices. Fundamental development of ONS and EPC technologies.} + +\section{Published Work} +\cventry{2009}{Micro artificial muscle fiber using + NiTi spring for soft robotics}{S. Kim, E. Hawkes, K. Cho, M. Jolda, + J. Foley, and R. Wood}{IROS 2009}{}{} +\cventry{2008}{TurbSim: Reliability-based Wind Turbine + Simulator}{J. Foley, T. Gutowski}{2008 ISEE}{}{} +\cventry{2001}{The Networked Physical World: An Automated + Identification Architecture}{D. Engels, J. Foley, J. Waldrop, + S. Sarma, D. Brock}{WIAPP '01}{}{} + +\section{Invited Talks and Presentations} +\cventry{2012}{Digital Manufacturing and Personal Sustainability}{Joe + Foley}{Alþjóðlegi Umhverfisdagurinn (World Environment Day)} + {Reykjavík University, June 5}{}{} +\cventry{2010}{Exploitable Assumptions}{A. Brooks, E. Schmiedl, + J. Foley}{DEFCON 2011}{}{} +\cventry{2006}{Security Approaches for Radio Frequency Identification + Systems}{Dr. Joseph T. Foley}{EPCglobaUS Conference}{Los Angeles, October 19}{} +\cventry{2003}{Happy Trails: Automated Lifting Trailer}{MIT 2.009 Team + Purple '99}{Lemelson Inventor Conference}{Washington DC}{} +\cventry{2002}{AutoID Technology Demonstration}{Distributed + Information System Center MIT}{Cambridge University UK}{}{} + +\section{Intellectual Property} +\cventry{2011}{Google Code ``arduino-roomba''}{Joe Foley}{}{}{Library + for interfacing an Arduino and iRobot Create/Roomba. GPL2.} +\cventry{2009}{US Patent Pending ``Manufacture of Inverted SMA + Springs''}{M. Jolda and J. Foley, iRobot Patent }{}{}{} +\cventry{2007}{US Patent Pending ``Tag Anti-Counterfeit Systems''}{Joe + Foley \& Sanjay Sarma, MIT TLO 10695}{}{}{} +\cventry{2000}{US Patent 7,765,253 ``Object Name Service''}{Joseph + Foley, Erik Nygren, \& Sanjay Sarma. MIT TLO 9789}{}{}{} + +\section{Collaboration} +\cventry{2011-Current}{RU-LHÍ Music, Art, Software, Engineering + Collaboration}{RU Lead}{Reykjavik University and Listaháskolinn Islands}{}{Ongoing collaboration efforts are underway between the LHÍ + Music and Visual Arts and the RU Computer Science and Science and + Engineering department. This + collaboration is expected to develop an + interdiscipline project incorporating Music, Art, Software, and + Engineering by building upon the last program's success.} +\cventry{2011}{``Emerging and Imposing Spaces'' (``Vaxandi og + uppáþrengjandi rými'')}{co-organized with Sigrún + Harðardóttir}{RU and LHÍ}{Electro-mechanical Interactive Art}{Visual + Arts class ``Interactivity'' LHÍ \& RU VT + HUN1013 ``Design'' cooperated to produce 7 unique art installation + works shown at LHÍ. Selected pieces +shown at Hreindirland Festival 2011 and covered by RÚV 2.} +\cventry{2010--Current}{Faculty Advisor}{RU and Hakkavélin}{Hackspace}{}{} +\cventry{2003--2004}{Internet Engineering Task Force (IETF) ONS Working Group}{founding member}{AutoID Center MIT, Verisign, + \& EPC Global}{}{} +\cventry{2005}{ONS 1.0}{architect}{AutoID + Center MIT \& OATsystems}{}{} + +\section{Teaching} +\cventry{August 2011-Present}{Lecturer}{Reykjavik + University}{Reykjavik 101, Iceland}{}{Teaching T-865-MADE + ``Precision Machine Design'', developing low-cost precision lab + equipment to be used by RU bioengineering department. Teaching + T-411-MECH ``Mechatronics 1'', building affordable circuit prototyping and + automation education using the Arduino architecture.} +\cventry{January 2010-May 2010}{Lecturer}{Reykjavik + University}{Reykjavik 101, Iceland}{}{Taught VT + HUN1013 (Hönnun) Mechanical Design, which produced designs for + research equipment and interactive art installations. (See collaborations). + Co-taught T-420-HON (Hönnun X): class project that developed an aluminum + smelter pot inspection robot for Rio Tinto Alcan.} +\cventry{September 2005-January 2006}{Teaching Assistant}{CSCI-E-170: + Computer Security and Privacy}{Harvard Extension School}{Cambridge, + MA}{Lectures, problem set generation, and grading on security + material.} +\cventry{September 2002-August 2005}{Head Instructor}{MIT Faculty + Pistol \& Rifle Club}{Cambridge, MA}{}{Revised NRA pistol safety + curriculum to integrate international target pistol trends. Taught + Marksmanship and Pistol Safety course every semester.} +\cventry{September 1999-December 1999}{Teaching Assistant}{MIT 2.007 + Introduction to Mechanical Design}{Cambridge, MA}{}{Revised + curriculum, developed control system and scoring system for + ``Ballcano'' robotics competition.} +\section{Research Grants} +\cventry{June 2011-September 2011}{Advisor}{Rannis Student Innovaton + Fund (Nýsköpunarsjóður námsmanna)}{Menntavegur 1, + Reykjavik 101, Iceland}{}{Grant: ``CNC foam-cutter for micro air + vehicle wings'' for student research salary during summer. Advised software and mechanical + undergraduates in the design and construction of a high-precision, + low-cost computer-controlled (CNC) hot-wire foam cutter for the prototyping of small-scale + foam-composite aircraft wings. Materials funded from RANNIS ``Flapping-wing + Unmanned Air Vehicle''. } +\section{Experience} +\cventry{January 2010-Current}{Specialist}{Reykjavik + University}{Menntavegur 1, Reykjavik 101, Iceland}{}{Research into + simplified robotics infrastructure to solve many sensing problems + and rapid prototyping capabilities.} +\cventry{September 2011-February 2012}{Consultant}{Icelandair + Technical Services, Design Department}{Building 8, 235 Keflavik + Airport, Iceland}{}{Designing and prototyping ATMega/Arduino avionics interface to + convert and filter data between A757 and A429 data buses. This + interface will allow real-time monitoring of flight data, with + particular focus on the accelerometer inputs.} +\cventry{June 2011-September 2011}{Consultant}{3Z ehf.}{Menntavegur 1, + Reykjavik 101, Iceland}{}{Designed and implemented prototype + zebrafish embryo dispensing robot for pharmacology and toxicity studies.} +\cventry{September 2010-March 2011}{Consultant}{Brass Drift, + Inc.}{Emeryville, CA}{}{Designed custom low-cost flexture locking mechanism + for an electronic security box.} +\cventry{September 2010-January 2011}{Consultant}{MIT Biomimetic Robotics + Lab}{Cambridge, MA USA \& Reykjavik, Iceland}{}{Finite element analysis of advanced + structural composites used to develop a high speed quadruped robot + for Professor Sangbae Kim.} +\cventry{November 2007-August 2010}{Senior Research Scientist}{iRobot + G \& I Research}{Bedford, MA}{}{Designing new + robotics concepts and mechanisms in the DARPA ChemBots program. + iRobot research \& development in government and industrial applications/proposals.} +\cventry{November 2006-November 2007}{PostDoctoral Research + Associate}{MIT}{Cambridge, MA}{}{``Energy Efficiency in + Manufacturing'' Investigated energy usage in the manufacturing + industries and created wind turbine reliability simulator.} +\cventry{January 2004-March 2004}{Web software engineer}{SigMantra + LLC}{Bedford, MA}{}{Developed social-media website ``Uffinity'' for + connecting recently graduated young-professionals to others offering +employment.} +\cventry{May 2000 - September 2000}{Magic Mechanic}{Emode, + Inc.}{Cambridge, MA}{}{Developed world's largest fully-indexed quote + database. Developed and installed network security policies and + equipment} +\cventry{May 1997 - September 1997}{Mechanical Design Engineer}{Brute + Force Games}{Cambridge, MA}{}{Designed full immersion game simulator + platform leveraging vection research.} +\cventry{September 1996 - September 1999}{Network Programmer}{MIT + Network Operations}{Cambridge, MA}{}{Security operations and + emergency paging system development.} + +\section{Unpublished and Project Works, available upon request} +\subsection{Manufacturing} +\cventry{2011}{Bio-tensegrity: A New Design Paradigm for Hyperdynamic + Legged Robots}{A. Ananthanarayanan, J. Foley, and S. Kim}{}{}{} +\cventry{2000}{System Analysis and Design of the Insight M3/M5 Tactical +Illuminator}{Vince E. Carballo, Miguel A. Chavez, Joe Foley}{}{}{} +\cventry{1998}{Cambridge Heart}{Joe Foley, Marc Lebovitz, Ranjini +Srikantiah, Victor Su}{}{}{} +\cventry{1998}{Low-Cost Pine Car Derby Timing System}{Joe +Foley}{Advanced Undergraduate Project}{Advisor: Professor Alex Slocum}{} +\subsection{Design} +\cventry{2001}{Wireless Friends: Company Business Plan}{Sofy Tarud, Joe +Foley, Oscar Lopez, Omri Pedatzur}{}{}{} +\cventry{2001}{Automotive Diagnosis Assistant}{Joe Foley, Ariel Segall}{}{}{} +\cventry{1999}{Kraken: Distributed Cooperative Web Caching}{Joe Foley, Amy +Vandiver, Ben Vandiver}{}{}{} +\cventry{1998}{Evolved PacMan: Genetic Algorithm for Design of Control +Systems}{Joe Foley \& Mike Phillips}{}{}{} +\cventry{1996}{An Ad-Hoc FPGA - Xilinx Type}{Joe Foley \& Mark Roh}{}{}{} +\cventry{1996}{A Partly Read-Only, Portable Web Site}{Joe Foley}{}{}{} +\subsection{Security} +\cventry{2006}{ONS Deployment and Visibility Challenges}{Dan Engles and Joe Foley}{}{}{} +\cventry{2004}{Flingetty: Secure Multiparty Computation for a Dating Match-Up +System}{Natan Cliffer, Joe Foley, Hongyi Hu}{}{}{}{} +\cventry{2003}{KLite: A RFID Tag Anti-Counterfeit System}{Joe Foley}{}{}{} +\cventry{2003}{EPC Reductionism}{Joe Foley}{}{}{} +\cventry{1996}{WhoRU: Anyonymous Encrypted Remailer}{Daniel Derksen, Joe Foley, Matthew Rimer}{}{}{} + +\section{Languages} +\cvlanguage{English}{Native}{} +\cvlanguage{Spanish}{Novice}{High School education, 1990-1994} +\cvlanguage{Chinese}{Novice}{MIT 2005} +\cvlanguage{Icelandic}{Elementary}{Taking classes at University of Reykjavík} +%\pagebreak + +\section{Skills} +\cvcomputer{programming}{\textsc{Java}, C/C++}{scripting}{PHP, Shell, + python, perl} +\cvcomputer{scientific}{Matlab, Maple}{Modeling}{ProEngineer, +SolidWorks} +\cvcomputer{simulation}{ABAQUS, CFDesigner}{typography}{\LaTeX, PostScript}{}{} +\cvcomputer{control}{Arduino/Atmega, PIC}{Rapid prototyping}{FDM, + Laser templates, silicone molding} +\cvcomputer{OS}{Linux, UNIX, Windows, OSX}{administration}{Apache, + DNS, ONS} +\cvcomputer{web design}{PostNuke, Turbogears}{database}{MySQL, PostgreSQL} + +%\section{Interests} +%\cvitem{design}{\small I am a design fan, especially when it comes to typography and photography.} +%\cvitem{adventure sports}{\small I like practicing adventure sports like skiing, rock climbing and scuba diving, and have been a boy scout for five years.} +%\cvitem{travelling}{\small I have been living abroad during my childhood, and love travelling around the world.} + +%\section{Section with a list} +%\cvlistitem{lol} +%\cvlistitem{lol} +%\cvlistdoubleitem{lol}{relol} +%\cvlistdoubleitem{lol}{relol} + +%\section{Section with your own content}\closesection +%Your content here,\\ +%inside the normal \LaTeX{} environment. + +%\emptysection{} +%\cvitem{Now}{Back to moderncv layout, without making a new section :-)} + +%\hyphenpenalty=50 +%\tolerance=100 +\end{document} diff --git a/graphics/fp7-logo.png b/graphics/fp7-logo.png new file mode 100644 index 0000000..22fea68 Binary files /dev/null and b/graphics/fp7-logo.png differ diff --git a/graphics/mariecurie-logo.png b/graphics/mariecurie-logo.png new file mode 100644 index 0000000..a027669 Binary files /dev/null and b/graphics/mariecurie-logo.png differ diff --git a/graphics/rannis-logo.png b/graphics/rannis-logo.png new file mode 100644 index 0000000..4655b04 Binary files /dev/null and b/graphics/rannis-logo.png differ diff --git a/graphics/rannsoknasjodur-logo.png b/graphics/rannsoknasjodur-logo.png new file mode 100644 index 0000000..a4f7511 Binary files /dev/null and b/graphics/rannsoknasjodur-logo.png differ diff --git a/graphics/start-logo.png b/graphics/start-logo.png new file mode 100644 index 0000000..8c894af Binary files /dev/null and b/graphics/start-logo.png differ diff --git a/jdoe_casual.tex b/jdoe_casual.tex new file mode 100644 index 0000000..7352623 --- /dev/null +++ b/jdoe_casual.tex @@ -0,0 +1,97 @@ +\documentclass[11pt]{moderncv} + +% moderncv styles +\moderncvstyle{casual} +%\moderncvstyle[nocolor]{casual} +%\moderncvstyle{classic} +%\moderncvstyle[roman]{classic} + +% character encoding +\usepackage[utf8]{inputenc} + +% personal data +\firstname{John} +\familyname{Doe} +\title{Design enthusiast\dots} +%\address{12 somestreet\\3456 somecity} % for classic style +\address{12 somestreet, 3456 somecity} % for casual style +\phone{+12 (3)456 78 90} +\email{jdoe@design.org} +%\extrainfo{{\small maried with childrens}} +\quote{Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction.} + +%\renewcommand{\listsymbol}{{\fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}}} +\definecolor{see}{rgb}{0.5,0.5,0.5} + +% command for text subscripts +\newcommand{\up}[1]{\ensuremath{^\textrm{\scriptsize#1}}} + +% the ConTeXt symbol +\def\ConTeXt{% + C% + \kern-.0333emo% + \kern-.0333emn% + \kern-.0667em\TeX% + \kern-.0333emt} + +% slanted small caps (only with roman family; the sans serif font doesn't exists :-() +%\usepackage{slantsc} +%\DeclareFontFamily{T1}{myfont}{} +%\DeclareFontShape{T1}{myfont}{m}{scsl}{ <-> cork-lmssqbo8}{} +%\usefont{T1}{myfont}{m}{scsl}Testing the font + + +%---------------------------------------------------------------------------------- +% content +%---------------------------------------------------------------------------------- +\begin{document} +\maketitle +\makequote + +\section{Education} +\cventry{2003--2006}{Master of Design}{Valparezzo School of Design}{}{}{1\up{st} year: 79\%\hspace{2em}2\up{nd} year: 84\%\hspace{2em}3\up{rd} year: ---\hspace{2em}(graduation expected in June 2006)} +\cventry{2001--2003}{Bachelor of Design}{Beijing Drawing University}{}{}{1\up{st} year: 63\%\hspace{2em}2\up{nd} year: 76\%} + +\section{Master thesis} +\cvitem{title}{\emph{On the design of modern curriculum vit\ae{}s}} +\cvitem{supervisors}{Pr P. Picasso and Pr G. Klimt} +\cvitem{description}{\small Study of the complex design of a curriculum vit\ae{}, also known as ``résumé''. In my opinion, a good design needs to be show the personality of its author. Some people will thus prefer a more classic style, and others will be more audacious\dots} + +\section{Experience} +\cventry{February 2006--\\current}{Maintainer of the a CTAN package}{CTAN}{World}{}{Maintainer of the {\ttfamily moderncv} package, meant to ease the production of beautiful curriculum vit\ae{}s.} +\cventry{2005--2006}{Mathematics tutor}{UCL}{Louvain-la-Neuve}{}{Supervision of practical sessions for a mathematical course given to second year engineering students (course \emph{FSAB1104: Numerical Methods}).\hfill{\itshape\color{see}\footnotesize{}See \httplink{www.legat-online.be/b2q1/num}.}} +\cventry{2004--2006}{Cultural project leader}{Tchouque-Tschouk Kot}{Louvain-la-Neuve}{}{Leader of a student home with a cultural project, requiring day to day management as well as the organization of public events.\hfill{\itshape\color{see}\footnotesize{}See \httplink{www.organe.be}.}} +\cventry{1999--2001}{IMO preselected}{SBPMef}{Wépion}{}{Advanced mathematical training, as Belgian preselected candidate for the International Mathematical Olympiads, selected by the Belgian mathematical society.\hfill{\itshape\color{see}\footnotesize{}See \weblink{imo.math.ca/belgium.html}.}} + +\section{Languages} +\cvlanguage{French}{Native}{} +\cvlanguage{Dutch}{Near-native}{Primary education degree obtained in a Dutch college\\(Sint-Jozefscollege te Sint-Pieters-Woluwe).} +\cvlanguage{English}{Very good}{Many journeys in English speaking countries, including the United States,\\the United Kingdom and Kenya.} +\cvlanguage{Mandarin}{Elementary}{Taking classes at the ``Institut des Langues Vivantes'' (UCL), for the second year now.} +\closesection +\pagebreak + +\section{Computer skills} +\cvcomputer{OS}{Linux, Unix, Windows}{administration}{Apache, Mailman} +\cvcomputer{programming}{\textsc{Java}, C/C++}{scripting}{PHP, Shell, Ruby} +\cvcomputer{scientific}{Matlab, Autocad, Abaqus}{typography}{\LaTeX, \ConTeXt, Scribus, QuarkXPress} +\cvcomputer{web design}{XHTML, CSS, AJAX}{database}{MySQL, PostgreSQL} + +\section{Interests} +\cvitem{design}{\small I am a design fan, especially when it comes to typography and photography.} +\cvitem{adventure sports}{\small I like practicing adventure sports like skiing, rock climbing and scuba diving, and have been a boy scout for five years.} +\cvitem{travelling}{\small I have been living abroad during my childhood, and love travelling around the world.} + +%\section{Section with a list} +%\cvlistitem{lol} +%\cvlistitem{lol} +%\cvlistdoubleitem{lol}{relol} +%\cvlistdoubleitem{lol}{relol} + +%\section{Section with your own content}\closesection +%Your content here,\\ +%inside the normal \LaTeX{} environment. + +%\emptysection{} +%\cvitem{Now}{Back to moderncv layout, without making a new section :-)} +\end{document} diff --git a/marketa_cv.tex b/marketa_cv.tex new file mode 100644 index 0000000..6187ce7 --- /dev/null +++ b/marketa_cv.tex @@ -0,0 +1,98 @@ +\documentclass{moderncv} + +% moderncv styles +%\moderncvstyle{casual} +%\moderncvstyle[nocolor]{casual} +%\moderncvstyle{classic} +%\moderncvstyle[roman]{classic} +\moderncvtheme[blue]{classic} + +% character encoding +\usepackage[icelandic]{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} + +% resize margins if needed, mostly for A4 +%\usepackage[a4paper, scale=0.8]{geometry} +%\usepackage[scale=0.8]{geometry} + +\hyphenpenalty=5000 +\tolerance=1000 +%\raggedright + +% personal data +\firstname{Mark\'eta} +\familyname{Foley} +\title{Biochemical Engineer and Consultant\hfil} +%\address{12 somestreet}{3456 somecity} % for classic style +%\address{11 Ticklefancy Lane}{Salem, NH 03079 USA} % for casual style +\address{\'Alakv\'isl 39}{110 Reykav\'ik, Iceland} % for casual style +\mobile{+354-661-2086} +\email{marketa@alum.mit.edu} +%\extrainfo{{\small married with childrens}} +%\quote{} + +%\renewcommand{\listsymbol}{{\fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}}} +%\definecolor{see}{rgb}{0.5,0.5,0.5} + +% command for text subscripts +%\newcommand{\up}[1]{\ensuremath{^\textrm{\scriptsize#1}}} + + +% slanted small caps (only with roman family; the sans serif font doesn't exists :-() +%\usepackage{slantsc} +%\DeclareFontFamily{T1}{myfont}{} +%\DeclareFontShape{T1}{myfont}{m}{scsl}{ <-> cork-lmssqbo8}{} +%\usefont{T1}{myfont}{m}{scsl}Testing the font + + +%---------------------------------------------------------------------------------- +% content +%---------------------------------------------------------------------------------- +\begin{document} +\maketitle +%\makequote + +\section{Education} +\cventry{1996-2000}{Bachelor of Science in Chemical Engineering}{Massachusetts Institute of Technology (Cambridge MA)}{}{}{} +\cventry{1996-2000}{Bachelor of Science in Biology}{Massachusetts Institute of Technology (Cambridge, MA)}{Minors: Biomedical engineering, Theatre Arts}{}{} + +\section{Continuing Education} +\cventry{2012}{``Circuits and Electronics (6.002x)''}{Massachusetts Institute of Technology}{semester-long distance-learning course}{}{} +\cventry{2007}{``Electronics Project Laboratory''}{Massachusetts Institute of Technology}{semester-long project class}{}{} +\cventry{2007}{``Basic Life Support for the Healthcare Provider''}{Massachusetts Institute of Technology}{1-day CPR class}{}{} +\cventry{2003}{``Regulatory Compliance Solutions Including 21CFR Section 11''}{IBM Life Sciences}{1-day course}{}{} +\cventry{2003}{``Decision Points in Drug Development''}{Pharmaceutical Education and Research Institute}{distance-learning course}{}{} + +\section{Teaching} +\cventry{2011-2012}{Reykjav\'ik University (Reykjav\'ik, Iceland)}{Developed and taught the laboratory portion of an introductory molecular biology course (T-106-LIFV) as part of an effort to incorporate more hands-on exercises into the curriculum}{}{}{} +\cventry{2004-2007}{Massachusetts Institute of Technology (Cambridge, MA)}{Designed and taught hands-on summer courses in fermentation and cell culture technology to industry professionals}{}{}{} +\cventry{2004-2006}{Massachusetts Institute of Technology (Cambridge, MA)}{Redesigned a non-biological facility to accommodate an undergraduate course in experimental biological techniques. Equipped the laboratory with necessary equipment, tested all experiments, wrote protocols and documentation, and successfully taught the course}{}{}{} +\cventry{2003-2007}{Massachusetts Institute of Technology (Cambridge, MA)}{Designed and taught new senior-level undergraduate laboratory courses in biochemical engineering focusing on molecular biology techniques, fermentation, and cell culture. Developed and tested experiments, wrote protocols and documentation, designed problem sets, managed other teaching staff, and successfully taught the course}{}{}{} + + +\section{Experience} +\cventry{2011-2013}{University of Iceland (Reykjav\'ik, Iceland)}{Project Manager}{Developed methods for assessing red blood cell and platelet quality during storage. Developed and implemented SOP procedures (ERC-funded project between the Center for Systems Biology at the University of Iceland and the Icelandic Bloodbank)}{}{} +\cventry{2011-2012}{Reykjav\'ik University (Reykjav\'ik, Iceland)}{Researcher}{Developed an electrophoretic deposition method for attaching chitosan to titanium implants (collaborative project between Reykjav\'ik University, Icelandic Bloodbank, Innovation Center Iceland - Nýsköpunarmiðstöð Íslands, and Genís ehf.)}{}{} +\cventry{2010-2011}{Foley Consulting (Reykjav\'ik, Iceland)}{Translator}{Translated a university-level textbook for the Institute of Chemical Technology in Prague (Czech Republic) from Czech to English. The subject matter was the science and engineering of beer manufacturing}{}{} +\cventry{2007-2010}{Percivia (Cambridge, MA)}{Associate Scientist (Upstream Processing)}{Developed and optimized media and bioreactor processes for the PER.C6 human cell line. Worked with customers to demonstrate PER.C6 technology and troubleshoot processes}{}{} +\cventry{2002-2003}{Scion Pharmaceuticals (Medford, MA)}{Associate Scientist (Electrophysiology)}{Led an ion channel drug screening project using Scion's high-throughput electrophysiology platform. Introduced an automated liquid handler into the workflow. Developed and implemented SOP procedures}{}{} +\cventry{2000-2002}{Alkermes (Cambridge, MA)}{Research Engineer (Aerosol Engineering)}{Lead engineer on the Alkermes - Eli Lilly hGH development project team. Optimized spray drying processes to produce large porous particles for delivery through the lungs. Assistant to the team Project Manager (assisted with a project development plan, compiled control matrices to track milestones in support of FDA requirements through product launch). Ran feasibility studies as proof of concept to assess potential drug candidates}{}{} +\cventry{1999-2000}{Massachusetts Institute of Technology (Cambridge, MA)}{Student Researcher (Biotechnology Process Engineering Center)}{Designed a continuous culture fermentation process for the production of tailspike protein by E. coli. Analyzed an expanded-bed chromatography step for tailspike purification}{}{} +\cventry{1994-1996}{Academy of Sciences of the Czech Republic (Prague, Czech Republic)}{}{Member of the Institute of Macromolecular Chemistry organizing committee for annual IUPAC symposia}{}{} + + +\section{Publications} +\cventry{2012}{``In vitro bioactivity of chitosan attached to titanium constructs using a novel electrophoretic deposition method''}{Foley M., Lieder R., Foley J. T., Örlygsson G., Sigurj\'onsson O. E.}{Journal of Tissue Engineering and Regenerative Medicine (Special Issue: 3rd TERMIS World Congress 2012, 5-8 September 2012, Vienna, Austria) 6:Supplement s1, 187}{}{} +\cventry{2012}{``Notkun á electrophoretic deposition aðferðum til húðunar á títanígræðum með kítósani''}{Foley M., Lieder R., Foley J. T., Örlygsson G., Sigurj\'onsson O. E.}{Læknablaðið: Vísandi á vordögum (25 Apríl til 4 Maí, 2012, LSH)}{}{} +\cventry{2011 (in press)}{``Beer Brewing - The Theory and Practice of Beer Manufacturing''}{Basa\v{r}ov\'a, G., \v{S}avel, J., Basa\v{r}, P., Lejsek, T. (English translation by M. Foley)}{Vydavatelstv\'i V\v{S}CHT Praha}{}{} +\cventry{2009}{``High level expression of functional human IgMs in human PER.C6® cells''}{Tchoudakova, A., Hensel, F., Murillo, A., Eng, B., Foley, M., Smith, L., Schoenen, F., Hildebrand, A., Kelter, A.-R., Ilag, L. L., Vollmers, H. P., Brandlein, S., McInich, J., Chon, J., Lee, G., Cacciuttolo, M.}{mAbs 1:2, 163-171}{}{} +\cventry{2009}{``Development of a Platform Fed Batch Process for Production of Antibodies in the PER.C6® Human Cell Line''}{Kral, K. M., Erskine, B., Foley, M., Powers, D. E., Hoff, R. F., Chon, J. H.}{Proceedings of the 21st Annual Meeting of the European Society for Animal Cell Technology (ESACT), Dublin, Ireland, June 7-10, 2009. ESACT Proceedings Vol. 5, Springer}{}{} + + +\section{Awards} +\cventry{2000}{The Joseph D. Everingham Award}{Awarded to a graduating MIT student in recognition of a single creative outstanding performance or notable creative accomplishments in theater arts}{}{}{} + + + +\end{document} \ No newline at end of file diff --git a/references-collections.bib b/references-collections.bib new file mode 100644 index 0000000..496a342 --- /dev/null +++ b/references-collections.bib @@ -0,0 +1,161 @@ +%% the collections must be at the end + + +@Proceedings{icad2013, + Title = {7th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD} 2013)}, + Editor = {Mary Kathryn Thompson}, + Year = {2013}, + Month = {Jun. 27--28}, + Organization = {CIRP}, + Publisher = {Axiomatic Design Solutions, Inc.}, + Volume = {32}, + + Address = {Worchester, MA}, + Booktitle = {7th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD} 2013)}, + Optmonth = {#jun#}, + Owner = {foley}, + Timestamp = {2016.02.23} +} + +@Proceedings{icad2014, + Title = {8th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD} 2014)}, + Editor = {Mary Kathryn Thompson}, + Year = {2014}, + Month = {Sep. 24--26}, + Organization = {CIRP}, + Publisher = {Axiomatic Design Solutions, Inc.}, + Volume = {33}, + + Address = {Lisboa, Portugal}, + Booktitle = {8th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD} 2014)}, + Optmonth = {#sep#}, + Owner = {foley}, + Timestamp = {2016.02.23} +} + +@Proceedings{icad2015, + Title = {9th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Editor = {Mary Kathryn Thompson and Alessandro Giorgetti and Paolo Citti and Dominik Matt and Nam P. Suh}, + Year = {2015}, + Doi = {10.1016/j.procir.2015.07.061}, + Organization = {Procedia CIRP}, + Publisher = {Elsevier ScienceDirect}, + Volume = {34}, + Note = {Sep. 16--18}, + + Address = {Florence, Italy}, + Booktitle = {9th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Owner = {foley}, + Timestamp = {2016-03-09} +} + +@Proceedings{icad2016, + Title = {10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Editor = {Ang Liu}, + Year = {2016}, + OPTDoi = {}, + Organization = {Procedia CIRP}, + Publisher = {Elsevier ScienceDirect}, + Volume = {53}, + Note = {Sep. 21--23}, + + Address = {Xi'an, Shaanxi, China}, + Booktitle = {10th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Owner = {foley}, + Timestamp = {2016-07-15} +} + +@Proceedings{icad2017, + Title = {11th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Editor = {Oana Dodoun}, + Year = {2017}, + OPTDoi = {}, + Publisher = {MATEC Web of Conferences}, + OPTVolume = {}, + Note = {Sep. 15--18}, + + Address = {Iasi, Romania}, + Booktitle = {11th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Owner = {foley}, + Timestamp = {2016-07-15} +} + +@Proceedings{icad2018, + Title = {12th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Editor = {Erik Puik and Joseph T. Foley and David Cochran and Mirzi Betasolo}, + Year = {2018}, + OPTDoi = {}, + Publisher = {MATEC Web of Conferences}, + OPTVolume = {}, + Note = {October. 9--11}, + + Address = {Reykjavík, Iceland}, + Booktitle = {12th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Owner = {foley}, + Timestamp = {20186-09-29} +} + +@Proceedings{icad2019, + Title = {13th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Editor = {Ang Liu and Erik Puik and Joseph T. Foley}, + Year = {2019}, + OPTDoi = {}, + Publisher = {MATEC Web of Conferences}, + OPTVolume = {}, + Note = {October. 18--20}, + + Address = {Sydney, Australia}, + Booktitle = {13th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + URL = {https://www.matec-conferences.org/articles/matecconf/abs/2019/50/contents/contents.html}, + Owner = {foley}, + Timestamp = {20186-09-29} +} + + +@Proceedings{icad2021, + Title = {14th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + Editor = {Joao Fradinho and A. M. Gonçalves-Coelho and Miguel Cavique}, + Year = 2021, + Publisher = {IOP Conference Series: Materials Science and Engineering}, + Volume = {1174}, + Note = {June 23--25}, + Address = {Lisbon, Portugal}, + Booktitle = {14th {I}nternational {C}onference on {A}xiomatic {D}esign ({ICAD})}, + URL = {https://iopscience.iop.org/issue/1757-899X/1174/1}, + Owner = {foley}, + Timestamp = {2021-06-29}, +} + + +@Proceedings{cirpdc2016, + Title = {26th CIRP Design Conference}, + OPTEditor = {}, + Year = {2016}, + OPTDoi = {}, + Organization = {Procedia CIRP}, + Publisher = {Elsevier ScienceDirect}, + OPTVolume = {}, + Note = {Jun. 15--17}, + + Address = {Stockholm, Sweden}, + Booktitle = {26th CIRP Design Conference}, + Owner = {foley}, + Timestamp = {2016-07-15} +} + +@Proceedings{cirpdc2017, + Title = {Complex Systems Engineering and Development Proceedings of the 27th CIRP Design Conference}, + OPTEditor = {}, + Year = {2017}, + OPTDoi = {}, + Organization = {Procedia CIRP}, + Publisher = {Elsevier ScienceDirect}, + OPTVolume = {}, + Note = {May 10--12}, + + Address = {Cranfield University, UK}, + Booktitle = {Complex Systems Engineering and Development Proceedings of the 27th CIRP Design Conference}, + Owner = {foley}, + Timestamp = {2017-05-30} +} + diff --git a/references-foley.bib b/references-foley.bib new file mode 100644 index 0000000..2a886fb --- /dev/null +++ b/references-foley.bib @@ -0,0 +1,644 @@ +% Encoding: UTF-8 + +@InProceedings{foley2022embracingfailure, + author = {Mark\'eta Foley and Joseph Timothy Foley and Marcel Kyas}, + title = {Embracing Failure as an Integral Aspect of Engineering Education}, + booktitle = {CDIO Annual International Conference}, + pages = 12, + owner = {foley}, + author = {Joseph Timothy Foley}, + year = 2022, + address = {Reykjavík, Iceland}, + note = {June 13--15, Advances in CDIO, Accepted for Publication}, +} + +@InProceedings{sudermann2021mobile, + author = {Fynn Sudermann and Kristján Már Kjartansson and Sigurður Ágúst Jakobsson and Joseph T. Foley}, + title = {Mobile High Voltage Power Line Thermometer}, + crossref = {icad2021}, + year = 2021, + url = {https://iopscience.iop.org/article/10.1088/1757-899X/1174/1/012026/meta}, + owner = {foley}, + timestamp = {2021.06.29} +} + +@InProceedings{foley2021ad-software-engineering, + author = {Joseph Timothy Foley and Marcel Kyas}, + title = {{AD} Software Engineering}, + crossref = {icad2021}, + year = 2021, + url = {https://iopscience.iop.org/article/10.1088/1757-899X/1174/1/012025/meta}, + owner = {foley}, + timestamp = {2021.06.29} +} + +@InProceedings{foley2021dindesign, + author = {Joseph Timothy Foley and Marcel Kyas}, + title = {Choosing the Right {D} for Design}, + booktitle = {CDIO Annual International Conference}, + pages = 12, + owner = {foley}, + author = {Joseph Timothy Foley}, + year = 2021, + address = {Bangkok, Thailand}, + note = {June 21--23, Advances in CDIO}, +} + +@Book{des2021, + editor = {Nam Pyo Suh and Miguel Cavique and Joseph Timothy Foley}, + title = {Design Engineering and Science}, + year = {2021}, + publisher = {Springer Nature}, + ISBN = {978-3030492311} +} + +@InBook{foley2021descomplexitykitchen, + author = {Joseph T. Foley and Erik Puik and Lindy Puik and Joseph Smith and David S. Cochran}, + title = {Complexity in the Kitchen}, + chapter = 15, + pages = 31, + crossref = {des2021}, + owner = {foley}, + timestamp = {2020.09.25}, +} + +@Book{icad2018book, + editor = {Eric C. N. Puik and Joseph Timothy Foley and David S. Cochrand and Mirzi L. Betasolo}, + title = {Reports on Axiomatic Design 2018: Proceedings of the 12th International Conference on Axiomatic Design}, + year = 2018, + ISBN = {978-94-91903-02-1}, + publisher = {HU University of Applied Sciences Utrecht, the Netherlands}, +} + +@InProceedings{foley2019complexitykitchen, + author = {Joseph T. Foley and Erik Puik and Lindy Puik and Joseph Smith and David S. Cochran}, + title = {Complexity in the Kitchen}, + pages = {12}, + crossref = {icad2019}, + owner = {foley}, + timestamp = {2019.11.20}, +} + + +@InProceedings{vossebeld2018customer, + author = {Danielle M. Vossebeld and Joseph T. Foley and Erik Puik}, + title = {The Complexity of Mapping Customer Needs ... (and the myth of a Unanimous Customer)}, + pages = {7}, + crossref = {icad2018}, + owner = {foley}, + timestamp = {2018.09.29}, +} + +@InProceedings{helgason2018tablet, + author = {Haraldur Helgason and \TH{}r\'{a}inn \TH{}\'{o}rarinsson and Sindri Ingvason and Joseph T. Foley}, + title = {Design of a tablet holder with the help of Axiomatic Design}, + pages = {7}, + crossref = {icad2018}, + owner = {foley}, + timestamp = {2018.09.29}, +} + + +@InProceedings{foley2017antenna, + author = {Joseph Timothy Foley and Vladimir Omelianov and Slawomir Koziel and Adrian Bekasiewcz}, + title = {Low-cost Antenna Positioning System Designed with {A}xiomatic {D}esign}, + pages = {7}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + +@InProceedings{foley2017faucet, + author = {Joseph Timothy Foley and Erik Puik and David S. Cochran}, + title = {The Faucet Reloaded: Improving {A}xiomatic {D}esign by Example}, + pages = {7}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + + +@InProceedings{foley2017motorcyclelift, + author = {Joseph Timothy Foley and Gu\dh{}mundur \TH{}\'orir Sigur\dh{}sson and J\'{o}hann Sm\'ari Gunnarsson and J\'on Gautason and \'Olafur J\'osef \'Olafsson}, + title = {Mobile Motorcycle Lift for the Common Man}, + pages = {7}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + + + +@InProceedings{foley2017adjustadesk, + author = {Joseph Timothy Foley and Arn\'or Freyr S\'imonarson and Hilmar Þ\'or S\'imonarson and L\'u\dh{}v\'ik Fri\dh{}rik \AE{}gisson and Andri Þ\'or Goethe}, + title = {{AD}justadesk --- An adjustable height desk}, + pages = {7}, + number = {01002}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + +@InProceedings{breznik2017collaborative, + author = {Ale\v{s} Breznik and Peter Plani\v{s}i\v{c} and Joseph T. Foley}, + utf8author = {Aleš Breznik and Peter Planinšič and Joseph T. Foley}, + title = {Collaborative development of an open-source rocket control system}, + year = {2017}, + booktitle = {IEEE 26th International Electrotechnical and Computer Science Conference ERK 2017}, + address = {Portoro\v{z}, Slovenia}, + OPTurl = {http://www.ieee.si/erk/}, + pages = {4}, +} + +@InProceedings{petursson2017smaspring, + author = {Einar P\'etursson and Ingi N\'\iels Karlsson and Olaf Gar\dh{}ar Gar\dh{}arsson and P\'all P\'alsson and Saulius Genutis, Vladimir Omelianov and Joseph Timothy Foley}, + title = {{A}xiomatic {D}esign of Equipment for Analysis of {SMA} Spring Degradation During Electronic Actuation}, + year = {2017}, + pages = {261--266}, + crossref = {cirpdc2017}, + timestamp = {2017.05.30}, +} + +@InProceedings{foley2017msddontology, + author = {Joseph Timothy Foley and David S. Cochran}, + title = {Manufacturing System Design Decomposition: An Ontology for Data Analytics and System Design Evaluation}, + year = {2017}, + pages = {175--180}, + crossref = {cirpdc2017}, + timestamp = {2017.05.30} +} + + +@InProceedings{erlingsson2016roboclaw, + author = {Bjartmar Freyr Erlingsson and Ingólfur Hreimsson and Páll Indriði Pálsson and Sigurður Jóhann Hjálmarsson and Joseph Timothy Foley}, + title = {{A}xiomatic {D}esign of a linear motion robotic claw with interchangeable grippers}, + pages = {213--218}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{foley2016desirable, + author = {Joseph Timothy Foley and Erik Puik and David S. Cochran}, + title = {Desirable Complexity}, + pages = {101--106}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{guls2016auvlight, + author = {Jevgenij Guls and Ólafur Ingi Bjarnason and Óskar Pétursson and Sævar Örn Einarsson and Joseph Timothy Foley}, + title = {Application of {A}xiomatic {D}esign in designing Autonomous Underwater photography lighting}, + pages = {278--283}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{gerhard2016suretrack, + author = {Kristján Gerhard and Joseph Timothy Foley}, + title = {Redesign of the {S}ureTrack grader transfer bin using {A}xiomatic {D}esign}, + pages = {267--272}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{omarsdottir2016chessmate, + author = {Freyja Yeatman Ómarsdóttir and Róbert Bjarnar Ólafsson and Joseph Timothy Foley}, + title = {The axiomatic design of Chessmate: a chess-playing robot}, + pages = {213--236}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{puik2016ignorance, + author = {Erik Puik and Joseph Timothy Foley and Darek Ceglarek}, + title = {Ignorance is bliss: sudden appearance of previously unrecognized information and its effect}, + pages = {70--77}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + + +@InProceedings{foley2016evaluating, + author = {Joseph Timothy Foley}, + title = {{E}valuating {E}ngineering {N}otebooks}, + year = {2016}, + booktitle = {CDIO Annual International Conference}, + address = {Turku, Finland}, + note = {June 12--16, Project in Progress}, +} + +@InProceedings{foley2016creative, + Title = {Creative {A}xiomatic {D}esign}, + Author = {Joseph Timothy Foley and Sigrún Harðardóttir}, + pages = {688--694}, + crossref = {cirpdc2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{cochran2016hospital, + title = {{A} {S}ystem {D}esign of a {R}ural {H}ospital {O}perating {R}oom}, + author = {David S. Cochran and Jia Li and Kyle Vanover and Joseph T. Foley}, + pages = {597--603}, + crossref = {cirpdc2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@Article{cochran2016msdd, + title = {{U}se of the {M}anufacturing {S}ystem {D}esign {D}ecomposition for {C}omparative {A}nalysis and {E}ffective {D}esign of {P}roduction {S}ystems}, + author = {David S. Cochran and Joseph T. Foley and Zhuming Bi}, + year = {2016}, + journal = {International Journal of Production Research}, + volume = {55}, + issue = {3}, + pages = {870--890}, + owner = {foley}, + timestamp = {2016.07.12}, +} + + +@INPROCEEDINGS{solvason2015spectrometer, + author = {Gunnar Óli Sölvason and Joseph Timothy Foley}, + title = {Low-cost spectrometer for Icelandic chemistry education}, + booktitle = {Proceedings of College International Pour La Recherche en Productique + (CIRP), 9th International Conference on {A}xiomatic {D}esign (ICAD)}, + year = {2015}, + volume = {34}, + pages = {156--161}, + address = {Florence, Italy}, + month = sep, + doi = {10.1016/j.procir.2015.07.061}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.sciencedirect.com/science/article/pii/S2212827115008203} +} + +@INPROCEEDINGS{jonsson2015uget, + author = {Berg\th{}\'{o}r L\'{a}r J\'{o}nsson and Gar\dh{}ar \"{O}rn Gar\dh{}arsson and \'{O}skar P\'{e}tursson + and Sigur\dh{}ur Bjarki Hlynsson and Joseph Timothy Foley}, + title = {Ultrasonic gasoline evaporation transducer --- reduction of internal + combustion engine fuel consumption using axiomatic design}, + booktitle = {Proceedings of College International Pour La Recherche en Productique + (CIRP), 9th International Conference on {A}xiomatic {D}esign (ICAD)}, + year = {2015}, + volume = {34}, + pages = {168--172}, + address = {Florence, Italy}, + month = sep, + doi = {10.1016/j.procir.2015.07.061}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.sciencedirect.com/science/article/pii/S2212827115008203} +} + +@ARTICLE{gudmundsdottir2014wirelessscheduling, + author = {Helga Gudmundsdottir and Eyjólfur I Ásgeirsson and Marijke HL Bodlaender + and Joseph T Foley and Magnús M Halldórsson and Ymir Vigfusson}, + title = {Wireless Scheduling Algorithms in Complex Environments}, + journal = {arXiv preprint}, + year = {2014}, + number = {1401.1723}, + month = {1}, + abstract = {Abstract: Efficient spectrum use in wireless sensor networks through + spatial reuse requires effective models of packet reception at the + physical layer in the presence of interference. Despite recent progress + in analytic and simulations research into worst-case behavior from + interference effects, these efforts generally assume geometric path + loss and isotropic transmission, assumptions which have not been + borne out in experiments.}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://arxiv.org/pdf/1401.1723.pdf} +} + +@ARTICLE{gudmundsdottir2014measurement, + author = {Helga Gudmundsdottir and Eyjólfur I Ásgeirsson and Marijke HL Bodlaender + and Joseph T Foley and Magnús M Halldórsson and Geir M Järvelä and Henning + Ulfarsson and Ymir Vigfusson}, + title = {Measurement based interference models for wireless scheduling algorithms}, + journal = {MSWiM}, + year = {2014}, + volume = {1401.1723}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@INPROCEEDINGS{gudmundsdottir2014extendingviametricity, + author = {Helga Gudmundsdottir and Eyjólfur I Ásgeirsson and Marijke HL Bodlaender + and Joseph T Foley and Magnús M Halldórsson and Ymir Vigfusson}, + title = {Extending wireless algorithm design to arbitrary environments via + metricity}, + booktitle = {Proceedings of the 17th ACM international conference on Modeling, + analysis and simulation of wireless and mobile systems (MSWiM)}, + year = {2014}, + month = sep, + days = {21--26}, + pages = {275--284}, + publisher = {ACM}, + address = {Montreal, Canada}, + doi = {10.1145/2641798.2641811}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.ymsir.com/papers/wireless-mswim.pdf} +} + +@INPROCEEDINGS{thompson2014additive, + author = {Mary Kathryn Thompson and Joseph Timothy Foley}, + title = {Coupling and Complexity in Additive Manufacturing Processes}, + booktitle = {8th International Conference on {A}xiomatic {D}esign}, + year = {2014}, + pages = {177--182}, + address = {Lisbon, Portugal}, + month = sep, + abstract = {This work analyzes and compares traditional subtractive machining + processes (milling and turning) and additive manufacturing processes + (fused deposition modeling, selective sintering, stereolithography, + and 3D printing) in an {A}xiomatic {D}esign context. The processes are + examined from a local and isothermal perspective then as time-varying + systems to determine the degree of coupling and time-dependent complexity + they exhibit. It is shown that subtractive processes exhibit more + coupling within the design matrix than}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.axiomaticdesign.com/technology/icad/icad2014/26-Thompson-et-al-paper.pdf}, +} + + +@INPROCEEDINGS{foley2012vitro, + author = {Markéta Foley and Ramona Lieder and Joseph T. Foley and Gissur Örlygsson and Ólafur E. Sigurjónsson}, + title = {In vitro bioactivity of chitosan attached to titanium constructs + using a novel electrophoretic deposition method}, + booktitle = {Journal of Tissue Engineering and Regenerative Medicine}, + year = 2012, + volume = 6, + pages = {187-187}, + month = sep, + organization = {Wiley-Blackwell}, + address = {111 RIVER ST, HOBOKEN 07030-5774, NJ USA}, + journal = {Journal of Tissue Engineering and Regenerative Medicine: 3rd TERMIS Wordl Congress 2012 ``Tissue Engineering and Regenerative Medicine''}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@ARTICLE{foley2012epdposter, + author = {Markéta Foley and Ramona Lieder and Joseph T. Foley and Gissur Örlygsson and Ólafur E. Sigurjónsson}, + title = {Notkun á electrophoretic deposition aðferðum til + húðunar á títanígræðum með kítósani}, + booktitle = {Læknablaðið: Vísandi á vordögum 2012}, + year = 2012, + note = {25 April -- 4 May Poster session.}, + owner = {foley}, + timestamp = {2015.09.21} + +} + +@INPROCEEDINGS{foley2012epd, + author = {Markéta Foley and Ramona Lieder and Joseph T. Foley and Gissur Örlygsson and Ólafur E. Sigurjónsson}, + title = {Development of a Novel Electrophoretic Deposition {(EPD)} + Method for Coating Titanium Implants with Chitosan}, + boboktitle = {{NAMABIO} {COST} 2012 proceedings}, + year = 2012, + month = sep, + address = {Vienna, Austria}, + days = {4--5}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@PATENT{foley2012enhancedsecurity, + nationality = {US}, + number = {8384546}, + year = {2013}, + author = {Joseph T Foley and Sanjay Sarma and Stephen A Weis}, + title = {Enhanced security protocol for radio frequency systems}, + language = {English}, + assignee = {Joseph T Foley and Sanjay Sarma and Stephen A Weis}, + day = {26}, + month = {2}, + abstract = {This invention relates to security protocols for RFID systems. Systems + and methods are presented to protect the system from hackers attempting + to compromise the RFID system. Also, methods and systems for improving + RFID security are disclosed. The systems utilize mechanisms to determine + the authenticity of the RFID tags used in such systems. The systems + and methods also reduce unauthorized access to the RFID system. A + system and method to make tags more difficult to compromise or counterfeit + is also described.}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@ARTICLE{foley2011colliding, + title = {The sound of art and engineering colliding}, + author = {Joseph Timothy Foley}, + year = {2011}, + month = {12}, + day = {7}, + volume = {1}, + number = {36}, + journal = {Tölvumál}, + publisher = {Skýrslutæknifélag Íslands}, + url = {http://www.sky.is/index.php/toelvumal/item/1581-the-sound-of-art-and-engineering-colliding}, +} + +@MISC{foley2011method, + author = {Joseph T Foley and Matthew S Jolda}, + title = {Method of Manufacturing a Nickel Titanium Coil Actuator}, + howpublished = {Google patents}, + month = {apr}, + year = {2011}, + note = {US Patent App. 12/849,000}, + nationality = {US}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {https://www.google.com/patents/US20110083325}, + yearfiled = {2011} +} + +@INPROCEEDINGS{kim2009microartificialmuscle, + author = {Sangbae Kim and E. Hawkes and Kyujin Cho and Matthew Jolda and Joseph + Timothy Foley and Robert J. Wood}, + title = {Micro artificial muscle fiber using NiTi spring for soft robotics}, + booktitle = {Intelligent Robots and Systems (IROS) 2009. IEEE/RSJ International + Conference}, + year = {2009}, + pages = {2228--2234}, + address = {St. Louis, MO}, + month = oct, + organization = {IEEE}, + publisher = {IEEE}, + doi = {10.1109/IROS.2009.5354178}, + keywords = {annealing;microactuators;microrobots;nickel compounds;shape memory + effects;springs (mechanical);NiTi spring;annealing temperatures;bioinspired + antagonistic actuation;coil actuators;discrete displacement control;enhanced-performance + inverted-spring manufacturing method;flexible actuator;force-displacement + characteristics;high energy density;manufacturing process;martensite + deformation;mesh-worm prototype;mesoscale applications;micro artificial + muscle fiber;microcoil spring;micromuscle fiber;nickel titanium;robust + actuators;scalability;shape memory alloy coiled springs;shape memory + effect;soft robotic platforms;Actuators;Geometry;Muscles;Nickel;Resilience;Robots;Robustness;Scalability;Shape + memory alloys;Springs}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@PATENT{sarma2008ons, + nationality = {US}, + number = {7765253}, + year = {2010}, + yearfiled = {2008}, + author = {Sanja Sarma and Dan W. Engels and Erik L. Nygren and Joseph Timothy + Foley and Daniel L. Brock and K. Y. Sai}, + title = {Object Name System}, + assignee = {Massachusetts Institute Of Technology}, + day = {27}, + dayfiled = {31}, + month = {July}, + monthfiled = {October}, + url = {https://www.google.com/patents/US7765253}, + owner = {foley}, + timestamp = {2015.09.21} +} + + +@INPROCEEDINGS{foley2008turbsim, + author = {Joseph Timothy Foley and Timothy G. Gutowski}, + title = {TurbSim: Reliability-based wind turbine simulator}, + booktitle = {IEEE International Symposium on Electronics and the Environment (ISEE), + 2008}, + year = {2008}, + pages = {1-5}, + month = may, + abstract = {Wind turbine farms are an effective generator of electricity in windy + parts of the world, with prices progressing to levels competitive + with other sources. Choosing the correct turbine for a given installation + requires significant engineering and the current trend leads towards + groups of large horizontal axis turbines. Unfortunately, large wind + turbines have to contend with large forces and other sources of failure. + With the new push to move generation farms offshore where they are + less accessible, the issue of reliability becomes more critical. + This work investigates the impact of reliability in a life-cycle + analysis simulation of a theoretical wind farm in Massachusetts based + upon reliability information from a number of academic sources. The + simulator, TurbSim, is designed with significant modularity to enable + reliability simulation of any turbine with available wind information. + Our simulation of a turbine indicated that reliability makes a small + but noticeable impact of 1.24\% in its output.}, + doi = {10.1109/ISEE.2008.4562872}, + keywords = {power generation reliability;remaining life assessment;wind power + plants;wind turbines;Massachusetts;TurbSim;generation farms;installation;large + horizontal axis turbines;life-cycle analysis simulation;reliability + simulation;reliability-based wind turbine simulator;Analytical models;Information + analysis;Investments;Large-scale systems;Power generation;Reliability + engineering;Reliability theory;Wind energy generation;Wind farms;Wind + turbines} +} + +@PHDTHESIS{foley2007phd, + author = {Joseph Timothy Foley}, + title = {Security Approaches for Radio Frequency Identification Systems}, + school = {Massachusetts Institute of Technology}, + year = {2007}, + department = {Department of Mechanical Engineering}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@TechReport{sarma2002onsbeta, + author = {Sanjay Sarma and David Brock and Joseph Timothy Foley and L. Putta and S. Ramachandran and G. Nassar}, + title = {{T}he {O}bject {N}ame {S}ervice: {V}ersion 0.5 (beta),}, + institution = {MIT Auto-ID Center}, + year = {2002}, + type = {Technical Report}, + number = {MIT-AUTOID-TM-004}, + address = {Cambridge, Massachusetts, USA}, + month = {February}, + owner = {foley}, + timestamp = {2016-03-09} +} + + + +@MASTERSTHESIS{foley1999msc, + author = {Joseph Timothy Foley}, + title = {An Infrastructure for Electromechanical Appliances on the Internet}, + school = {Massachusetts Institute of Technology}, + year = {1999}, + month = {June}, + department = {Department of Computer Science and Electrical Engineering}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@MISC{foley1998aup, + author = {Joseph Timothy Foley}, + title = {Low-cost Pine-car Derby Timing System}, + howpublished = {Department of Computer Science and Electrical Engineering}, + month = {June}, + year = {1998}, + owner = {foley}, + school = {Massachusetts Institute of Technology}, + timestamp = {2015.09.21} +} + +@TECHREPORT{epc2005onsspec1, + author = {EPCglobal}, + title = {Object Naming Service (ONS) Version 1.0 Specification.}, + institution = {EPCglobal, USA}, + year = {2005}, + number = {1.0}, + month = {October}, + note = {Named contributor.}, + day = {4}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@CONFERENCE{engels2001networkedworld, + author = {Dan Engels and Joseph Timothy Foley and Jim Waldrop and Sanjay Sarma + and David Brock}, + title = {The Networked Physical World: An Automated Identification Architecture}, + booktitle = {IEEE Workshop on Internet Applications (WIAPP) 2001}, + year = {2001}, + pages = {76--77}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@MISC{dahmus2007usindustrialenergyuse, + author = {Jeffrey Dahmus and Alissa Jones and Lynette Cheah and Matthew Branham + and Joseph Foley and Young Song}, + title = {{U.S.} Industrial Energy Use: Making Less with More?}, + howpublished = {MIT Energy Conference Poster Session}, + month = {March}, + year = 2007, + day = 9, + owner = {foley}, + timestamp = {2015.09.21} +} + +@INPROCEEDINGS{bragason2015parachuterelease, + author = {Gu\dh{}mundur Bragason and Steinar Þorsteinsson and R\'{i}tur Ingi Karlsson + and Nico Grosse and Joseph Timothy Foley}, + title = {Heat-activated Parachute Release System}, + booktitle = {Proceedings of College International Pour La Recherche en Productique + (CIRP), 9th International Conference on {A}xiomatic {D}esign (ICAD)}, + crossref = {icad2015}, + OPTyear = {2015}, + OPTvolume = {34}, + pages = {131--136}, + OPTaddress = {Florence, Italy}, + OPTmonth = {September}, + doi = {10.1016/j.procir.2015.07.061}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.sciencedirect.com/science/article/pii/S2212827115008203}, +} + +%% Collections must be included after diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..fa41e4a --- /dev/null +++ b/references.bib @@ -0,0 +1,564 @@ +% Encoding: UTF-8 + +@InProceedings{vossebeld2018customer, + author = {Danielle M. Vossebeld and Joseph T. Foley and Erik Puik}, + title = {The Complexity of Mapping Customer Needs ... (and the myth of a Unanimous Customer)}, + pages = {7}, + crossref = {icad2018}, + owner = {foley}, + timestamp = {2018.09.29}, +} + +@InProceedings{helgason2018tablet, + author = {Haraldur Helgason and \TH{}r\'{a}inn \TH{}\'{o}rarinsson and Sindri Ingvason and Joseph T. Foley}, + title = {Design of a tablet holder with the help of Axiomatic Design}, + pages = {7}, + crossref = {icad2018}, + owner = {foley}, + timestamp = {2018.09.29}, +} + + +@InProceedings{foley2017antenna, + author = {Joseph Timothy Foley and Vladimir Omelianov and Slawomir Koziel and Adrian Bekasiewcz}, + title = {Low-cost Antenna Positioning System Designed with {A}xiomatic {D}esign}, + pages = {7}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + +@InProceedings{foley2017faucet, + author = {Joseph Timothy Foley and Erik Puik and David S. Cochran}, + title = {The Faucet Reloaded: Improving {A}xiomatic {D}esign by Example}, + pages = {7}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + + +@InProceedings{foley2017motorcyclelift, + author = {Joseph Timothy Foley and Gu\dh{}mundur \TH{}\'orir Sigur\dh{}sson and J\'{o}hann Sm\'ari Gunnarsson and J\'on Gautason and \'Olafur J\'osef \'Olafsson}, + title = {Mobile Motorcycle Lift for the Common Man}, + pages = {7}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + + + +@InProceedings{foley2017adjustadesk, + author = {Joseph Timothy Foley and Arn\'or Freyr S\'imonarson and Hilmar Þ\'or S\'imonarson and L\'u\dh{}v\'ik Fri\dh{}rik \AE{}gisson and Andri Þ\'or Goethe}, + title = {{AD}justadesk --- An adjustable height desk}, + pages = {7}, + number = {01002}, + crossref = {icad2017}, + owner = {foley}, + timestamp = {2017.09.15}, +} + +@InProceedings{breznik2017collaborative, + author = {Ale\v{s} Breznik and Peter Plani\v{s}i\v{c} and Joseph T. Foley}, + utf8author = {Aleš Breznik and Peter Planinšič and Joseph T. Foley}, + title = {Collaborative development of an open-source rocket control system}, + year = {2017}, + booktitle = {IEEE 26th International Electrotechnical and Computer Science Conference ERK 2017}, + address = {Portoro\v{z}, Slovenia}, + OPTurl = {http://www.ieee.si/erk/}, + pages = {4}, +} + +@InProceedings{petursson2017smaspring, + author = {Einar P\'etursson and Ingi N\'\iels Karlsson and Olaf Gar\dh{}ar Gar\dh{}arsson and P\'all P\'alsson and Saulius Genutis, Vladimir Omelianov and Joseph Timothy Foley}, + title = {{A}xiomatic {D}esign of Equipment for Analysis of {SMA} Spring Degradation During Electronic Actuation}, + year = {2017}, + pages = {261--266}, + crossref = {cirpdc2017}, + timestamp = {2017.05.30}, +} + +@InProceedings{foley2017msddontology, + author = {Joseph Timothy Foley and David S. Cochran}, + title = {Manufacturing System Design Decomposition: An Ontology for Data Analytics and System Design Evaluation}, + year = {2017}, + pages = {175--180}, + crossref = {cirpdc2017}, + timestamp = {2017.05.30} +} + + +@InProceedings{erlingsson2016roboclaw, + author = {Bjartmar Freyr Erlingsson and Ingólfur Hreimsson and Páll Indriði Pálsson and Sigurður Jóhann Hjálmarsson and Joseph Timothy Foley}, + title = {{A}xiomatic {D}esign of a linear motion robotic claw with interchangeable grippers}, + pages = {213--218}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{foley2016desirable, + author = {Joseph Timothy Foley and Erik Puik and David S. Cochran}, + title = {Desirable Complexity}, + pages = {101--106}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{guls2016auvlight, + author = {Jevgenij Guls and Ólafur Ingi Bjarnason and Óskar Pétursson and Sævar Örn Einarsson and Joseph Timothy Foley}, + title = {Application of {A}xiomatic {D}esign in designing Autonomous Underwater photography lighting}, + pages = {278--283}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{gerhard2016suretrack, + author = {Kristján Gerhard and Joseph Timothy Foley}, + title = {Redesign of the {S}ureTrack grader transfer bin using {A}xiomatic {D}esign}, + pages = {267--272}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{omarsdottir2016chessmate, + author = {Freyja Yeatman Ómarsdóttir and Róbert Bjarnar Ólafsson and Joseph Timothy Foley}, + title = {The axiomatic design of Chessmate: a chess-playing robot}, + pages = {213--236}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{puik2016ignorance, + author = {Erik Puik and Joseph Timothy Foley and Darek Ceglarek}, + title = {Ignorance is bliss: sudden appearance of previously unrecognized information and its effect}, + pages = {70--77}, + crossref = {icad2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + + +@InProceedings{foley2016evaluating, + author = {Joseph Timothy Foley}, + title = {{E}valuating {E}ngineering {N}otebooks}, + year = {2016}, + booktitle = {CDIO Annual International Conference}, + address = {Turku, Finland}, + note = {June 12--16, Project in Progress}, +} + +@InProceedings{foley2016creative, + Title = {Creative {A}xiomatic {D}esign}, + Author = {Joseph Timothy Foley and Sigrún Harðardóttir}, + pages = {688--694}, + crossref = {cirpdc2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@InProceedings{cochran2016hospital, + title = {{A} {S}ystem {D}esign of a {R}ural {H}ospital {O}perating {R}oom}, + author = {David S. Cochran and Jia Li and Kyle Vanover and Joseph T. Foley}, + pages = {597--603}, + crossref = {cirpdc2016}, + owner = {foley}, + timestamp = {2016.07.15}, +} + +@Article{cochran2016msdd, + title = {{U}se of the {M}anufacturing {S}ystem {D}esign {D}ecomposition for {C}omparative {A}nalysis and {E}ffective {D}esign of {P}roduction {S}ystems}, + author = {David S. Cochran and Joseph T. Foley and Zhuming Bi}, + year = {2016}, + journal = {International Journal of Production Research}, + volume = {55}, + issue = {3}, + pages = {870--890}, + owner = {foley}, + timestamp = {2016.07.12}, +} + + +@INPROCEEDINGS{solvason2015spectrometer, + author = {Gunnar Óli Sölvason and Joseph Timothy Foley}, + title = {Low-cost spectrometer for Icelandic chemistry education}, + booktitle = {Proceedings of College International Pour La Recherche en Productique + (CIRP), 9th International Conference on {A}xiomatic {D}esign (ICAD)}, + year = {2015}, + volume = {34}, + pages = {156--161}, + address = {Florence, Italy}, + month = sep, + doi = {10.1016/j.procir.2015.07.061}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.sciencedirect.com/science/article/pii/S2212827115008203} +} + +@INPROCEEDINGS{jonsson2015uget, + author = {Berg\th{}\'{o}r L\'{a}r J\'{o}nsson and Gar\dh{}ar \"{O}rn Gar\dh{}arsson and \'{O}skar P\'{e}tursson + and Sigur\dh{}ur Bjarki Hlynsson and Joseph Timothy Foley}, + title = {Ultrasonic gasoline evaporation transducer --- reduction of internal + combustion engine fuel consumption using axiomatic design}, + booktitle = {Proceedings of College International Pour La Recherche en Productique + (CIRP), 9th International Conference on {A}xiomatic {D}esign (ICAD)}, + year = {2015}, + volume = {34}, + pages = {168--172}, + address = {Florence, Italy}, + month = sep, + doi = {10.1016/j.procir.2015.07.061}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.sciencedirect.com/science/article/pii/S2212827115008203} +} + +@ARTICLE{gudmundsdottir2014wirelessscheduling, + author = {Helga Gudmundsdottir and Eyjólfur I Ásgeirsson and Marijke HL Bodlaender + and Joseph T Foley and Magnús M Halldórsson and Ymir Vigfusson}, + title = {Wireless Scheduling Algorithms in Complex Environments}, + journal = {arXiv preprint}, + year = {2014}, + number = {1401.1723}, + month = {1}, + abstract = {Abstract: Efficient spectrum use in wireless sensor networks through + spatial reuse requires effective models of packet reception at the + physical layer in the presence of interference. Despite recent progress + in analytic and simulations research into worst-case behavior from + interference effects, these efforts generally assume geometric path + loss and isotropic transmission, assumptions which have not been + borne out in experiments.}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://arxiv.org/pdf/1401.1723.pdf} +} + +@ARTICLE{gudmundsdottir2014measurement, + author = {Helga Gudmundsdottir and Eyjólfur I Ásgeirsson and Marijke HL Bodlaender + and Joseph T Foley and Magnús M Halldórsson and Geir M Järvelä and Henning + Ulfarsson and Ymir Vigfusson}, + title = {Measurement based interference models for wireless scheduling algorithms}, + journal = {MSWiM}, + year = {2014}, + volume = {1401.1723}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@INPROCEEDINGS{gudmundsdottir2014extendingviametricity, + author = {Helga Gudmundsdottir and Eyjólfur I Ásgeirsson and Marijke HL Bodlaender + and Joseph T Foley and Magnús M Halldórsson and Ymir Vigfusson}, + title = {Extending wireless algorithm design to arbitrary environments via + metricity}, + booktitle = {Proceedings of the 17th ACM international conference on Modeling, + analysis and simulation of wireless and mobile systems (MSWiM)}, + year = {2014}, + month = sep, + days = {21--26}, + pages = {275--284}, + publisher = {ACM}, + address = {Montreal, Canada}, + doi = {10.1145/2641798.2641811}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.ymsir.com/papers/wireless-mswim.pdf} +} + +@INPROCEEDINGS{thompson2014additive, + author = {Mary Kathryn Thompson and Joseph Timothy Foley}, + title = {Coupling and Complexity in Additive Manufacturing Processes}, + booktitle = {8th International Conference on {A}xiomatic {D}esign}, + year = {2014}, + pages = {177--182}, + address = {Lisbon, Portugal}, + month = sep, + abstract = {This work analyzes and compares traditional subtractive machining + processes (milling and turning) and additive manufacturing processes + (fused deposition modeling, selective sintering, stereolithography, + and 3D printing) in an {A}xiomatic {D}esign context. The processes are + examined from a local and isothermal perspective then as time-varying + systems to determine the degree of coupling and time-dependent complexity + they exhibit. It is shown that subtractive processes exhibit more + coupling within the design matrix than}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.axiomaticdesign.com/technology/icad/icad2014/26-Thompson-et-al-paper.pdf}, +} + + +@INPROCEEDINGS{foley2012vitro, + author = {Markéta Foley and Ramona Lieder and Joseph T. Foley and Gissur Örlygsson and Ólafur E. Sigurjónsson}, + title = {In vitro bioactivity of chitosan attached to titanium constructs + using a novel electrophoretic deposition method}, + booktitle = {Journal of Tissue Engineering and Regenerative Medicine}, + year = 2012, + volume = 6, + pages = {187-187}, + month = sep, + organization = {Wiley-Blackwell}, + address = {111 RIVER ST, HOBOKEN 07030-5774, NJ USA}, + journal = {Journal of Tissue Engineering and Regenerative Medicine: 3rd TERMIS Wordl Congress 2012 ``Tissue Engineering and Regenerative Medicine''}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@ARTICLE{foley2012epdposter, + author = {Markéta Foley and Ramona Lieder and Joseph T. Foley and Gissur Örlygsson and Ólafur E. Sigurjónsson}, + title = {Notkun á electrophoretic deposition aðferðum til + húðunar á títanígræðum með kítósani}, + booktitle = {Læknablaðið: Vísandi á vordögum 2012}, + year = 2012, + note = {25 April -- 4 May Poster session.}, + owner = {foley}, + timestamp = {2015.09.21} + +} + +@INPROCEEDINGS{foley2012epd, + author = {Markéta Foley and Ramona Lieder and Joseph T. Foley and Gissur Örlygsson and Ólafur E. Sigurjónsson}, + title = {Development of a Novel Electrophoretic Deposition {(EPD)} + Method for Coating Titanium Implants with Chitosan}, + boboktitle = {{NAMABIO} {COST} 2012 proceedings}, + year = 2012, + month = sep, + address = {Vienna, Austria}, + days = {4--5}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@PATENT{foley2012enhancedsecurity, + nationality = {US}, + number = {8384546}, + year = {2013}, + author = {Joseph T Foley and Sanjay Sarma and Stephen A Weis}, + title = {Enhanced security protocol for radio frequency systems}, + language = {English}, + assignee = {Joseph T Foley and Sanjay Sarma and Stephen A Weis}, + day = {26}, + month = {2}, + abstract = {This invention relates to security protocols for RFID systems. Systems + and methods are presented to protect the system from hackers attempting + to compromise the RFID system. Also, methods and systems for improving + RFID security are disclosed. The systems utilize mechanisms to determine + the authenticity of the RFID tags used in such systems. The systems + and methods also reduce unauthorized access to the RFID system. A + system and method to make tags more difficult to compromise or counterfeit + is also described.}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@ARTICLE{foley2011colliding, + title = {The sound of art and engineering colliding}, + author = {Joseph Timothy Foley}, + year = {2011}, + month = {12}, + day = {7}, + volume = {1}, + number = {36}, + journal = {Tölvumál}, + publisher = {Skýrslutæknifélag Íslands}, + url = {http://www.sky.is/index.php/toelvumal/item/1581-the-sound-of-art-and-engineering-colliding}, +} + +@MISC{foley2011method, + author = {Joseph T Foley and Matthew S Jolda}, + title = {Method of Manufacturing a Nickel Titanium Coil Actuator}, + howpublished = {Google patents}, + month = {apr}, + year = {2011}, + note = {US Patent App. 12/849,000}, + nationality = {US}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {https://www.google.com/patents/US20110083325}, + yearfiled = {2011} +} + +@INPROCEEDINGS{kim2009microartificialmuscle, + author = {Sangbae Kim and E. Hawkes and Kyujin Cho and Matthew Jolda and Joseph + Timothy Foley and Robert J. Wood}, + title = {Micro artificial muscle fiber using NiTi spring for soft robotics}, + booktitle = {Intelligent Robots and Systems (IROS) 2009. IEEE/RSJ International + Conference}, + year = {2009}, + pages = {2228--2234}, + address = {St. Louis, MO}, + month = oct, + organization = {IEEE}, + publisher = {IEEE}, + doi = {10.1109/IROS.2009.5354178}, + keywords = {annealing;microactuators;microrobots;nickel compounds;shape memory + effects;springs (mechanical);NiTi spring;annealing temperatures;bioinspired + antagonistic actuation;coil actuators;discrete displacement control;enhanced-performance + inverted-spring manufacturing method;flexible actuator;force-displacement + characteristics;high energy density;manufacturing process;martensite + deformation;mesh-worm prototype;mesoscale applications;micro artificial + muscle fiber;microcoil spring;micromuscle fiber;nickel titanium;robust + actuators;scalability;shape memory alloy coiled springs;shape memory + effect;soft robotic platforms;Actuators;Geometry;Muscles;Nickel;Resilience;Robots;Robustness;Scalability;Shape + memory alloys;Springs}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@PATENT{sarma2008ons, + nationality = {US}, + number = {7765253}, + year = {2010}, + yearfiled = {2008}, + author = {Sanja Sarma and Dan W. Engels and Erik L. Nygren and Joseph Timothy + Foley and Daniel L. Brock and K. Y. Sai}, + title = {Object Name System}, + assignee = {Massachusetts Institute Of Technology}, + day = {27}, + dayfiled = {31}, + month = {July}, + monthfiled = {October}, + url = {https://www.google.com/patents/US7765253}, + owner = {foley}, + timestamp = {2015.09.21} +} + + +@INPROCEEDINGS{foley2008turbsim, + author = {Joseph Timothy Foley and Timothy G. Gutowski}, + title = {TurbSim: Reliability-based wind turbine simulator}, + booktitle = {IEEE International Symposium on Electronics and the Environment (ISEE), + 2008}, + year = {2008}, + pages = {1-5}, + month = may, + abstract = {Wind turbine farms are an effective generator of electricity in windy + parts of the world, with prices progressing to levels competitive + with other sources. Choosing the correct turbine for a given installation + requires significant engineering and the current trend leads towards + groups of large horizontal axis turbines. Unfortunately, large wind + turbines have to contend with large forces and other sources of failure. + With the new push to move generation farms offshore where they are + less accessible, the issue of reliability becomes more critical. + This work investigates the impact of reliability in a life-cycle + analysis simulation of a theoretical wind farm in Massachusetts based + upon reliability information from a number of academic sources. The + simulator, TurbSim, is designed with significant modularity to enable + reliability simulation of any turbine with available wind information. + Our simulation of a turbine indicated that reliability makes a small + but noticeable impact of 1.24\% in its output.}, + doi = {10.1109/ISEE.2008.4562872}, + keywords = {power generation reliability;remaining life assessment;wind power + plants;wind turbines;Massachusetts;TurbSim;generation farms;installation;large + horizontal axis turbines;life-cycle analysis simulation;reliability + simulation;reliability-based wind turbine simulator;Analytical models;Information + analysis;Investments;Large-scale systems;Power generation;Reliability + engineering;Reliability theory;Wind energy generation;Wind farms;Wind + turbines} +} + +@PHDTHESIS{foley2007phd, + author = {Joseph Timothy Foley}, + title = {Security Approaches for Radio Frequency Identification Systems}, + school = {Massachusetts Institute of Technology}, + year = {2007}, + department = {Department of Mechanical Engineering}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@TechReport{sarma2002onsbeta, + author = {Sanjay Sarma and David Brock and Joseph Timothy Foley and L. Putta and S. Ramachandran and G. Nassar}, + title = {{T}he {O}bject {N}ame {S}ervice: {V}ersion 0.5 (beta),}, + institution = {MIT Auto-ID Center}, + year = {2002}, + type = {Technical Report}, + number = {MIT-AUTOID-TM-004}, + address = {Cambridge, Massachusetts, USA}, + month = {February}, + owner = {foley}, + timestamp = {2016-03-09} +} + + + +@MASTERSTHESIS{foley1999msc, + author = {Joseph Timothy Foley}, + title = {An Infrastructure for Electromechanical Appliances on the Internet}, + school = {Massachusetts Institute of Technology}, + year = {1999}, + month = {June}, + department = {Department of Computer Science and Electrical Engineering}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@MISC{foley1998aup, + author = {Joseph Timothy Foley}, + title = {Low-cost Pine-car Derby Timing System}, + howpublished = {Department of Computer Science and Electrical Engineering}, + month = {June}, + year = {1998}, + owner = {foley}, + school = {Massachusetts Institute of Technology}, + timestamp = {2015.09.21} +} + +@TECHREPORT{epc2005onsspec1, + author = {EPCglobal}, + title = {Object Naming Service (ONS) Version 1.0 Specification.}, + institution = {EPCglobal, USA}, + year = {2005}, + number = {1.0}, + month = {October}, + note = {Named contributor.}, + day = {4}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@CONFERENCE{engels2001networkedworld, + author = {Dan Engels and Joseph Timothy Foley and Jim Waldrop and Sanjay Sarma + and David Brock}, + title = {The Networked Physical World: An Automated Identification Architecture}, + booktitle = {IEEE Workshop on Internet Applications (WIAPP) 2001}, + year = {2001}, + pages = {76--77}, + owner = {foley}, + timestamp = {2015.09.21} +} + +@MISC{dahmus2007usindustrialenergyuse, + author = {Jeffrey Dahmus and Alissa Jones and Lynette Cheah and Matthew Branham + and Joseph Foley and Young Song}, + title = {{U.S.} Industrial Energy Use: Making Less with More?}, + howpublished = {MIT Energy Conference Poster Session}, + month = {March}, + year = 2007, + day = 9, + owner = {foley}, + timestamp = {2015.09.21} +} + +@INPROCEEDINGS{bragason2015parachuterelease, + author = {Gu\dh{}mundur Bragason and Steinar Þorsteinsson and R\'{i}tur Ingi Karlsson + and Nico Grosse and Joseph Timothy Foley}, + title = {Heat-activated Parachute Release System}, + booktitle = {Proceedings of College International Pour La Recherche en Productique + (CIRP), 9th International Conference on {A}xiomatic {D}esign (ICAD)}, + crossref = {icad2015}, + OPTyear = {2015}, + OPTvolume = {34}, + pages = {131--136}, + OPTaddress = {Florence, Italy}, + OPTmonth = {September}, + doi = {10.1016/j.procir.2015.07.061}, + owner = {foley}, + timestamp = {2015.09.21}, + url = {http://www.sciencedirect.com/science/article/pii/S2212827115008203}, +} + +%% Collections must be included after diff --git a/references.tex b/references.tex new file mode 100644 index 0000000..b8fb532 --- /dev/null +++ b/references.tex @@ -0,0 +1,23 @@ +\documentclass{article} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} % allows UTF encoding, needed for Icelandic characters +% biblatex/biber citations +%% We set when etal is used in maxnames=XX +\usepackage[backend=biber, bibencoding=utf8, style=ieee, maxnames=99]{biblatex} +%\usepackage[backend=biber, bibencoding=utf8, style=apa]{biblatex} +%\usepackage[american]{babel} +%\DeclareLanguageMapping{american}{american-apa} % after biblatex and babel +\usepackage[margin=20mm]{geometry} + +\addbibresource{references.bib} + +\begin{document} +\nocite{*} + +\printbibliography{} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/resume/dist-resume.sh b/resume/dist-resume.sh new file mode 100644 index 0000000..a39ee75 --- /dev/null +++ b/resume/dist-resume.sh @@ -0,0 +1,7 @@ +#!/bin/bash +DISTDIR=/mit/foley/www/ +FILES="resume-full resume-mech resume-software" +for file in ${FILES}; +do pdflatex ${file}.tex && cp ${file}.pdf ${DISTDIR}; +done + diff --git a/resume/foleyresume.cls b/resume/foleyresume.cls new file mode 100644 index 0000000..07bec71 --- /dev/null +++ b/resume/foleyresume.cls @@ -0,0 +1,312 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{foleyresume}[2007/06/19] + +%\def\mystretch{1.5} % Double spacing hack +% We base our version on the default resume format +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{res}} +\ProcessOptions +\LoadClass{res} +\usepackage[margin=0.75in,right=1.25in]{geometry} +\usepackage[T1]{fontenc} +\usepackage{ae,aecompl} +\begin{format} +\title{l}\employer{r}\\ +\dates{l}\location{r}\\ +\body\\ +\end{format} + +\newcommand{\resinfo}{ +\begin{tabular}{l} +{\Large \textbf {Dr. Joseph T. Foley}}\\ +11 Ticklefancy Lane\\ +Salem, NH 03079\\ +\end{tabular} +\begin{tabular}{l} +H\'omlasl\'o\dh\ 4\\ +101 Reykjav\'{\i}k\\ +Iceland\\ +\end{tabular}\hfill +\begin{tabular}{ll} +US: &(617)395-0383 \\ +Iceland: &+354-661-7658\\ +\texttt{Email:} &\texttt{foley@objid.net}\\ +\end{tabular} +} + +\newcommand{\respromech}{ +\section{Professional} Mechanical Design, Radio Frequency +Identification, Manufacturing Design and Process Control, Computer +Automation, Distributed System Design, Network Administration and +Security, Database Applications. +} +\newcommand{\resprosoft}{ +\section{Professional} Computer Automation, Distributed +System Design, Network Administration and Security, High-Availability/Backup +Systems, Database Applications. +} + +\newcommand{\resproall}{ +\section{Professional} Mechanical Design, Radio Frequency +Identification, Manufacturing Design and Process Control, Computer +Automation, Distributed System Design, Network Administration and +Security, Distributed System Design, High-Availability and Backup Systems, +Database Applications. +} + +\newcommand{\resintmech}{ +\section{Interests} Robotics, Automatic Identification and Information +Collection, Wireless Communications, Computer-CAM/Instrument +Interfaces, Digital Design, Home Automation. +} +\newcommand{\resintsoft}{ +\section{Interests} Automatic Identification and Information +Collection, Wireless Communications, Digital Design, Home Automation, +VLSI Design. +} +\newcommand{\resintall}{ +\section{Interests} Robotics, Automatic Identification and Information +Collection, Wireless Communications, Computer Instrument +Interfaces, Digital Design, Home Automation. +} + +\newcommand{\resedu}{ +\section{Education} +Bachelor in Computer Science and Electrical Engineering (MIT, June +1999)\\ +\hspace*{0.25in}{\em ``Low-cost Automated Pine-Car Derby System''}\\ +Master of Engineering in Computer Science and Electrical +Engineering (MIT, June 1999)\\ +\hspace*{0.25in}{\em ``An Infrastructure for Electromechanical Appliances on the Internet''} US Patent 7,765,253\\ +MIT Doctorate of Philosophy in +Mechanical Engineering (MIT, February 2007)\\ +\hspace*{0.25in}{\em ``Security Approaches for Radio Frequency Identification Systems''} +} + +\newcommand{\resexpcurrent}{ +\title{Consultant} +\employer{\bf Foley Consulting} +\dates{\it September 2010 -- Current} +\location{Salem, NH USA \& Reykjavik, Iceland} +\begin{position} +Finite Element Analysis of advanced structural composites used to +develop a high speed quadraped robot in Professor Sangbae Kim's Bioinspired Robotics Laboritory. +\end{position}} + +\newcommand{\resexplast}{\resirobot} +\newcommand{\resirobot}{ +\title{Senior Research Scientist, Government \& Industrial Research Division} +\employer{\bf iRobot Corporation} +\dates{\it November 2007 -- August 2010} +\location{Bedford, MA} + +\begin{position} +Creating and implementing mechanical designs for robot platforms. +Tech lead for DARPA DSO ChemBots project. Software developer on DARPA NOSTRA project. +\end{position} +} + +\newcommand{\resexppostdoc}{ +\title{Post-Doctoral Associate} +\employer{\bf Massachusetts Institute of Technology} +\dates{\it October 2006 -- October 2007} +\location{Cambridge, MA} + +\begin{position} +Analyst for energy efficiency in industrial applications. Building +models for energy calculations and product design to reduce energy +utilization and generation of pollutants. +\end{position} +} + +\newcommand{\resexpphd}{ +\title{Graduate Research Assistant} +\employer{\bf Massachusetts Institute of Technology} +\dates{\it September 1999 -- October 2006} +\location{Cambridge, MA} + +\begin{position} +Researcher for Professor Sanjay Sarma in the MIT AutoID Labs.\\ +Designed and implemented demonstrations of AutoID technology in Cambridge, UK Exposition.\\ +Focused on research into Internet-enabled RFID Privacy and Security. +\end{position} +} + + +% Boss: Simson Garfinkel +\newcommand{\resexpharv}{ +\title{Teaching Faculty} +\employer{\bf Harvard Extension School} \location{Cambridge, MA} +\dates{\it September 2005 -- January 2006} +\begin{position} +Teaching Assistant for CSCI-E-170: Computer Security and Privacy. +\end{position} +} + +% Boss: Yu-Feng Wei +\newcommand{\resexpuff}{ +\title{Consultant} +\employer{\bf Uffinity} \location{Cambridge, MA} +\dates{\it January 2004 -- May 2004} +\begin{position} +Designed prototype of website for Uffinity: a University/career based +social-networking website. +\end{position} +} + +% Boss: Cochran +\newcommand{\resexpinsight}{ +\title{Consultant} +\employer{\bf Insight + Technologies} \location{Londonderry, NH} +\dates{\it February 2000 -- June 2001} +\begin{position} +Consulted on manufacturing M3/M5 Tactical Illuminator as part +of graduate manufacturing coursework (2.810). Focus was on increasing +part quality and throughput using Japanese manufacturing techniques. +\end{position} +} + +% Boss: Ron Peacetree +\newcommand{\resexpemode}{ +\title{Software Developer and Network Administrator} +\employer{\bf Emode, Inc.} \location{Cambridge, MA} +\dates{\it June 1999 -- Sept 1999} +\begin{position} +Developed world's largest fully-indexed Quote Database.\\ +Developed and installed network security policies and equipment. +\end{position} +} + +% Boss: Jack E. Greene +\newcommand{\resexpbfg}{ +\title{Lead Mechanical Designer} +\employer{\bf Brute Force Games}\location{Cambridge, MA} +\dates{\it July 1998 -- September 1998} +\begin{position} +Designed full immersion game simulator mechanical platform leveraging +MIT Aero-Astro vection research. +\end{position} +} + +% Boss: Tom Coppetto (NetOps) +% Boss: Bob Mahoney (Net Security) +\newcommand{\resexpnetops}{ +\title{Network Programmer} +\employer{\bf MIT Information Systems} \location{Cambridge, MA} +\dates{\it June 1996 -- September 2000} +\begin{position} +Development of network event paging system (Network Operations). +Implemented intrusion and packet-sniffer detection (Network +Security). Created DNS configuration parser/checker. +\end{position} +} + +% Boss: Alica Allen +% Boss: Thomas Oliver +\newcommand{\resexprcc}{ +\title{Residential Computing Consultant} +\employer{\bf MIT Information Systems} \location{Cambridge, MA} +\dates{\it September 1995 -- September 2000} +\begin{position} +Assisted students with network connectivity and access to computing +resources in dormitories. +\end{position} +} + +% Boss: ??? +\newcommand{\resexpesg}{ +\title{Computer Cluster Sysadmin} +\employer{\bf MIT Experimental Study Group} \location{Cambridge, MA} +\dates{\it September 1995 -- June 1995} +\begin{position} +Maintained and upgraded Athena cluster hardware: Solaris, Irix, AIX, and Linux. +Maintained computer teaching services, backups, and printers. +\end{position} +} + +\newcommand{\resexpcompstruct}{ +\title{Lab Assistant} +\employer{\bf MIT Department of Electrical Engineering and Computer Science} \location{Cambridge, MA} +\dates{\it January 1996 -- May 1997} +\begin{position} +6.004 (Computation Structures) in the MIT EECS Department. Instructed + students how to build a DEC Beta architecture from LS logic and + assisted with debugging. +\end{position} +} +\newcommand{\resexpinvent}{ +\title{Researcher} +\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +\dates{\it September 1995 - August 1996} +\begin{position} +The Invention Group under Professor Alex Slocum (Mech E) focused on +simple innovative ideas for existing problems. Focused on developing +a low-cost after-market shock absorber for bicycles. Also developed an +electronic Mancala game. +\end{position} +} + +\newcommand{\resexpbrooks}{ +\title{Network and Computer Administrator} +\employer{\bf Brooks Automation} \location{Lowell, MA} +\dates{\it March 1994 - August 1995} +\begin{position} +Network Installation: Analysis, Design, Upgrading/Installing.\\ +Computer Equipment Service: Software and Hardware Repair/Administration/Migration. +\end{position} +} + +\newcommand{\resexpsolar}{ +\title{Hardware Interface Programmer} +\employer{\bf University of Massachusetts, Lowell} \location{Lowell, +MA} \dates{\it October 1993 - February 1994} +\begin{position} +Programming HP-GPIB interface to network the Solar Cell Research Lab's +instruments (microammeter, multimeter, etc.) together. This was used +to collect, organize and analyze solar cell performance data. +\end{position} +} + +\newcommand{\resbackground}{ +\section{Background} High school: Saludatorian 1994, Salem High +School, NH.; Rensselaer Medalist, Bausch and Lomb Scholar, Tandy +Technology Scholar, Dollars for Scholars and Admiral C. Byrd +Scholarship winner. +%Director of Publicity for MIT's Lecture Series Committee. +} + +\newcommand{\reshobby}{ +\section{Hobbies} +Martial Arts, Firearms (MA State Safety Instructor, NRA Certified Coach), +Archery (NAA Level 2 Instructor), SCUBA (Rescue Diver), Live Action Roleplaying, +Eastern Square Dancing(C1), MA EMT-B, Photography, Music(Cello, Piano, +Fiddle), Public Service (APO), HAM +Radio (Tech Plus), Locksmithing \& Security +} + +\newcommand{\resexpshort}{ +\section{Skills} +{\em Project Management:} 8D, Total Project Control, Toyoda +Manufacturing Methods\\ +{\em Computer languages:} C(++), Perl, Python, PHP, Java, XML, lexx, SQL, PICASM\\ +{\em UN\_X/Media development tools:} HTML/CGI, \LaTeX, PostScript, sh, CVS/Subversion, Kerberos\\ +{\em Mech E Tools:} Matlab, Maple, ProEngineer, Windchill, SolidWorks, +Rapid Prototyping, CNC Machining\\ +{\em Digital System Design:} Logic Analyzer, Serial Protocol Analyzer, Controller Simulators +} + +\newcommand{\resexpall}{ +\section{Skills} +{\em Project Management:} 8D, Total Project Control, Toyoda +Manufacturing Methods\\ +{\em Computer languages:} C(++), Perl, Python, PHP, Java, XML, lexx, SQL, PICASM\\ +{\em UN\_X/Media development tools:} HTML/CGI, \LaTeX, PostScript, sh, CVS/Subversion, Kerberos\\ +{\em Technician:} IPC Class 2 Soldering, Locksmithing, Telephone/Network Cable Wiring\\ +{\em Mech E Tools:} Matlab, Maple, ProEngineer, Windchill, SolidWorks, +CFDesigner, Rapid Prototyping, CNC Machining\\ +{\em Digital System Design:} Logic Analyzer, Serial Protocol Analyzer, Controller Simulators +} + + +%\newcommand{\resexp}{ + diff --git a/resume/oldresume.tex b/resume/oldresume.tex new file mode 100644 index 0000000..4e49ed7 --- /dev/null +++ b/resume/oldresume.tex @@ -0,0 +1,75 @@ +\documentstyle[simplemargins,10pt,resume]{article} +\settopmargin{1in} +\begin{document} +\name{JOSEPH T. FOLEY} +\addresses +{{\it School/Mailing Address} \\ +(valid through 5/2/95) \\ +201C Nichols \\ +Senior House \\ +3 Ames St. \\ +Cambridge, MA 02139 \\ +(617)225-6150 \\ +foley@mit.edu, foley@nowhere.mit.edu} +{{\it Home Address} \\ +3 Salem St. \\ +Salem, NH 03079 \\ +(603) 893-1033\\} + +\begin{llist} +\sectiontitle{Professional} +Network Administration: Novell, Lantastic, TCP-IP. +\sectiontitle{Interests} +Computer Multimedia Simulations, Network Protocols, Linux, Computer-CAM/Instrument Interfaces. + +\sectiontitle{Education} +\employer{\bf Massachusetts Institute of Technology} \location{\it Cambridge, MA} +Currently a Sophomore, majoring in 6.2 +Following the Masters of Engineering course. + +\sectiontitle{Experience} +\employer{\bf Brooks Automation} \location{\it Lowell, MA} +\dates{\it March 1994 - August 1995} +Assorted network installation and upgrading, as well as design and +implementation of a whole new network for when the company relocates. +Also installed a remote Troubleshooting database and FaxonDemand service. +General computer servicing/troubleshooting/installation/ +upgrades. +The most recent consultation involved a complete Novell/TCP-IP network overhaul, almost finished at present. + +\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +\dates{\it October 1994 - present} +Operating/fixing an OMAX abrasivejet system to make assorted parts/artwork. +Designing new and innovative tools for working in a variety of environments. +Also a subset of the Invention Group at MIT. +A work-study/UROP under Alex Slocum + +\employer{\bf University of Massachusetts, Lowell} \location{Lowell, MA} +\dates{\it October 1993 - February 1994} +Programming using the HP-GPIB interface to network some of the Solar Cell +Research Lab's instruments (microammeter, multimeter, etc.). The program +was used to collect/organize data more efficiently as well as port it +to an easy to analyze form. + + +\employer{\bf Bull, Inc.} \location{Lawrence, MA} +\dates{\it January 1991 - March 1992} +Created a front end for a Barcoding Inventory System currently in use at Bull, Inc. + +\sectiontitle{Background} +High school: Saludatorian, 1994, Salem High School, Salem, NH.; also chosen +as Rensselaer Medalist, Bausch and Lomb Scholar, Tandy Technology +Scholar, and Admiral C. Byrd Scholarship winner. Currently active in +strategy/simulation gaming and Alpha Phi Omega, the coed service fraternity. + +\parskip = 0pt +\sectiontitle{Skills} +Computer languages: C, C++(currently learning), PASCAL, SCHEME/LISP, Assembly and Machine Code (esp. of a 6502), BASIC. + +UN\_X/Media development tools: PERL, Latex, HTML, LaTeX, shell scripts +ThingWorld +Certified for Class 2 Soldering +Simple Analog Circuit Design, Troubleshooting +Knowledge of use of oscilloscope, curve-tracer, serial-line analyzer, Fox and Hound, etc. +\end{llist} +\end{document} diff --git a/resume/res.cls b/resume/res.cls new file mode 100644 index 0000000..e033d4a --- /dev/null +++ b/resume/res.cls @@ -0,0 +1,803 @@ +% RESUME DOCUMENT STYLE -- Released 23 Nov 1989 +% for LaTeX version 2.09 +% Copyright (C) 1988,1989 by Michael DeCorte + +\typeout{Document Style `res' <26 Sep 89>.} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% res.sty +% +% \documentstyle{res} +% +% Copyright (c) 1988 by Michael DeCorte +% 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. +% +% Michael DeCorte +% P.O. Box 652 +% Potsdam NY 13676 +% mrd@sun.soe.clarkson.edu +% mrd@clutx.bitnet +% +% Changes for LaTeX2e -- Venkat Krishnamurthy (Aug 7, 2001) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% You can have multiple style options the legal options ones are: +% +% centered the name and address are centered at the top of the +% page (default) +% +% line the name is the left with a horizontal line then +% the address to the right +% +% overlapped the section titles overlap the body text (default) +% +% margin the section titles are to the left of the body text +% +% 11pt use 11 point fonts instead of 10 point fonts +% +% 12pt use 12 point fonts instead of 10 point fonts +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Commands +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \Resume prints the word resume but typeset nicely +% +% \newsectionwidth{dimen} +% defines the amount of space the labels extend +% into the left margin. +% DO NOT TRY to change any of the dimensions +% yourself. You will probably confuse the style file. +% +% \name{text} defines your name +% +% \address{text} +% defines your address +% this can be called twice if you have two addresses +% use \\'s to indicate where either line breaks or +% comas should go +% +% \opening this prints your name and address at that spot +% this is not normally needed, as \begin{resume} +% does this but is provided just in case you need +% to do something odd +% +% \begin{resume} ... \end{resume} +% all of the resume should go inside of this +% environment +% +% \section{text} +% This prints 'text' in the left hand margin. +% Its exact placement depends on what the style +% options has been set to. (overlapped or margin) +% You should use \\ to start a new line. If the +% style option is margin, the \\ is converted +% to a space. +% To use this in any of the list environments, put +% the \section after the \item[] but before the +% text. +% Eg. +% \begin{itemize} +% \item\section{text} +% text +% \end{itemize} +% +% \begin{ncolumn}{n} ... \end{ncolumn} +% creates a tabular environment with n equally +% spaced columns. Separate columns by & and +% end them with \\ +% +% \begin{position} ... \end{position} +% this is used to print a job description. There should +% be only one job description in it. Information +% related to the job (such as title, dates...) will +% be printed. +% +% \begin{format} ... \end{format} +% used to change the default format for the position +% environment. Within it the recognized commands are: +% \title{option} +% \employer{option} +% \location{option} +% \dates{option} +% \body +% \\ +% where option is one of l,r,c standing for left, right, center. +% The format will eventually be used to make several +% tabular environments and you are defining the number of columns +% and the placement of text within the columns of the tabulars. +% Each row is terminated by a \\. Any number of options can +% be on a line, they will each be set in their own columns. +% Any of the options except \body may be left out. +% +% Eg. +% \begin{format} +% \title{l}\employer{r}\\ +% \dates{r}\\ +% \body\\ +% \location{l}\\ +% \end{format} +% +% In this example the title and employer information +% are set in 2 columns left justified and right justified +% respectively. Then the date is set right justified. +% Then the body is set. Then the location is set left +% justified. +% +% \employer{text} +% \title{text} +% \dates{text} +% \location{text} +% declare text for the next invocation of the position +% environment +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Glue +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% sectionskip the amount of horizontal before a section +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Dimensions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% sectionwidth the amount that the section titles go in the +% left margin +% +% resumewidth the width of the total resume from the left +% margin to the right. Don't use textwidth +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Definitions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% sectionfont the font used to print section titles +% use \renewcommand to change it +% +% namefont the font used to print your name +% use \renewcommand to change it +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% THINGS TO DO +% +% add lm,rm options to format style to allow things to be placed +% in the left or right margin respectivly +% +% add capability so that \body doesn't have to be proceeded (followed) +% by a \\ allowing part of the description (eg. location) to be the +% first (last) thing of the body +% +% clean up the list building procedures +% +% write docs to tell people how to use this + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{res}[2000/05/19 v1.4b Resume class] + +%\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +%\DeclareOption{12pt}{\renewcommand\@ptsize{2}} + +\PassOptionsToClass{11pt,12pt}{article} +\LoadClassWithOptions{article} + +\newif\if@line +\newif\if@margin + +\DeclareOption{line}{\@linetrue} +\DeclareOption{centered}{\@linefalse} + +\DeclareOption{margin}{\@margintrue} +\DeclareOption{overlapped}{\@marginfalse} + +\ExecuteOptions{overlapped,centered} +\ProcessOptions\relax + +\nofiles % resume's don't need .aux files + + +\newtoks\tabular@text % holds the current list being processed +\newtoks\tabular@head % holds the head tabular list +\newtoks\tabular@tail % holds the tail tabular list +\newtoks\@ta % used by \@append +\newtoks\undefined@token\undefined@token={} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% prints a centered name with the address centered +% or the two address on opposite sides of the page +% +\def\@printcentername{\begingroup + % print the name centered + \leavevmode\hbox to \textwidth{\hfil\@tablebox{\namefont\@name}\hfil}\par + \@ifundefined{@addressone}{% + % do nothing + }{% + \@ifundefined{@addresstwo}{ + % only one address + \leavevmode\hbox to \textwidth{\hfil\@tablebox{\@addressone}\hfil}\par + }{ + % two addresses + \leavevmode\hbox to \textwidth{\@tablebox{\@addressone}\hfil + \@tablebox{\@addresstwo}}\par + }% + }% +\endgroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% this is used to print the name and address at the top of +% the page with a hline in between +% +\def\namefont{\large\bf} +\def\@linename{\begingroup + \def\\{, } + {\namefont\@name} + \vskip 2pt + \fullline + \vskip 2pt + % where do you live? + \@ifundefined{@addressone}{% + % do nothing + }{% + \leavevmode\hbox to \textwidth + {\hfill\vbox{\hbox{\@addressone} + \hbox{\@addresstwo} + }% + }\par + } +\endgroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% HEADINGS: +% There are two types of headings: +% 1) one with the name centered and the address centered or +% in the left and right side if there are two address +% 2) one where the name is in the upper left corner +% the a line accross the paper +% then the address all on one line in the right corner +% the second address will be directly below the first if defined +% +\let\print@name\relax +\def\ds@centered{\ifx\print@name\relax\let\print@name\@printcentername\fi} +\def\ds@line{\ifx\print@name\relax\let\print@name\@linename\fi} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Use this to set the sectionwidth. +% It adjust the width of the text as well as the hoffset +% You probably shouldn't touch any of the size paramaters +% unless you really understand all of this but it is not +% hard. Either way, it can only be executed once +% +\def\sectionfont{\bf} +\newdimen\sectionwidth +\newskip\sectionskip +\newdimen\resumewidth + +\resumewidth=6.5in +\sectionskip=3.5ex plus 1ex minus -.2ex % values stolen from LaTeX + +\def\newsectionwidth#1{% + \sectionwidth=#1 + \textwidth=\resumewidth + \advance\textwidth-\sectionwidth + \hsize=\textwidth + \hoffset=\sectionwidth +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This is for sectiontitles that are entirely in the left margin. +% multiline sectiontitles are permited and will be broken by +% \TeX{} to fit into a box \verb|\sectionwidth| wide. It is advised +% that \verb|\\| be used to break the lines by hand as \TeX{} will +% probably not do what you want. +% +% When using this with {\tt tabbing} and {\tt list} (or anything +% that is made out of {\tt list}) put the \section's inside of +% the \verb|\begin{}| and the \verb|\item|Eg. +% \begin{verbatim} +% \begin{trivlist} +% \item[] +% \section{foo} +% text +% \end{trivlist} +% \end{verbatim} +% +\def\boxed@sectiontitle#1{% + % this macro may be called in a tabular. Special code must be written + % to accomodate this. In LaTeX, a tabular is made out of hboxes. + % TeX never goes into horizontal mode because of this; it only + % gets into vertical mode and restricted horizontal mode. Certain + % indenting problems must be handled because of this. They + % are delt with at the end of this routine. + % It is also necessary to close the hbox that was created before + % the \section and create a new one when this macro has ended. + % This macro therefore simulates a \kill, so that any text before + % the \section not be printed. The proper use is therefore + % ... + % text\\ + % \section{foo} + % more text\\ + % ... + \ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) + \@stopfield % the is the first part of a \kill + \else + \@@par % This will end the previous paragraph if needed and + % go into vertical mode. If this was already in + % vertical mode then the \par does nothing. + + \fi + \begingroup + \everypar={}% + \def\par{\@@par}% + \let\\=\@normalcr + \addpenalty{\@secpenalty} % this would be a good place for a page break + % \@secpenalty is what LaTeX uses before its + % section's. It happens to be -300 + \addvspace{\sectionskip} % put in a bit of glue + % The following hbox will be contributed to the page list without going + % into horizontal mode. Therefore, any \parindent's, \parshape's, \leftskip + % will be ignored but \hoffset's are not. The result is that the box will + % only by \hoffset. This is what I want + \hbox to 0pt{% + \hss % this is an llap. In other words, this glue + % will shrink by the width of the stuff in the vbox + % (\sectionwidth) into the left margin and then + % insert the contents of the vbox. + \vtop to 0pt{% make a 0pt height paragraph, with the baseline at the + % lined up with the baseline of the first box in the list + \leftskip=0pt + \hsize=\sectionwidth + \textwidth=\sectionwidth + \raggedright % you don't want this filled out to the right margin + \sectionfont + #1\vss % Go into horizontal mode; do the paragraph; + % go into vertical mode; add some negative glue + % to give a box of 0pt height and depth + }% + }% + \addpenalty{-\@secpenalty} % this would be a bad place for a page break + \vskip-\baselineskip % when the next box is processed, baselineskip glue + % glue will be added (the box has no depth because of + % the \vss; therefore, we don't have to worry about + % \lineskiplimit). This -\baselineskip glue + % is to undo this. \nointerlineskip doesn't + % work because the baseline of this line would be lined + % up with the top of the top of the next box. We + % want the baselines lined up. + % + % It may have been possible to do this by forcing the + % baseline of this box to be the top of the box but + % then the interline skip between this box and the + % previous box would be off as the baselines of the + % this box (the one that being made above) and the + % previous line would be separated by \baselineskip + % (probably, it may be separted by the depth of the + % previous box + \lineskip) but as the baseline of + % this box has been moved to the top, the box's would + % separted by to much glue. The exact amount being + % the height of this box. + \endgroup + \ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) + % this is the second part of the \kill; it starts the next tabbing line + % Because this routine will never get into paragraph mode when used in + % tabbing the \parskip that is discussed below will never be inserted. + % Therefore it should not be negated as done below. + \@startline + \ignorespaces + \else + \vskip-\parskip % The next thing to be contributed will be a paragraph. + % Right before being contributed though a \vskip\parskip + % will be inserted. This is to negate it. + % + % I do consider this to be a bit of a cludge but + % I can not find a way to write \unskipfutureskip + % or a way to make TeX think that nothing has + % been contributed to the page list. + \fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This is for sectiontitles that are entirely above the section text +% +\def\unboxed@sectiontitle#1{% + \ifx\\\@tabcr % see boxed@sectiontitle for explation + \@stopfield + \else + \@@par + \fi + \begingroup + \everypar={}% + \def\par{\@@par}% + \def\\{ } + \addpenalty{\@secpenalty} + \addvspace{\sectionskip} + \hbox to 0pt{\hss\hbox to \sectionwidth{\sectionfont#1\hss}} + \addpenalty{-\@secpenalty} % this would be a bad place for a page break + \endgroup + \ifx\\\@tabcr % see boxed@sectiontitle for explation + \@startline + \else + \vskip-\parskip + \fi + \ignorespaces +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% There are two types of section headings: +% 1) the section heading is all on one line and directly +% below it, is the body of the text +% 2) the section heading is entirely in the left margin +% (possibly taking multiple lines) with the body of +% the text next to it +% +\let\@@section\relax +\def\ds@overlapped{\ifx\@@section\relax\newsectionwidth{0.5in}\let + \@@section\unboxed@sectiontitle\fi} +\def\ds@margin{\ifx\@@section\relax\newsectionwidth{1.3in}\let + \@@section\boxed@sectiontitle\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DEFAULTS: (some of them) +% +% centered name +% overlapped section titles +% +% format is: +% title employer +% location dates +% body +% with everything in the left of its column + +%\input article.sty + +\if@line\ds@line\else\ds@centered\fi +\if@margin\ds@margin\else\ds@overlapped\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% typeset resume all nice and pretty +% +\def\Resume{{R\'{e}sum\'{e}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% makes a line of width \textwidth starting at -\hoffset +% +\def\fullline{ % hrules only listen to \hoffset + \nointerlineskip % so I have this code + \moveleft\hoffset\vbox{\hrule width\textwidth} + \nointerlineskip +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% create a multiline box. +% +\def\@tablebox#1{\begin{tabular}[t]{@{}l@{\extracolsep{\fill}}}#1\end{tabular}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% use this to define your name +% +\def\name#1{\def\@name{#1}} + +\def\@name{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% use this to define your address, this may be called more than once. +% +\let\@addressone\relax +\let\@addresstwo\relax + +\def\address#1{ + \@ifundefined{@addressone}{\def\@addressone{#1}}{\def\@addresstwo{#1}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% if you want to print your name and address is a slightly +% different format than sugessted, then this can be used +% to place it exactly where you want +% +\def\opening{\def\@opening{} + \begingroup + \leftskip=-\hoffset % I use leftskip to move things to the left as + \advance\textwidth\hoffset % changing hoffset doesn't work. But this + \hsize=\textwidth % doesn't really work as hboxes are rules + % are unaffeted + \let\par=\@@par + \parindent=0pt + \parskip=0pt + \print@name + \endgroup +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% all of the resume goes in the resume environment +% +\newenvironment{resume}{\begingroup + \@ifundefined{@opening}{\opening}{} +}{\endgroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% gives you a tabular environment with n equally spaced columns +% \begin{ncolumn}{#} ... \end{ncolumn} +% +% The p option of LaTeX is broken in all but the newest verion +% of latex.tex, this is how to fix it +% +\def\@endpbox{\par\egroup\hfil} +\let\@@endpbox=\@endpbox + +\newdimen\@columnwidth % the width of each column equal to +\def\ncolumn#1{% + % \@columnwidth = \textwidth / #1 + \@columnwidth=\textwidth \divide\@columnwidth by #1 + \begin{tabular*}{\textwidth}[t]% + {*{#1}{@{}p{\@columnwidth}@{\extracolsep{\fill}}}} +} + +\def\endncolumn{\end{tabular*}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \employer{text} defines employer to be text +% \location{text} defines location to be text +% \dates{text} defines dates to be text +% \title{text} defines title to be text +% \body +% + +\def\employer#1{\def\@employer{\print@employer{#1}}} +\def\location#1{\def\@location{\print@location{#1}}} +\def\dates#1{\def\@dates{\print@dates{#1}}} +\def\title#1{\def\@title{\print@title{#1}}} + +\let\l@justify\raggedright +\let\r@justify\raggedleft +\let\c@justify\centering + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \@format{name}{justify} +% will define \print@#1 to print it's one argument +% justified according to #2 which can be +% l = left +% r = right +% c = center +% +% eg. +% \@format{employer}{c} +% is the same as \def\print@employer#1{{\centering #1\par}} +% +\def\@format#1#2{% + \expandafter\gdef\csname print@#1\endcsname##1{% + {\csname#2@justify\endcsname##1\par}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% this is used to define how the position environment should +% formated. +% +% \begin{format} positioning text \end{format} +% where positioning text may be +% \employer{pos} +% \location{pos} +% \dates{pos} +% \title{pos} +% \body (for the body of the position environment) +% where pos is +% l for left +% r for right +% c for center +% use \\ to break the line +% you don't have to use all of the options. +% on any one line, you should indicate what you want on that line +% and where it should go within its column. +% eg. +% the following prints the employer in the left with the location +% centered within that its column. It then prints the date on the +% right. Then it prints the body of the position environment. Then +% it prints the title centered within its column; as there is only +% one column here it is really just centered. +% +% \begin{format} +% \employer{l}\location{c}\\ +% \dates{r}\\ +% \body\\ +% \title{c}\\ +% \end{format} + +\newcounter{numberofcolumns} +\newenvironment{format}{% + \def\end@line@head{\append@tabular@head{tabular@text}\tabular@text={}% + \c@numberofcolumns 0} + \def\end@line@tail{\append@tabular@tail{tabular@text}\tabular@text={}% + \c@numberofcolumns 0} + \tabular@text={} + \tabular@head={} + \tabular@tail={} + \c@numberofcolumns 0 + \let\\=\end@line@head + \def\employer##1{\advance\c@numberofcolumns 1 + \@format{employer}{##1} + \append@tabular@text{employer}} + \def\location##1{\advance\c@numberofcolumns 1 + \@format{location}{##1} + \append@tabular@text{location}} + \def\dates##1{\advance\c@numberofcolumns 1 + \@format{dates}{##1} + \append@tabular@text{dates}} + \def\title##1{\advance\c@numberofcolumns 1 + \@format{title}{##1} + \append@tabular@text{title}} + \def\body{\iftoks\tabular@head\undefined@token\then + \else + \@append{\noexpand\\}\to\tabular@head + \skotfi + \let\\=\end@line@tail}}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%taken from page 378 of TeXbook but freely hacked +% +% appends the expansion of #1 to the token list #2 + +\def\@append#1\to#2{% + \@ta=\expandafter{#1}% + \xdef\@append@temp{\the#2\the\@ta} + \global#2=\expandafter{\@append@temp}% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% CHAA006%vaxb.rhbnc.ac.uk@NSS.Cs.Ucl.AC.UK +% texhax.88.078 +% is used to see if two token lists are equal +% there must be a better way +% + +\let \then = \empty +\def \iftoks #1#2\then #3\else #4\skotfi{ + \edef \1{\the #1} + \edef \2{\the #2} + \ifx \1\2\then #3\else #4\fi} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \append@tabular@text{command} +% +% appends command to the end of \tabular@text. +% NOTE: command MUST be a command but without the \ +% Eg. \append@tabular@text{relax} +% +% used to define \tabular@text for the tabular environment +% used by append@tabular@head and append@tabular@tail +% + +\def\append@tabular@text#1{% +\iftoks\tabular@text\undefined@token\then + \global\tabular@text=\expandafter{\csname @#1\endcsname} +\else + \@append{&}\to\tabular@text + \@append{\csname @#1\endcsname}\to\tabular@text +\skotfi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% append@tabular@head +% +% appends command to the end of \tabular@text@head +% NOTE: command MUST be a command but without the \ +% Eg. \append@tabular@head{relax} +% +% used to define \tabular@head for the tabular environment +% used by the position environment +% +\def\append@tabular@head#1{% + \ifnum\the\c@numberofcolumns=0\relax + \else + \iftoks\tabular@head\undefined@token\then + \relax + \else + \@append{\noexpand\\}\to\tabular@head + \@append{\noexpand\penalty-\@secpenalty}\to\tabular@head + \skotfi + \@append{\noexpand\begin{ncolumn}}\to\tabular@head + \@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@head + \@append{\the\csname#1\endcsname}\to\tabular@head + \@append{\noexpand\end{ncolumn}}\to\tabular@head + \fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% append@tabular@tail +% +% appends command to the end of \tabular@text@htail +% NOTE: command MUST be a command but without the \ +% Eg. \append@tabular@tail{relax} +% +% used to define \tabular@tail for the tabular environment +% used by the position environment +% +\def\append@tabular@tail#1{% + \ifnum\the\c@numberofcolumns=0\relax + \else + \iftoks\tabular@tail\undefined@token\then + \else + \@append{\noexpand\\}\to\tabular@tail + \@append{\noexpand\penalty-\@secpenalty}\to\tabular@tail + \skotfi + \@append{\noexpand\begin{ncolumn}}\to\tabular@tail + \@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@tail + \@append{\the\csname#1\endcsname}\to\tabular@tail + \@append{\noexpand\end{ncolumn}}\to\tabular@tail + \fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% put the actual job descriptions here +% \begin{postion} ... \end{position} +% in the ... describe the position. +% don't put the \dates \location etc in here. define them before hand +\newenvironment{position}% + {% + \begingroup + \par + \the\tabular@head +% \addpenalty{-\@secpenalty}% bad place for a page break + \penalty -\@secpenalty % bad place for a page break + \penalty 10000 + \ignorespaces + }{% + \the\tabular@tail +% \addpenalty{\@secpenalty}% good place for a page break + \penalty \@secpenalty % good place for a page break + \endgroup +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DEFAULTS: (the rest of them) +% +% centered name +% overlapped section titles +% +% format is: +% title employer +% location dates +% body +% with everything in the left of its column + +\@secpenalty = -500 +\topmargin 0pt +\headheight 0pt +\headsep 0pt +\textheight 9in +\parindent 0pt +\topmargin 0in +\oddsidemargin 0pt +\evensidemargin 0pt +\marginparwidth 0pt +\parindent 0pt +\parskip \baselineskip +\setcounter{secnumdepth}{0} +\def\@listI{\leftmargin\leftmargini +\topsep 0pt +\parskip 0pt +\partopsep 2pt plus 2pt +\parsep 2pt plus 2pt +\itemsep \parsep} + +\pagestyle{empty} % don't want page numbers + +\begin{format} +\title{l}\employer{r}\\ +\location{l}\dates{r}\\ +\body\\ +\end{format} + +\let\section\@@section + diff --git a/resume/resume-ccp.tex b/resume/resume-ccp.tex new file mode 100644 index 0000000..ca1ee38 --- /dev/null +++ b/resume/resume-ccp.tex @@ -0,0 +1,39 @@ +\documentclass{foleyresume} + +\begin{document} +\resinfo + +\begin{resume} +%\respromech +%\resprosoft +\resproall + +%\resintmech +%\resintsoft +\resintall + +\resedu + +\section{Experience} +\resexpcurrent +\resexplast +\resexppostdoc +\resexpphd +\resexpharv +\resexpuff +\resexpinsight +\resexpemode +\resexpbfg +\resexpnetops +\resexprcc +\resexpesg +\resexpcompstruct +\resexpinvent +\resexpbrooks +\reshobby + +\parskip = 0pt +%\resexpshort +\resexpall +\end{resume} +\end{document} diff --git a/resume/resume-full.tex b/resume/resume-full.tex new file mode 100644 index 0000000..9661592 --- /dev/null +++ b/resume/resume-full.tex @@ -0,0 +1,40 @@ +\documentclass{foleyresume} + +\begin{document} +\resinfo + +\begin{resume} +%\respromech +%\resprosoft +\resproall + +%\resintmech +%\resintsoft +\resintall + +\resedu + +\section{Experience} +\resexpcurrent +\resexplast +\resexppostdoc +\resexpphd +\resexpharv +\resexpuff +\resexpinsight +\resexpemode +\resexpbfg +\resexpnetops +\resexprcc +\resexpesg +\resexpcompstruct +\resexpinvent +\resexpbrooks +\resexpsolar +\reshobby + +\parskip = 0pt +%\resexpshort +\resexpall +\end{resume} +\end{document} diff --git a/resume/resume-garfinkle.tex b/resume/resume-garfinkle.tex new file mode 100644 index 0000000..cda973a --- /dev/null +++ b/resume/resume-garfinkle.tex @@ -0,0 +1,125 @@ +\documentclass{res} +\usepackage[margin=.75in]{geometry} + +\begin{format} +\title{l}\employer{r}\\ +\dates{r}\\ +\body\\ +\location{l}\\ +\end{format} + +\begin{document} +\name{Joseph T Foley} +\address{ +70 Amherst St, \#104.\\ +Cambridge, MA 02139\\ +\end{tabular}\hfill +\begin{tabular}{ll} +Home: &(617)225-6696 \\ +Cell: &(617)233-4590\\ +\texttt{Email:} &\texttt{foley@mit.edu}\\ +} + +\begin{resume} +\section{Professional} Mechanical Design, Computer Automation and +Control, Distributed System Design, Network Administration and +Security, Database Applications. + +%\section{Interests} Network Protocols, Linux, High Speed +%Networking, Network Security and Cryptography, Distributed File +%Systems, Backup/High Availability Systems, Computer-CAM/Instrument +%Interfaces, Robotics, Digital Design, Home Automation, VLSI Design, +%Very Large Databases. + +\section{Education: {\it Massachusetts Institute of +Technology, Cambridge, MA}} +Bachelors and Masters of Engineering in Computer Science and Electrical with minor in Mechanical Engineering as of June 1999.\\ +Currently a PhD candidate in Mechanical Engineering graduating in February 2006. + +\title{Research Assistant} +\employer{\bf Massachusetts Institute of Technology} +\dates{\it January 1998 - present} +\location{Cambridge, MA} + +\section{Experience} +\begin{position} +Research Assistantship for Professor Sanjay Sarma doing RFID development.\\ +Designed and Implemented demonstrations of AutoID Technology in Cambridge, UK Exposition.\\ +Currently doing research into Internet-enabled RFID Privacy and Security. +\end{position} + +\title{Student} +\employer{\bf MIT 6.857 Security and Privacy} \location{Cambridge, MA} +\dates{\it September 2004 - December 2004} +\begin{position} +Developed a secure +no-trusted-third-party dating matchup system using the Fairplay Secure +Function Evaluation system.\\ Debugged and augmented the Fairplay +library. +\end{position} + +\title{Web Architect and Security Consultant} +\employer{\bf Uffinity} \location{Cambridge, MA} +\dates{\it January 2004 - March 2004} +\begin{position} +Designed web application for connecting employers with potential +employees via social networking under contract.\\ Designed security +architecture. +\end{position} + +\title{Software Developer and Network Administrator} +\employer{\bf Emode, Inc.} \location{Cambridge, MA} +\dates{\it May 2000 - Sept 2000} +\begin{position} +Developed World's Largest Fully-Indexed Quote Database\\ +Developed and Installed Network Security Policies and Equipment +\end{position} + +\title{Various Computer Related Positions} +\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +\dates{\it September 1996 - September 2000} +\begin{position} +Residential Computing Consultant (Information Systems)\\ +MIT Network Operations Employee (Information Systems)\\ +MIT Network Security Employee (Information Systems)\\ +Redesigned Undergraduate Design Course(2.007) under Professor Alex Slocum (Mech E)\\ +6.004 (Computation Structures) Lab Assistant (MIT EECS Department) +\end{position} + +%\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +%\dates{\it January 1996 - May 1997} +%6.004 (Computation Structures) Lab Assistant (MIT EECS Department) + +%\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +%\dates{\it September 1995 - August 1996} +%The Invention Group under Alex Slocum (Mech E)0 +% +%\employer{\bf Brooks Automation} \location{Lowell, MA} +%\dates{\it March 1994 - August 1995} +%Network Installation: Analysis, Design, Upgrading/Installing\\ +%Computer Equipment Service: Software and Hardware Repair/Administration/Migration + +%\employer{\bf University of Massachusetts, Lowell} \location{Lowell, +%MA} \dates{\it October 1993 - February 1994} Programming using the +%HP-GPIB interface to network the Solar Cell Research Lab's +%instruments (microammeter, multimeter, etc.). This was used +%to collect, organize and analyze the data more efficiently. + +%\section{Background} High school: Saludatorian, 1994, Salem High +%School, Salem, NH.; also chosen as Rensselaer Medalist, Bausch and +%Lomb Scholar, Tandy Technology Scholar, and Admiral C. Byrd +%Scholarship winner. Director of Publicity for MIT's Lecture Series +%Committee. + +\parskip = 0pt +\section{Skills} +{\em Computer languages:} C(++), Perl, Java, XML, lexx, SCHEME, SQL, PICASM\\ +{\em UN\_X/Media development tools:} HTML/CGI, \LaTeX, PostScript, sh, CVS, Eclipse\\ +{\em Cryptography:} Secure Function Evaluation, Zero Knowledge Proofs, Kerberos. +%Certified for IPC Class 2 Soldering\\ +%{\em Mech E Tools:} Matlab, Maple, ProEngineer, Solidworks, Abacus, CNC Machining\\ +%{\em Digital System Design:} Logic Analyzer, Serial Protocol Analyzer, Controller Simulators +%Instruments: Oscilloscopes, Multimeters, Digital Analyzers, Serial-line Analyzers, Signal Generators +%and Inductive Receivers. +\end{resume} +\end{document} diff --git a/resume/resume-mech.tex b/resume/resume-mech.tex new file mode 100644 index 0000000..9678d66 --- /dev/null +++ b/resume/resume-mech.tex @@ -0,0 +1,39 @@ +\documentclass{foleyresume} + +\begin{document} +\resinfo + +\begin{resume} +\respromech +%\resprosoft +%\resproall + +\resintmech +%\resintsoft +%\resintall + +\resedu + +\section{Experience} +\resexpcurrent +\resexplast + +%\resexpharv +%\resexpuff +\resexpinsight +%\resexpemode +\resexpbfg +%\resexpnetops +%\resexpcompstruct +%\resexpinvent +\resexpbrooks +%\resexpsolar + +%\resbackground +%\reshobby + +\parskip = 0pt +\resexpshort +%\resexpall +\end{resume} +\end{document} diff --git a/resume/resume-software.tex b/resume/resume-software.tex new file mode 100644 index 0000000..f0cef20 --- /dev/null +++ b/resume/resume-software.tex @@ -0,0 +1,39 @@ +\documentclass{foleyresume} + +\begin{document} +\resinfo + +\begin{resume} +\respromech +%\resprosoft +%\resproall + +\resintmech +%\resintsoft +%\resintall + +\resedu + +\section{Experience} +\resexpcurrent +\resexplast + +\resexpharv +%\resexpuff +%\resexpinsight +\resexpemode +%\resexpbfg +\resexpnetops +%\resexpcompstruct +%\resexpinvent +%\resexpbrooks +%\resexpsolar + +%\resbackground +%\reshobby + +\parskip = 0pt +\resexpshort +%\resexpall +\end{resume} +\end{document} diff --git a/resume/resume-sports.tex b/resume/resume-sports.tex new file mode 100644 index 0000000..14f864a --- /dev/null +++ b/resume/resume-sports.tex @@ -0,0 +1,86 @@ +\documentstyle[simplemargins,10pt,resume]{article} +\settopmargin{.75in} +\begin{document} +\begin{tabular}{l} +{\Large \textbf {Joseph T Foley}}\\ +283 Washington St.\\ +Cambridge, MA 02139\\ +\end{tabular}\hfill +\begin{tabular}{ll} +Home: &(617)864-4739 \\ +Cell: &(617)233-4590\\ +\texttt{Email:} &\texttt{foley@mit.edu}\\ +\end{tabular} + +\begin{llist} +\sectiontitle{Accomplishments} +Varsity Member of the MIT Pistol Team (1998-2000)\\ +Placed 23rd in the NRA National Collegiate Pistol Finals (2000)\\ +Built prototype pistol light timer for MIT Pistol Range (2002)\\ +Placed 3rd in GBPL team (2002) + +\sectiontitle{Interests} NRA Bullseye Pistol, UIT Pistol Disciplines, +Air Pistol, Smallbore Rifle, High-Power Rifle, Trap Shooting, Recurve +Archery, Running, Coaching. + +\sectiontitle{Education} \employer{\bf Massachusetts Institute of +Technology} \location{Cambridge, MA} Graduated in June of 1999 with a +Bachelors and Masters of Engineering in Computer Science and Electrical +Engineering with a minor in Mechanical Engineering.\\ +Currently a PhD candidate in Mechanical Engineering estimated to complete in June 2005. + +\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +\dates{\it January 1998 - present} +Research Assistantship for Professor Sanjay Sarma (Mechanical Engineering)\\ +Branched into the Auto-ID Center(www.autoidcenter.org)\\ +Designed and Implemented Demonstrations of AutoID Technology in Cambridge, UK Exposition +Based Upon my Master's Research. + +\employer{\bf Insight Technologies} \location{Londonderry, NH} +\dates{\it February 2000 - June 2001} Consulted on Manufacturing M3/M5 +Tactical Firearm Illuminator as Part of Graduate Manufacturing Course +(2.810). + +\employer{\bf Emode, Inc.} \location{Cambridge, MA} +\dates{\it May 2000 - Sept 2000} +Software Developer and Network Administrator\\ +Developed World's Largest Fully-Indexed Quote Database\\ +Developed and Installed Network Security Policies and Equipment + +\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +\dates{\it September 1996 - September 2000} +Residential Computing Consultant (Information Systems)\\ +MIT Network Operations Employee (Information Systems)\\ +MIT Network Security Employee (Information Systems)\\ +2.007 (Introduction to Design) Teaching Assistant (MIT Mechanical Engineering) )\\ +6.004 (Computation Structures) Lab Assistant (MIT EECS) ) + + +%\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +%\dates{\it September 1995 - August 1996} +%The Invention Group under Alex Slocum (Mech E)0 +% +%\employer{\bf Brooks Automation} \location{Lowell, MA} +%\dates{\it March 1994 - August 1995} +%Network Installation: Analysis, Design, Upgrading/Installing\\ +%Computer Equipment Service: Software and Hardware Repair/Administration/Migration + +%\employer{\bf University of Massachusetts, Lowell} \location{Lowell, +%MA} \dates{\it October 1993 - February 1994} Programming using the +%HP-GPIB interface to network the Solar Cell Research Lab's +%instruments (microammeter, multimeter, etc.). This was used +%to collect, organize and analyze the data more efficiently. + +%\sectiontitle{Background} High school: Saludatorian, 1994, Salem High +%School, Salem, NH.; also chosen as Rensselaer Medalist, Bausch and +%Lomb Scholar, Tandy Technology Scholar, and Admiral C. Byrd +%Scholarship winner. Director of Publicity for MIT's Lecture Series +%Committee. + +\parskip = 0pt +\sectiontitle{Certifications:} +NAA Archery Instructor (Class 1)\\ +NRA Certified Pistol Instructor\\ +NRA Certified Pistol Coach (pending) +\end{llist} +\end{document} diff --git a/resume/resume-template.tex b/resume/resume-template.tex new file mode 100644 index 0000000..3758fa3 --- /dev/null +++ b/resume/resume-template.tex @@ -0,0 +1,39 @@ +\documentclass{foleyresume} + +\begin{document} +\resinfo + +\begin{resume} +\respromech +\resprosoft +\resproall + +\resintmech +\resintsoft +\resintall + +\resedu + +\section{Experience} +\resexplast + +\resexpharv +\resexpuff +\resexpinsight +\resexpemode +\resexpbfg +\resexpnetops +\resexprcc +\resexpcompstruct +\resexpinvent +\resexpbrooks +\resexpsolar + +\resbackground +\reshobby + +\parskip = 0pt +\resexpshort +\resexpall +\end{resume} +\end{document} diff --git a/resume/resume.cls b/resume/resume.cls new file mode 100644 index 0000000..a07d7b9 --- /dev/null +++ b/resume/resume.cls @@ -0,0 +1,145 @@ +% resume.cls +% +% Copyright 2005 Daniel Burrows +% +% You may use, modify, and redistribute this file in any way you please, so +% long as this copyright notice is maintained. + + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{resume} + +\LoadClassWithOptions{article} + +% No page numbers by default. +\pagestyle{empty} + +\RequirePackage{calc} +\RequirePackage{ifthen} +\RequirePackage{url} +\RequirePackage{tabularx} +\RequirePackage{pgf} +\RequirePackage{pgfshade} +\RequirePackage{xxcolor} + +\RequirePackage{times} +\RequirePackage[T1]{fontenc} + +\RequirePackage[tmargin=1in,bmargin=1in]{geometry} + +\definecolor{rulestartcolor}{rgb}{0,0,0} +\definecolor{ruleendcolor}{rgb}{0.4,0.4,0.4} + +\newlength{\headerbuffer} +\setlength{\headerbuffer}{2pt} +\newlength{\secskip} +\setlength{\secskip}{6pt} + +\newlength{\@headerscratch} + +% Usage: \@setupshading{width}{height}{start}{end} +\newcommand{\@setupshading}[4]{% + \pgfdeclarehorizontalshading{@ruleshading}{#2}{% + color(0pt)=(#3); color(#1)=(#4)% + } +} + +\newcommand{\pgfrule}[4]{% + \begin{pgfpicture}{0pt}{0pt}{#1}{#2}% + \pgfdeclarehorizontalshading{@ruleshading}{#2}{% + color(0pt)=(#3); color(#1)=(#4)% + } + \pgfputat{\pgfxy(0,0)}{\pgfbox[left,bottom]{\pgfuseshading{@ruleshading}}} + \end{pgfpicture}% +} + +\newcommand{\lrule}[2]{\pgfrule{#1}{#2}{rulestartcolor}{ruleendcolor}} +\newcommand{\rrule}[2]{\pgfrule{#1}{#2}{ruleendcolor}{rulestartcolor}} + +\newcommand{\@authorname}{} +\newcommand{\@email}{} +\newcommand{\@streetaddress}{} +\newcommand{\@citystatezip}{} +\newcommand{\@phone}{} +\newcommand{\@webpage}{} + +\renewcommand{\author}[1]{\renewcommand{\@authorname}{#1}} +\newcommand{\email}[1]{\urldef{\@email}{\url}{<#1>}} +\newcommand{\streetaddress}[1]{\renewcommand{\@streetaddress}{#1}} +\newcommand{\citystatezip}[1]{\renewcommand{\@citystatezip}{#1}} +\newcommand{\phone}[1]{\renewcommand{\@phone}{#1}} +\newcommand{\webpage}[1]{\urldef{\@webpage}{\url}{#1}} + +\renewcommand{\maketitle}{{% + \setlength{\@headerscratch}{\linewidth*2/3}% + \noindent \lrule{\@headerscratch}{1.5pt}% + \vspace{\headerbuffer}% + \ifthenelse{\equal{\@email}{}}{% + \par\nointerlineskip\noindent\makebox[\linewidth]{\textbf{\Large{\@authorname}}}% + } {% + \par\nointerlineskip\noindent\makebox[\linewidth]{\textbf{\Large{\@authorname\ \@email}}}% + }% + \vspace{\headerbuffer}% + \par\nointerlineskip\noindent% + \hspace{\linewidth}% + \hspace{-\@headerscratch}% + \rrule{\@headerscratch}{1.5pt}% + \par\nointerlineskip\noindent% + % Typeset webpage/phone in columns if both are specified, or + % just on the LHS if only one is. + \begin{small}% + \ifthenelse{\equal{\@webpage}{}}{% + \ifthenelse{\equal{\@phone}{}}{}{\@phone\par\nointerlineskip\noindent}% + } {% + \ifthenelse{\equal{\@phone}{}}{\@webpage\par\nointerlineskip\noindent}{% + \begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}r}% + \@phone & \@webpage% + \end{tabular*}% + \par\nointerlineskip\noindent% + }% + }% + \ifthenelse{\equal{\@streetaddress}{} \and% + \equal{\@citystatezip}{}}{}{% + \ifthenelse{\equal{\@streetaddress}{} \or % + \equal{\@citystatezip}{}}{% + \ClassError{resume}{% + Only one of \protect\streetaddress and \protect\citystatezip given + }{% + You must either define both \protect\streetaddress and \protect\citystatezip, + or define neither of them. + }% + }{% +% + \begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}r}% + \@streetaddress & \@citystatezip% + \end{tabular*}% + }}% +% \ifthenelse{\equal{\@webpage}{}}{}{% +% \@webpage% +% }% + \end{small} +}} + +\renewcommand{\section}[1]{% + \goodbreak\vspace{\secskip}% + \par\nointerlineskip\noindent\textbf{\textsc{\large\makebox[\linewidth][l]{#1}}}\vspace{\headerbuffer}\par\nointerlineskip\noindent% + \lrule{\linewidth}{0.4pt}% + \vspace{\headerbuffer}\par\nointerlineskip} + +\renewcommand{\subsection}[1]{% + \goodbreak\vspace{\secskip}\par\nointerlineskip\vspace{-1em}\textbf{\flushleft{#1}:}\par% +} + +% General catch-all for either educational or job affiliation. +% +% Usage: +% \affiliation[title]{institution}{years} +\newcommand{\affiliation}[3][]{% + \goodbreak\vspace{\secskip}\par\noindent\begin{tabularx}{\linewidth}{Xr}% + {\bfseries #2} & \textit{#3}% + \ifthenelse{\equal{#1}{}}{}{% + \\ \textit{#1}% + }% + \end{tabularx}% +}% + diff --git a/resume/resume.sty b/resume/resume.sty new file mode 100644 index 0000000..e70ec0c --- /dev/null +++ b/resume/resume.sty @@ -0,0 +1,100 @@ +% resume.sty 08 Mar 89 +% style option for formatting resumes. + +% 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 +% 08 Mar 89 allow \\ in \sectiontitle to make multi-line titles + +\topmargin 0pt +\headheight 0pt +\headsep 0pt +\textheight 9in +\pagestyle{empty} +\parindent 0pt +\parskip \baselineskip +\topmargin 0in +\oddsidemargin 0in +\evensidemargin 0in +\textwidth 6.5in + +\setcounter{secnumdepth}{0} + +% use this to print your name at the top of the page +\def\name#1{{\large\centering#1\\[2\baselineskip]}} + +% 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}}} + +\def\@tablebox#1{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}} + +\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. +\newenvironment{llist}{\begin{list}{}{\setlength + \labelwidth{1in}\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. + %% If the title takes more lines than the body, you lose. + \def\sectiontitle##1{\setbox\@title=\hbox{{\bf\@tablebox{##1}}}\dp\@title=0pt + \item[\copy\@title]\ifdim\wd\@title>\labelwidth + \leavevmode \\* \else \fi} + \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} + \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. +% +% \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\@semployer#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. +\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]} diff --git a/resume/resume.tex b/resume/resume.tex new file mode 100644 index 0000000..35bab00 --- /dev/null +++ b/resume/resume.tex @@ -0,0 +1,138 @@ +%\documentstyle[simplemargins,10pt,resume]{article} +%\settopmargin{.75in} +\documentclass{res} +\usepackage[margin=.75in]{geometry} + +\begin{format} +\title{l}\employer{r}\\ +\dates{r}\\ +\body\\ +\location{l}\\ +\end{format} + +\begin{document} +\begin{tabular}{l} +{\Large \textbf {Joseph T Foley}}\\ +70 Amherst St.\\ +Cambridge, MA 02142\\ +\end{tabular}\hfill +\begin{tabular}{ll} +Home: &(617)225-6696 \\ +Cell: &(617)233-4590\\ +\texttt{Email:} &\texttt{foley@mit.edu}\\ +\end{tabular} + +\begin{resume} +\section{Professional} Mechanical Design, Manufacturing Design +and Process Control, Computer Automation, Distributed +System Design, Network Administration and Security, Database +Applications. + +\section{Interests} Robotics, Network Protocols, Unix, High Speed +Networking, Network Security and Cryptography, Distributed File +Systems, Backup/High Availability Systems, Computer-CAM/Instrument +Interfaces, Digital Design, Home Automation, VLSI Design, +Very Large Databases. + +\section{Education} \employer{\bf Massachusetts Institute of +Technology} \location{Cambridge, MA} Graduated in June of 1999 with a +Bachelors and Masters of Engineering in Computer Science and +Electrical Engineering with a minor in Mechanical Engineering.\\ +Currently a PhD Research Assistant in Mechanical Engineering estimated +to complete in June 2006. + +\title{Research Assistant} +\employer{\bf Massachusetts Institute of Technology} +\dates{\it January 1998 - present} +\location{Cambridge, MA} + +\section{Experience} +\begin{position} +Researcher for Professor Sanjay Sarma (Mechanical Engineering) as part of AutoID Center\\ +Designed and Implemented Demonstrations of AutoID Technology in Cambridge, UK Exposition.\\ +Currently doing research into Internet-enabled RFID Privacy and Security. +\end{position} + +\title{Teaching Faculty} +\employer{\bf Harvard Extension School} \location{Cambridge, MA} +\dates{\it September 2005-January 2006} +\begin{position} +Teaching Assistant for CSCI-E-170: Computer Security and Privacy. +\end{position} + +\title{Consultant} +\employer{\bf Insight Technologies} \location{Londonderry, NH} +\dates{\it February 2000 - June 2001} +\begin{position} +Consulted on Manufacturing M3/M5 Tactical Illuminator as Part +of Graduate Manufacturing Course (2.810). +\end{position} + +\title{Software Developer and Network Administrator} +\employer{\bf Emode, Inc.} \location{Cambridge, MA} +\dates{\it May 2000 - Sept 2000} +\begin{position} +Software Developer and Network Administrator.\\ +Developed World's Largest Fully-Indexed Quote Database.\\ +Developed and Installed Network Security Policies and Equipment. +\end{position} + +\title{Mechanical Design} +\employer{\bf Brute Force Games}\location{Cambridge, MA} +\dates{\it May 1997 - September 1997} +\begin{position} +Designed full immersion game simulator platform leveraging vection research. +\end{position} + +\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +\dates{\it September 1996 - September 2000} +\begin{position} +Residential Computing Consultant (Information Systems).\\ +MIT Network Operations Employee (Information Systems).\\ +MIT Network Security Employee (Information Systems).\\ +Redesigned Undergraduate Design Course(2.007) under Professor Alex Slocum (Mech E).\\ +6.004 (Computation Structures) Lab Assistant (MIT EECS Department). +\end{position} + +%\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +%\dates{\it January 1996 - May 1997} +%6.004 (Computation Structures) Lab Assistant (MIT EECS Department) + +%\employer{\bf Massachusetts Institute of Technology} \location{Cambridge, MA} +%\dates{\it September 1995 - August 1996} +%The Invention Group under Alex Slocum (Mech E)0 +% +\title{Network and Computer Administrator} +\employer{\bf Brooks Automation} \location{Lowell, MA} +\dates{\it March 1994 - August 1995} +\begin{position} +Network Installation: Analysis, Design, Upgrading/Installing.\\ +Computer Equipment Service: Software and Hardware Repair/Administration/Migration. +\end{position} + +\title{Hardware Interface Programmer} +\employer{\bf University of Massachusetts, Lowell} \location{Lowell, +MA} \dates{\it October 1993 - February 1994} +\begin{position} +Programming using the HP-GPIB interface to network the Solar Cell Research Lab's +instruments (microammeter, multimeter, etc.). This was used +to collect, organize and analyze cell data. +\end{position} + +%\sectiontitle{Background} High school: Saludatorian, 1994, Salem High +%School, Salem, NH.; also chosen as Rensselaer Medalist, Bausch and +%Lomb Scholar, Tandy Technology Scholar, and Admiral C. Byrd +%Scholarship winner. Director of Publicity for MIT's Lecture Series +%Committee. + +\parskip = 0pt +\section{Skills} +{\em Computer languages:} C(++), Perl, Java, XML, lexx, SCHEME, SQL, PICASM\\ +{\em UN\_X/Media development tools:} HTML/CGI, \LaTeX, PostScript, sh, CVS/Subversion, Kerberos\\ +%Certified for IPC Class 2 Soldering\\ +{\em Mech E Tools:} Matlab, Maple, ProEngineer, SolidWorks, Abacus, CNC Machining\\ +{\em Digital System Design:} Logic Analyzer, Serial Protocol Analyzer, Controller Simulators +%Instruments: Oscilloscopes, Multimeters, Digital Analyzers, Serial-line Analyzers, Signal Generators +%and Inductive Receivers. +\end{resume} +\end{document} diff --git a/short-bio.txt b/short-bio.txt new file mode 100644 index 0000000..69b6322 --- /dev/null +++ b/short-bio.txt @@ -0,0 +1,2 @@ +Joseph T. Foley has a varied career stretching across multiple startups and consulting jobs. His first startup position was with the founding of Brute Force Games in Cambridge who’s intent was to build a modular immersive gaming system that could be deployed in gaming parlors across the country. Due to Disney’s entry into the market, he moved on to another startup: Emode. This company promised better understanding of employees for HR divisions of companies through carefully constructed surveys developed by a Harvard Doctor of Psychology. His position there was as a “Magic Mechanic”, in short IT manager, software developer, and designer. Joseph returned back to his graduate career focus and instead did small consulting jobs on the side. A former colleague hired him to develop a web interface for a startup called “Uffinity” which was to be a social network aggregation site for businesses to connect to newly graduate young professionals. Upon graduation, Joseph worked at iRobot’s Government and Industrial division overseeing the DARPA Chembots project. Once that project was completed, Joseph moved to Iceland but acted as a consultant for Professor Sanbae Kim at the MIT Biomimetic Robotics Lab at MIT performing FEA analysis on the Cheeta-bot’s major leg elements. +He was also a consultant for the small machining and design firm Brass Drift on the west coast. Owner Peter Luka hired Joseph to apply design methodologies to redesigning machine elements he was manufacturing. Joseph was soon hired as a lecturer at Reykjavík University which he progressed to the position of Assistant Professor. He has continued to do consulting while maintaining his position at the University: designing an automated zebrafish embryo dispensing robot for the startup 3Z, developing a Distributed Quality Control concept with Professor Sanjay Sarma, developing microcontroller based IoT systems for Icelandic museums and Escape Room companies. Joseph’s latest IoT consulting project was a collaboration with the artist Sigrún Harðardóttir to develop an interactive art piece that instrumented a room, instrument, and furniture into an immersive experience. diff --git a/tweaklist.sty b/tweaklist.sty new file mode 100644 index 0000000..096bc3f --- /dev/null +++ b/tweaklist.sty @@ -0,0 +1,52 @@ +%% start of file `tweaklist.sty'. +%% Original by Jakob Schiøtz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan. +%% Modified by Xavier Danaux (xdanaux@gmail.com). +% +% The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted. +% This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment. +% The hook commands are initially empty, but can be redefined with \renewcommand. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +% hooks for the itemize environment +\def\itemhook{} +\def\itemhooki{} +\def\itemhookii{} +\def\itemhookiii{} +\def\itemhookiv{} +% hooks for the enumerate environment +\def\enumhook{} +\def\enumhooki{} +\def\enumhookii{} +\def\enumhookiii{} +\def\enumhookiv{} +% hook for the description environment +\def\deschook{} +% original environment definitions, with hooks added +\def\enumerate{% + \ifnum \@enumdepth >\thr@@\@toodeep\else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}% + \enumhook \csname enumhook\romannumeral\the\@enumdepth\endcsname}% + \fi} +\def\itemize{% + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter + \list + \csname\@itemitem\endcsname + {\def\makelabel##1{\hss\llap{##1}}% + \itemhook \csname itemhook\romannumeral\the\@itemdepth\endcsname}% + \fi} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel\deschook}} + {\endlist}