diff --git a/.Rbuildignore b/.Rbuildignore index b72160a..372c921 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -4,3 +4,6 @@ ^README-.*\.png$ ^\.travis\.yml$ ^cran-comments\.md$ +^inst/rmarkdown/templates/cover_letter$ +^inst/rmarkdown/templates/exam$ +^inst/rmarkdown/templates/uiuc_hw$ diff --git a/.travis.yml b/.travis.yml index 40f26e0..eba8c65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r + language: R -sudo: false cache: packages diff --git a/DESCRIPTION b/DESCRIPTION index 71e3f27..8ce21a9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: uiucthemes Type: Package Title: 'R' 'Markdown' Themes for 'UIUC' Documents and Presentations -Version: 0.2.1 +Version: 0.2.2 Authors@R: c( person("James", "Balamuta", email = "balamut2@illinois.edu", role = c("aut", "cre"), @@ -13,7 +13,7 @@ Authors@R: c( email = "dalpiaz2@illinois.edu", role = "ctb", comment = "Collaborated on the LaTeX Journal Theme"), person("Jose Luis", "Rodriguez", - email = "jrodriguezorjuela@luc.edu", role = "ctb", + email = "jlroo@illinois.edu", role = "ctb", comment = "Provided the Market Information Lab (MIL) Beamer Theme") ) Description: A set of custom 'R' 'Markdown' templates for documents and @@ -25,8 +25,9 @@ Depends: R (>= 3.0) License: MIT + file LICENSE Imports: - rmarkdown (>= 1.1.0) -RoxygenNote: 6.1.0 + rmarkdown (>= 1.1.0), + bookdown +RoxygenNote: 6.1.1 Roxygen: list(markdown = TRUE) Encoding: UTF-8 Suggests: knitr diff --git a/NAMESPACE b/NAMESPACE index a5368dc..b05fdb9 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -4,4 +4,4 @@ export(beamer_illinois) export(beamer_mil) export(beamer_orange) export(latex_journal_format) -importFrom(rmarkdown,beamer_presentation) +export(thesis_pdf_ece) diff --git a/NEWS.md b/NEWS.md index 5a7403c..71faf52 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,10 +1,18 @@ +# uiucthemes 0.2.2 + +## NEW + +- Added `thesis_pdf_ece()` template for writing a Master's and PhD thesis in + the Department of ECE at UIUC. + + # uiucthemes 0.2.1 ## NEW - Added the `beamer_mil()` template for the - [Market Information Lab (MIL)](https://business.illinois.edu/mil/) @ UIUC - created by [Jose Luis Rodriguez](https://www.luc.edu/quinlan/faculty/joseluisrodriguezorjuela.shtml) + [Market Information Lab (MIL)](https://giesbusiness.illinois.edu/margolis-market-information-lab) @ UIUC + created by [Jose Luis Rodriguez](https://giesbusiness.illinois.edu/profile/jose-luis-rodriguez-orjuela) - Added a vignette that contains screenshots of each template. ## CHANGES diff --git a/R/thesis-templates.R b/R/thesis-templates.R new file mode 100644 index 0000000..b74cf98 --- /dev/null +++ b/R/thesis-templates.R @@ -0,0 +1,62 @@ +#' Creates an R Markdown PDF Thesis document in the Style of the ECE Department +#' at UIUC +#' +#' Processes the R Markdown file using the appropriate ECE PDF template. +#' +#' @param toc_depth Depth shown in table of contents. Must be a positive integer. +#' @param highlight Syntax highlighting style. Supported styles include: +#' "default", "tango", "pygments", "kate", "monochrome", +#' "espresso", "zenburn", and "haddock". Pass `NULL` +#' to prevent syntax highlighting. +#' @param ... Additional parameters passed to [bookdown::pdf_book()]. +#' +#' @return +#' A modified \code{pdf_document} that uses the ECE Department style at UIUC. +#' +#' @references +#' +#' - [`thesisdown::thesis_pdf`](https://github.com/ismayc/thesisdown) by Chester Ismay +#' - The _R_ function is largely based off of this format. +#' - [ECE Department Thesis LaTeX Template](https://wiki.illinois.edu/wiki/display/ECEThesisReview/LaTeX+Resources) +#' - The `template.tex` uses the shell. +#' +#' @export +#' @examples +#' \dontrun{ +#' output: uiucthemes::thesis_pdf_ece +#' } +thesis_pdf_ece <- function(toc_depth = 3, highlight = "default", ...){ + + base <- bookdown::pdf_book(template = "template.tex", + toc = TRUE, + toc_depth = toc_depth, + highlight = highlight, + keep_tex = TRUE, + pandoc_args = "--top-level-division=chapter", + ...) + + # Mostly copied from knitr::render_sweave + base$knitr$opts_chunk$comment <- NA + #base$knitr$opts_chunk$fig.align <- "center" + + old_opt <- getOption("bookdown.post.latex") + options(bookdown.post.latex = fix_envs) + on.exit(options(bookdown.post.late = old_opt)) + + base + +} + + +fix_envs = function(x){ + beg_reg <- '^\\s*\\\\begin\\{.*\\}' + end_reg <- '^\\s*\\\\end\\{.*\\}' + i3 = if (length(i1 <- grep(beg_reg, x))) (i1 - 1)[grepl("^\\s*$", x[i1 - 1])] + + i3 = c(i3, + if (length(i2 <- grep(end_reg, x))) (i2 + 1)[grepl("^\\s*$", x[i2 + 1])] + ) + if (length(i3)) x = x[-i3] + x +} + diff --git a/R/uiucthemes-package.R b/R/uiucthemes-package.R new file mode 100644 index 0000000..b30bbda --- /dev/null +++ b/R/uiucthemes-package.R @@ -0,0 +1,8 @@ +#' @keywords internal +"_PACKAGE" + +# The following block is used by usethis to automatically manage +# roxygen namespace tags. Modify with care! +## usethis namespace: start +## usethis namespace: end +NULL diff --git a/R/uiucthemes.R b/R/uiucthemes.R deleted file mode 100644 index d9ca636..0000000 --- a/R/uiucthemes.R +++ /dev/null @@ -1,3 +0,0 @@ -#' @details Trial run on RMarkdown templates -#' @importFrom rmarkdown beamer_presentation -"_PACKAGE" diff --git a/README.Rmd b/README.Rmd index e620446..17e1d4a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -19,10 +19,11 @@ presentations, journal articles, and exam templates. Included in the package are: -- `beamer_illinois`: Illinois colored header boxes +- `beamer_illinois`: Illinois colored header boxes. - `beamer_orange`: Minimialist slides with a color preference to orange. -- `beamer_mil`: Beamer Market Information Lab (MIL) -- `latex_journal_report`: initial implementation of a journal entry for a class. +- `beamer_mil`: [Market Information Lab (MIL)](https://giesbusiness.illinois.edu/margolis-market-information-lab) Beamer Template. +- `thesis_pdf_ece`: LaTeX Thesis Template for the [Department of ECE at UIUC](https://wiki.illinois.edu/wiki/display/ECEThesisReview/LaTeX+Resources). +- `latex_journal_report`: Initial implementation of a journal entry for a class. Screenshots of each template are included in package overview vignette. diff --git a/README.md b/README.md index 0dbbb24..8405252 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,16 @@ for presentations, journal articles, and exam templates. Included in the package are: - - `beamer_illinois`: Illinois colored header boxes + - `beamer_illinois`: Illinois colored header boxes. - `beamer_orange`: Minimialist slides with a color preference to orange. - - `beamer_mil`: Beamer Market Information Lab (MIL) - - `latex_journal_report`: initial implementation of a journal entry + - `beamer_mil`: [Market Information Lab + (MIL)](https://giesbusiness.illinois.edu/margolis-market-information-lab) + Beamer Template. + - `thesis_pdf_ece`: LaTeX Thesis Template for the [Department of ECE + at + UIUC](https://wiki.illinois.edu/wiki/display/ECEThesisReview/LaTeX+Resources). + - `latex_journal_report`: Initial implementation of a journal entry for a class. Screenshots of each template are included in package overview vignette. @@ -31,8 +36,8 @@ title: '"Illinois" UIUC Beamer Theme' short-title: "Beamer Slides" author: "John and Mary Doe" short-author: "J & M Doe" -date: 'October 03, 2018' # Month DD, YYYY (Main Slide) -short-date: '10/03/2018' # MM/DD/YYYY (Lower Right) +date: 'May 22, 2019' # Month DD, YYYY (Main Slide) +short-date: '05/22/2019' # MM/DD/YYYY (Lower Right) institute: "University of Illinois at Urbana-Champaign" short-institute: "UIUC" department: "Department of Magic" # Institute must be defined @@ -134,8 +139,7 @@ install.packages(c("rmarkdown","uiucthemes")) install.packages(c("rmarkdown","uiucthemes")) ``` -3) Use the `rmarkdown::draft` function to create -articles: +3) Use the `rmarkdown::draft` function to create articles: diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/ECE-LaTeX-Guide.pdf b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/ECE-LaTeX-Guide.pdf new file mode 100644 index 0000000..2554fef Binary files /dev/null and b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/ECE-LaTeX-Guide.pdf differ diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/IEEE_ECE.bst b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/IEEE_ECE.bst new file mode 100644 index 0000000..d33acce --- /dev/null +++ b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/IEEE_ECE.bst @@ -0,0 +1,2423 @@ +%% +%% IEEE_ECE.bst (originally IEEEtran.bst) +%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) +%% Version 1.12 (2007/01/11) +%% +%% Copyright (c) 2003-2007 Michael Shell +%% Modified by Shane Ryoo to fit UIUC ECE thesis format. +%% Modified by Matt Trower to prevent entries split over page. +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a numerical citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.00 (2002/08/13) Initial release +% +% 1.10 (2002/09/27) +% 1. Corrected minor bug for improperly formed warning message when a +% book was not given a title. Thanks to Ming Kin Lai for reporting this. +% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields +% in the BST control entry type. +% +% 1.11 (2003/04/02) +% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks +% to Ming Kin Lai for reporting this. +% +% 1.12 (2007/01/11) +% 1. Fixed bug with unwanted comma before "et al." when an entry contained +% more than two author names. Thanks to Pallav Gupta for reporting this. +% 2. Fixed bug with anomalous closing quote in tech reports that have a +% type, but without a number or address. Thanks to Mehrdad Mirreza for +% reporting this. +% 3. Use braces in \providecommand in begin.bib to better support +% latex2html. TeX style length assignments OK with recent versions +% of latex2html - 1.71 (2002/2/1) or later is strongly recommended. +% Use of the language field still causes trouble with latex2html. +% Thanks to Federico Beffa for reporting this. +% 4. Added IEEEtran.bst ID and version comment string to .bbl output. +% 5. Provide a \BIBdecl hook that allows the user to execute commands +% just prior to the first entry. +% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to +% better work with a wider variety of bibliography styles. +% 7. Changed month abbreviations from Sept., July and June to Sep., Jul., +% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann +% for reporting this. +% 8. Control entry types should not be considered when calculating longest +% label width. +% 9. Added alias www for electronic/online. +% 10. Added CTLname_url_prefix control entry type. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #0 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.12" } +FUNCTION{bst.file.date} { "2007/01/11" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtran.bst version" " " * bst.file.version * + " (" * bst.file.date * ") " * "by Michael Shell." * + top$ + "-- " bst.file.website * + top$ + "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." * + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "Ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "M.S. thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"June"} +MACRO {jul} {"July"} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% least significant digit always determines the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + "\interlinepenalty10000" + write$ newline$ + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + { skip$ } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.date output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + format.paper output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + format.pages output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/bib/thesisrefs.bib b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/bib/thesisrefs.bib new file mode 100644 index 0000000..5ace5be --- /dev/null +++ b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/bib/thesisrefs.bib @@ -0,0 +1,1080 @@ +@STRING{IEEE_J_EC = "{IEEE} Trans. En. Conv."} +@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."} +@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."} +@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."} +@STRING{J_NUM_ENG = "Int. J. Numer. Meth. Engng."} +@STRING{ENG_ANAL = "Eng. Anal."} +@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."} +@STRING{IEEE_J_MTT = "{IEEE} Trans. Microwave Theory Tech."} +@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Applicat."} +@STRING{IEEE_J_AntProp = "{IEEE} Trans. Ant. and Prop."} + +@IEEEtranBSTCTL{IEEEexample:BSTcontrol, +CTLmax_names_forced_etal = "4", +CTLnames_show_etal = "1" +}; + +%% IEEEexample.bib +%% V1.10 +%% 2002/09/27 +%% Copyright (c) 2002 by Michael Shell +%% mshell(at)ece.gatech.edu +%% See support website below for current contact information. +%% +%% NOTE: This text file uses MS Windows line feed conventions. When (human) +%% reading this file on other platforms, you may have to use a text +%% editor that can handle lines terminated by the MS Windows line feed +%% characters (0x0D 0x0A). +%% +%% This is an example BibTeX database for the official IEEEtran.bst +%% BibTeX style file. +%% +%% Some entries call strings that are defined in the IEEEabrv.bib file. +%% Therefore, IEEEabrv.bib should be loaded prior to this file. +%% Usage: +%% +%% \bibliographystyle{./IEEEtran} % use IEEEtran.bst style +%% \bibliography{./IEEEabrv,./IEEEexample} +%% +%% +%% Support sites: +%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/ +%% and/or +%% http://www.ieee.org +%%********************************************************************** +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% This code is distributed under the Perl Artistic License +%% ( http://language.perl.com/misc/Artistic.html ) +%% and may be freely used, distributed and modified - subject to the +%% constraints therein. +%% Retain all contribution notices, credits and disclaimers. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%%********************************************************************** + + +% Note that, because the example references were taken from actual IEEE +% publications, these examples do not always contain the full amount +% of information that may be desirable (for use with other BibTeX styles). +% In particular, full names (not abbreviated with initials) should be +% entered whenever possible as some (non-IEEE) bibliography styles use +% full names. IEEEtran.bst will automatically abbreviate when it +% encounters full names. + + + + +% references for the IEEEtran.bst documentation +% the distribution site for IEEEtran.bst +@electronic{IEEEexample:shellCTANpage, + author = "Michael Shell", + title = "{IEEE}tran Homepage on {CTAN}", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/", + year = "2002" +}; + +% the IEEE website +% sort key is needed for sorting styles +@electronic{IEEEexample:IEEEwebsite, + title = "The {IEEE} Website", + url = "http://www.ieee.org/", + year = "2002", + key = "IEEE" +}; + +% The BibTeX user's guide. +% The filename could have been put in the URL instead. But, there might +% be other interesting things for the user in the same directory - and +% the filename might change before the directory that contains it. +@electronic{IEEEexample:bibtexuser, + author = "Oren Patashnik", + title = "{\BibTeX}ing", + howpublished = "{btxdoc.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = feb, + year = "1988" +}; + +% The BibTeX style designer's guide. +@electronic{IEEEexample:bibtexdesign, + author = "Oren Patashnik", + title = "Designing {\BibTeX\ } Styles", + howpublished = "{btxhak.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = feb, + year = "1988" +}; + +% The BibTeX Tips and FAQ guide. +@electronic{IEEEexample:bibtexFAQ, + author = "David Hoadley and Michael Shell", + title = "{\BibTeX}\ Tips and {FAQ}", + howpublished = "{btxFAQ.txt}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = oct, + year = "2002" +}; + +% TeX User Group Bibliography Archive +@electronic{IEEEexample:beebe_archive, + author = "Nelson H. F. Beebe", + title = "{\TeX\ }User Group Bibliography Archive", + url = "http://www.math.utah.edu:8080/pub/tex/bib/index-table.html", + month = may, + year = "2002" +}; + +% The url.sty package. +@electronic{IEEEexample:urlsty, + author = "Donald Arseneau", + title = "The url.sty package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/other/misc/", + month = mar, + year = "1999", +}; + + +% The hyperref.sty package. +@electronic{IEEEexample:hyperrefsty, + author = "Sebastian Rahtz and Heiko Oberdiek", + title = "The hyperref.sty package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/hyperref/", + month = jul, + year = "2002", +}; + +% The Babel package. +@electronic{IEEEexample:babel, + author = "Johannes Braams", + title = "The {Babel} package", + url = "http://www.ctan.org/tex-archive/macros/latex/required/babel/", + month = feb, + year = "2001", +}; + + + + + +% The three most common and typical types of references used in +% IEEE publications: + +% an article in a journal +% Note the use of the IEEE_J_EDL string, defined in the IEEEabrv.bib file, +% for the journal name. IEEEtran.bst defines the BibTeX standard three +% letter month codes per IEEE style. +% From the June 2002 issue of "IEEE Transactions on Electron Devices", +% page 996, reference #16. +@article{IEEEexample:article_typical, + author = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok", + title = "A Novel Ultrathin Elevated Channel Low-temperature + Poly-{Si} {TFT}", + journal = IEEE_J_EDL, + volume = "20", + month = nov, + year = "1999", + pages = "569-571" +}; + +% journal article using et al. +% The (five) authors are actually: F. Delorme, S. Slempkes, G. Alibert, +% B. Rose, J. Brandon +% The month (July) was not given here. +% From the September 1998 issue of "IEEE Journal on Selected Areas in +% Communications", page 1257, reference #28. +@article{IEEEexample:articleetal, + author = "F. Delorme and others", + title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown + in Three {MOVPE} Steps", + journal = "Electron. Lett.", + volume = "31", + number = "15", + year = "1995", + pages = "1244-1245" +}; + + +% a paper in a conference proceedings +% "conference" can be used as an alias for "inproceedings" +% From the June 2002 issue of "Journal of Microelectromechanical Systems", +% page 205, reference #16. +@inproceedings{IEEEexample:conf_typical, + author = "R. K. Gupta and S. D. Senturia", + title = "Pull-in Time Dynamics as a Measure of Absolute Pressure", + booktitle = "Proc. {IEEE} International Workshop on + Microelectromechanical Systems ({MEMS}'97)", + address = "Nagoya, Japan", + month = jan, + year = "1997", + pages = "290-294" +}; + + +% a book +% From the May 2002 issue of "IEEE Transactions on Magnetics", +% page 1466, reference #4. +@book{IEEEexample:book_typical, + author = "B. D. Cullity", + title = "Introduction to Magnetic Materials", + publisher = "Addison-Wesley", + address = "Reading, MA", + year = "1972" +}; + + + + +% Other examples + +% journal article with large page numbers, IEEE will divide numbers 5 digits +% or longer into groups of three with small spaces between them. Page ranges +% can be separated via either "-" or "--", IEEEtran.bst will automatically +% convert the separator dash(es) to "--". +% Authors and/or IEEE do not always provide/use the journal number, but it +% was used in this case. IEEEtran.bst can be configured to ignore journal +% numbers if desired. +% From the August 2000 issue of "IEEE Photonics Technology Letters", +% page 1039, reference #11. +@article{IEEEexample:articlelargepages, + author = "A. Castaldini and A. Cavallini and B. Fraboni + and P. Fernandez and J. Piqueras", + title = "Midgap Traps Related to Compensation Processes in + {CdTe} Alloys", + journal = "Phys. Rev. B.", + volume = "56", + number = "23", + year = "1997", + pages = "14897-14900" +}; + + +% journal article with dual months +% use the BibTeX "#" concatenation operator +% From the March 2002 issue of "IEEE Transactions on Mechatronics", +% page 21, reference #8. +@article{IEEEexample:articledualmonths, + author = "Y. Okada and K. Dejima and T. Ohishi", + title = "Analysis and Comparison of {PM} Synchronous Motor and + Induction Motor Type Magnetic Bearings", + journal = IEEE_J_IA, + volume = "31", + month = sep # "/" # oct, + year = "1995", + pages = "1 047-1053" +}; + + +% journal article to be published as a misc entry type +% date information like month and year is optional +% However, the article form like that below may be a better approach. +% From the May 2002 issue of "IEEE Journal of Selected Areas in +% Communication", page 725, reference #3. +@misc{IEEEexample:TBPmisc, + author = "M. Coates and A. Hero and R. Nowak and B. Yu", + title = "Internet Tomography", + howpublished = IEEE_M_SP, + month = may, + year = "2002", + note = "to be published" +}; + + +% journal article to be published as an article entry type +% year is required, so if absent, use the year field to hold +% the "submitted for publication" in order to avoid a warning for +% the missing year field. +% From the June 2002 issue of "IEEE Transactions on Information Theory", +% page 1461, reference #21. +@article{IEEEexample:TBParticle, + author = "N. Kahale and R. Urbanke", + title = "On the Minimum Distance of Parallel and Serially + Concatenated Codes", + journal = IEEE_J_IT, + year = "submitted for publication" +}; + + + + +% book with editor and no author +% From the June 2002 issue of "IEEE Transactions on Information Theory", +% page 1725, reference #1. +@book{IEEEexample:bookwitheditor, + editor = "J. C. Candy and G. C. Temes", + title = "Oversampling Delta-Sigma Data Converters Theory, + Design and Simulation", + publisher = "{IEEE} Press.", + address = "New York", + year = "1992" +}; + + +% book with edition, author and editor +% Note that the standard BibTeX styles do not support book entries with both +% author and editor fields, but IEEEtran.bst does. +% The standard BibTeX way of specifying the edition is to use capitalized +% ordinal words such as "First", "Second", etc. Most .bst files can convert +% up to about "Fifth" into the format needed. IEEEtran.bst can convert up +% to "Tenth" to the "Arabic ordinal" form IEEE uses (e.g., "10th"). For +% editions over the tenth, it is best to use the "Arabic ordinal" form for +% IEEE related work (e.g., "101st") +% Note how "Jr." has to be entered. +% From the May 2002 issue of "Journal of Lightwave Technology", page 856, +% reference #17. +@book{IEEEexample:book, + author = "S. M. Metev and V. P. Veiko", + editor = "Osgood, Jr., R. M.", + title = "Laser Assisted Microtechnology", + edition = "Second", + publisher = "Springer-Verlag", + address = "Berlin, Germany", + year = "1998" +}; + + +% book with series and volume +% From the January 2000 issue of "IEEE Transactions on Communications", +% page 11, reference #31. +@book{IEEEexample:bookwithseriesvolume, + editor = "J. Breckling", + title = "The Analysis of Directional Time Series: Applications to + Wind Speed and Direction", + series = "Lecture Notes in Statistics", + publisher = "Springer", + address = "Berlin, Germany", + year = "1989", + volume = "61" +}; + + +% inbook with chapter number. The pages field could also have been given. +% The chapter number could be changed to something else such as a section +% number via the type field: type = "sec.". +% From the May 2002 issue of "IEEE Transactions on Circuits and Systems---I: +% Fundamental Applications and Theory", page 638, reference #22. +@inbook{IEEEexample:inbook, + author = "H. E. Rose", + title = "A Course in Number Theory", + publisher = "Oxford Univ. Press", + address = "New York, NY", + year = "1988", + chapter = "3" +}; + + +% inbook with pages and note. The language field is not set to Russian +% because the title is presented here in its translated, English, form. +% From the May 2002 issue of "IEEE Transactions on Magnetics", page 1533, +% reference #5. +@inbook{IEEEexample:inbookpagesnote, + author = "B. K. Bul", + title = "Theory Principles and Design of Magnetic Circuits", + publisher = "Energia Press", + address = "Moscow", + year = "1964", + pages = "464", + note = "(in Russian)" +}; + + + + + +% incollection with author and editor +% From the May 2002 issue of "Journal of Lightwave Technology", +% page 807, reference #7. +@incollection{IEEEexample:incollection, + author = "W. V. Sorin", + editor = "D. Derickson", + title = "Optical Reflectometry for Component Characterization", + booktitle = "Fiber Optic Test and Measurement", + publisher = "Prentice-Hall", + address = "Englewood Cliffs, NJ", + year = "1998" +}; + + +% incollection with series +% From the April 2000 issue of "IEEE Transactions on Communication", +% page 609, reference #3. +@incollection{IEEEexample:incollectionwithseries, + author = "J. B. Anderson and K. Tepe", + title = "Properties of the Tailbiting {BCJR} Decoder", + booktitle = "Codes, Systems and Graphical Models", + series = "{IMA} Volumes in Mathematics and Its Applications", + publisher = "Springer-Verlag", + address = "New York", + year = "2000" + +}; + + +% incollection with author, editor, chapter and pages +% From the January 2000 issue of "IEEE Transactions on Communications", +% page 16, reference #9. +@incollection{IEEEexample:incollection_chpp, + author = "P. Hedelin and P. Knagenhjelm and M. Skoglund", + editor = "W. B. Kleijn and K. K. Paliwal", + title = "Theory for Transmission of Vector Quantization Data", + booktitle = "Speech Coding and Synthesis", + publisher = "Elsevier Science", + address = "Amsterdam, The Netherlands", + year = "1995", + chapter = "10", + pages = "347-396" +}; + + +% incollection with a large number of authors, some authors/journals will +% use et al. for so many names. IEEEtran.bst can be configured to do this +% if desired, or "R. M. A. Dawson and others" can be used instead. +% Note that IEEE may not include the publisher for incollection entries - +% IEEEtran.bst will not issue a warning if the publisher is missing for +% incollections - but other .bst files often will. +% From the June 2002 issue of "IEEE Transactions on Electron Devices", +% page 996, reference #12. +@incollection{IEEEexample:incollectionmanyauthors, + author = "R. M. A. Dawson and Z. Shen and D. A. Furst and + S. Connor and J. Hsu and M. G. Kane and R. G. Stewart and + A. Ipri and C. N. King and P. J. Green and R. T. Flegal + and S. Pearson and W. A. Barrow and E. Dickey and K. Ping + and C. W. Tang and S. Van. Slyke and + F. Chen and J. Shi and J. C. Sturm and M. H. Lu", + title = "Design of an Improved Pixel for a Polysilicon + Active-Matrix Organic {LED} Display", + booktitle = "{SID} Tech. Dig.", + volume = "29", + year = "1998", + pages = "11-14" +}; + + + + + +% A Motorola data book as a manual +% It is somewhat unusual to include the data book part number. +% in the title. It might be more correct to put this information +% in the howpublished field instead. +% From the December 2000 issue of "IEEE Transactions on Communications", +% page 1986, reference #10. +@manual{IEEEexample:motmanual, + title = "{FLEXChip} Signal Processor ({MC68175/D})", + organization = "Motorola", + year = "1996" +}; + +% same reference, but using IEEEtran's howpublished extension +@manual{IEEEexample:motmanualhowpub, + title = "{FLEXChip} Signal Processor", + howpublished = "{MC68175/D}", + organization = "Motorola", + year = "1996" +}; + + + + +% conference paper with an address and days. Some journals capitalize the +% letters in "Globecom", this one did not. +% From the May 2002 issue of "IEEE Transactions on Communications", +% page 697, reference #12. +@inproceedings{IEEEexample:confwithadddays, + author = "M. S. Yee and L. Hanzo", + title = "Radial Basis Function Decision Feedback Equaliser + Assisted Burst-by-burst Adaptive Modulation", + booktitle = "Proc. {IEEE} Globecom '99", + address = "Rio de Janeiro, Brazil", + month = dec # " 5--9,", + year = "1999", + pages = "2183-2187" +}; + + +% conference paper with volume number. A conference proceedings with a vol +% number is a little uncommon, note that the vol number is placed +% before the address in the formatted bibliography entry +% From the April 2002 issue of "IEEE/ACM Transactions on Networking", +% page 181, reference #26. +@inproceedings{IEEEexample:confwithvolume, + author = "M. Yajnik and S. B. Moon and J. Kurose and D. Towsley", + title = "Measurement and Modeling of the Temporal Dependence in + Packet Loss", + booktitle = "Proc. {IEEE} {INFOCOM}'99", + volume = "1", + address = "New York, NY", + month = mar, + year = "1999", + pages = "345-352" +}; + + +% conference paper with a paper number, the type field can be used to +% override the word "paper", e.g., type = "postdeadline paper". A type +% can be given even without a paper field. +% Also, IEEEtran.bst can be configured to ignore paper numbers and types. +% From the May 2002 issue of "Journal of Lightwave Technology", +% page 807, reference #4. +@inproceedings{IEEEexample:confwithpaper, + author = "M. Wegmuller and J. P. von der Weid and P. Oberson + and N. Gisin", + title = "High Resolution Fiber Distributed Measurements With + Coherent {OFDR}", + booktitle = "Proc. {ECOC}'00", + year = "2000", + paper = "11.3.4", + pages = "109" +}; + + +% conference paper with a postdeadline type paper, the paper field is +% optional. +% From the August 2000 issue of "IEEE Photonics Technology Letters", +% page 1087, reference #12. +@inproceedings{IEEEexample:confwithpapertype, + author = "B. Mikkelsen and G. Raybon and R.-J. Essiambre and + K. Dreyer and Y. Su. and L. E. Nelson and J. E. Johnson + and G. Shtengel and A. Bond and D. G. Moodie and + A. D. Ellis", + title = "160 {Gbit/s} Single-channel Transmission Over 300 km + Nonzero-dispersion Fiber With Semiconductor Based + Transmitter and Demultiplexer", + booktitle = "Proc. {ECOC}'99", + year = "1999", + paper = "2-3", + type = "postdeadline paper", + pages = "28-29" +}; + + +% presented at a conference +% intype overrides the default "in" and causes the booktitle not to be +% emphasized (rendered in italics). +% From the February 2002 issue of "IEEE/ACM Transactions on Networking", +% page 163, reference #6. +@inproceedings{IEEEexample:presentedatconf, + author = "S. G. Finn and M. M{\'e}dard and R. A. Barry", + title = "A Novel Approach to Automatic Protection Switching + Using Trees", + intype = "presented at the", + booktitle = "Proc. Int. Conf. Commun.", + year = "1997" +}; + + + + + +% master's thesis, often the University name will be abbreviated and the +% state or country will be included in the address. The type field can +% used to override the default type "Master's thesis" +% From the June 2002 issue of "IEEE Transactions on Microelectromechanical +% Systems", page 186, reference #11. +@mastersthesis{IEEEexample:masters, + author = "Nin C. Loh", + title = "High-Resolution Micromachined Interferometric + Accelerometer", + school = "Massachusetts Institute of Technology", + address = "Cambridge", + year = "1992" +}; + + +% master's thesis with a type field +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 391, reference #12. +@mastersthesis{IEEEexample:masterstype, + author = "A. Karnik", + title = "Performance of {TCP} Congestion Control with Rate + Feedback: {TCP/ABR} and Rate Adaptive {TCP/IP}", + school = "Indian Institute of Science", + type = "M. Eng. thesis", + address = "Bangalore, India", + month = jan, + year = "1999" +}; + + + + + +% Ph.D. dissertation with a URL field, the university is abbreviated +% From the October 2001 issue of "IEEE/ACM Transactions on Networking", +% page 590, reference #11. +@phdthesis{IEEEexample:phdurl, + author = "Q. Li", + title = "Delay Characterization and Performance Control of + Wide-area Networks", + school = "Univ. of Delaware", + address = "Newark", + month = may, + year = "2000", + url = "http://www.ece.udel.edu/~qli" +}; + + + + + +% technical report +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 490, reference #15. +@techreport{IEEEexample:techrep, + author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu", + title = "Congestion Avoidance in Computer Networks with a + Connectionless Network Layer", + institution = "Digital Equipment Corporation", + address = "MA", + number = "DEC-TR-506", + month = aug, + year = "1987" +}; + + +% technical report with type +% for those times when "Tech. Rep." needs to be modified +% From the February 2001 issue of "IEEE/ACM Transactions on Networking", +% page 46, reference #8. +@techreport{IEEEexample:techreptype, + author = "J. Padhye and V. Firoiu and D. Towsley", + title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance + and Control", + institution = "Univ. of Massachusetts", + address = "Amherst, MA", + type = "CMPSCI Tech. Rep.", + number = "99-02", + year = "1999" +}; + + +% technical report with type +% for those times when "Tech. Rep." needs to be modified +% This reference did not have an address. +% From the January 2000 issue of "IEEE Transactions on Communications", +% page 117, reference #6. +@techreport{IEEEexample:techreptypeii, + author = "D. Middleton and A. D. Spaulding", + title = "A Tutorial Review of Elements of Weak Signal Detection + in Non-{G}aussian {EMI} Environments", + institution = "National Telecommunications and Information + Administration ({NTIA}), U.S. Dept. of Commerce", + type = "NTIA Report", + number = "86-194", + month = may, + year = "1986" +}; + + + + + +% an unpublished work +% for unpublished types, the note field is required. IEEE usually +% just uses the word "unpublished" for the note. +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 391, reference #16. +@unpublished{IEEEexample:unpublished, + author = "T. J. Ott and N. Aggarwal", + title = "{TCP} over {ATM}: {ABR} or {UBR}", + note = "Unpublished" +}; + + + + + +% electronic with a howpublished information field +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 391, reference #7. +@electronic{IEEEexample:electronhowinfo, + author = "V. Jacobson", + title = "Modified {TCP} Congestion Avoidance Algorithm", + howpublished = "end2end-interest mailing list", + url = "ftp://ftp.isi.edu/end2end/end2end-interest-1990.mail", + month = apr, + year = "1990" +}; + + +% electronic with a howpublished information field +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 418, reference #31. +@electronic{IEEEexample:electronhowinfo2, + author = "V. Valloppillil and K. W. Ross", + title = "Cache Array Routing Protocol v1.1", + howpublished = "Internet draft", + url = "http://ds1.internic.net/internet-drafts/draft-vinod-carp-v1-03.txt", + year = "1998" +}; + + +% electronic with an organization and address +% From the February 2002 issue of "IEEE/ACM Transactions on Networking", +% page 114, reference #15. +@electronic{IEEEexample:electronorgadd, + author = "D. H. Lorenz and A. Orda", + title = "Optimal Partition of {QoS} Requirements on Unicast + Paths and Multicast Trees", + organization = "Dept. Elect. Eng., Technion", + address = "Haifa, Israel", + url = "ftp://ftp.technion.ac.il/pub/supported/ee/Network/lor.mopq98.ps", + month = jul, + year = "1998" +}; + + + + + +% U.S. patent +% Use the type field to override the patent type. e.g., +% type = "Patent Application" +% The address is that of the assignee. Note that IEEE does not +% display the assignee, the address, and only displays one date. +% (if year is not present, the filed dates are used.) However, this +% information should be entered as other BibTeX styles may use it. +% alternatively, nationality could be entered as "U.S." +% From the April 2000 issue of "IEEE Transactions on Communications", +% page 542, reference #6. +@patent{IEEEexample:uspat, + author = "Ronald E. Sorace and Victor S. Reinhardt and + Steven A. Vaughn", + assignee = "Hughes Aircraft Company", + address = "Los Angeles, CA", + title = "High-Speed Digital-to-{RF} Converter", + nationality = "United States", + number = "5668842", + dayfiled = "28", + monthfiled = feb, + yearfiled = "1995", + day = "16", + month = sep, + year = "1997" +}; + + +% Japanese Patent +% From the April 2000 issue of "IEEE Transactions on Communications", +% page 556, reference #6. +@patent{IEEEexample:jppat, + author = "U. Hideki", + title = "Quadrature Modulation Circuit", + nationality = "Japanese", + number = "152932/92", + day = "20", + month = may, + year = "1992" +}; + + +% French Patent request, the language field must be entered in lower case +% as this is the option name Babel uses. The nationality field needs to be +% capitalized. Because this is a patent request, the date filed fields are +% used while the date fields are left empty/missing. In other countries, +% the words "Patent Application", etc. are used instead. +% From the April 2000 issue of "IEEE Transactions on Communications", +% page 556, reference #9. +@patent{IEEEexample:frenchpatreq, + author = "F. Kowalik and M. Isard", + title = "Estimateur d'un D{\'e}faut de Fonctionnement + d'un Modulateur en Quadrature et {\'E}tage de Modulation + l'Utilisant", + language = "french", + nationality = "French", + type = "Patent Request", + number = "9500261", + dayfiled = "11", + monthfiled = jan, + yearfiled = "1995" +}; + + + + + +% a periodical +% From the April 2001 issue of "IEEE/ACM Transactions on Networking", +% page 160, reference #1. +% sort key is needed for sorting styles +@periodical{IEEEexample:periodical, + title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}", + volume = "3", + month = aug, + year = "1996", + key = "IEEE" +}; + + + + + +% standard, IEEE does not use the address for standards, but it is good +% to provide one for BibTeX styles that use it. +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 451, reference #2. +@standard{IEEEexample:standard, + title = "Wireless {LAN} Medium Access Control {(MAC)} and + Physical Layer {(PHY)} Specification", + organization = "IEEE", + address = "Piscataway, NJ", + number = "802.11", + year = "1997" +}; + + +% standard with type and revision, the type overrides the word standard +% (or std.). Here a standard number is not available and a revision number +% is used. +% From the August 2000 issue of "IEEE Photonics Technology Letters", +% page 1048, reference #13. +@standard{IEEEexample:standardproposed, + title = "Fiber Channel Physical Interface ({FC-PI})", + institution = "NCITS", + address = "Washington, DC", + type = "Working Draft Proposed Standard", + revision = "5.2", + year = "1999" +}; + + +% standard draft as a misc with author +% From the May 2002 issue of "IEEE Journal of Selected Areas in +% Communication", page 725, reference #16. +@misc{IEEEexample:draftasmisc, + author = "I. Widjaja and A. Elwalid", + title = "{MATE}: {MPLS} Adaptive Traffic Engineering", + howpublished = "IETF Draft", + year = "1999" +}; + + + + + +% misc for a techreport like reference +% techreport is not perfectly suitable because this entry lacks +% an institution field +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 490, reference #22. +@misc{IEEEexample:miscforum, + author = "L. Roberts", + title = "Enhanced Proportional Rate Control Algorithm {PRCA}", + howpublished = "{ATM} Forum Contribution 94-0735R1", + month = aug, + year = "1994" +}; + + +% misc for a white paper +% From the August 2001 issue of "IEEE/ACM Transactions on Networking", +% page 478, reference #4 - Note that the reference there (improperly?) +% used the author field for "Cisco". +@misc{IEEEexample:whitepaper, + title = "Advanced {QoS} Services for the Intelligent Internet", + howpublished = "White Paper", + organization = "Cisco", + month = may, + year = "1997" +}; + + +% misc for a data sheet +% From the November 2000 issue of "IEEE Photonics Technology Letters", +% page 1551, reference #6. +@misc{IEEEexample:datasheet, + title = "{PDCA12-70} data sheet", + organization = "Opto Speed SA", + address = "Mezzovico, Switzerland" +}; + + + + + +% Other unusual references + +% a private communication as a misc entry type +% sometimes the designation "personal communication" is used instead +% From the June 2002 issue of "IEEE Transactions on Information Theory", +% page 1725, reference #16. +@misc{IEEEexample:private, + author = "S. Konyagin", + howpublished = "private communication", + year = "1998" +}; + + +% an internet request for comments (RFC) as a misc entry type +% It would also be nice to add a URL to these types of things. +% RFCs can also be handled as electronic references. +% From the April 2002 issue of "IEEE/ACM Transactions on Networking", +% page 181, reference #14. +@misc{IEEEexample:miscrfc, + author = "K. K. Ramakrishnan and S. Floyd", + title = "A Proposal to Add Explicit Congestion + Notification ({ECN}) to {IP}", + howpublished = "RFC 2481", + month = jan, + year = "1999" +}; + + +% misc for a German regulation +% In German, the first letters of nouns are capitalized, so we do so here. +% From the June 2002 issue of "IEEE Journal in Selected Areas in +% Communication", page 892, reference #9. +@misc{IEEEexample:miscgermanreg, + title = "{M}essung von {S}t{\"o}rfeldern an {A}nlagen + und {L}eitungen der {T}elekommunikation im + {F}requenzbereich 9 {kHz} bis 3 {GHz}", + language = "german", + howpublished = "{M}e{\ss}vorschrift {R}eg {TP} {MV} 05", + organization = "Regulierungsbeh{\"o}rde f{\"u}r {T}elekommunikation und + {P}ost ({R}eg {TP})" +}; + + + +% Ways to handle things like CCSDS's Blue Books +% journal article with a URL. However, this is not a very good approach +% because the Blue Books are not really journals and the author field has +% to be abused. +% From the June 2002 issue of "IEEE Transactions on Information Theory", +% page 1461, reference #7. +@article{IEEEexample:bluebookarticle, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + journal = "Blue Book", + number = "4", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +}; + + +% CCSDS's Blue Book handled as a book +% However, it is not a good idea to have to use the author field for +% an organization (done here because the book entry type requires an +% author field). +@book{IEEEexample:bluebookbook, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + series = "Blue Book", + number = "4", + publisher = "CCSDS", + address = "Newport Beach, CA", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +}; + +% CCSDS's Blue Book handled as a manual +% This is a much better approach, but uses the howpublished field. +@manual{IEEEexample:bluebookmanual, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +}; + + + +% CCSDS's Blue Book handled as a standard +% Probably the best approach for this particular case because the work +% is standard related. Note that IEEE does not display the address for +% standards. +@standard{IEEEexample:bluebookstandard, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + type = "Recommendation for Space Data System Standard", + number = "101.0-B-4", + month = May, + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +}; + + + + + + +% An example of a IEEEtran control entry which can change some IEEEtran.bst +% settings. An entry like this must be cited via \bstctlcite{} command +% before the first real \cite{}. The same entry key cannot be called twice +% (just like multiple \cite{} of the same entry key place only one entry +% in the bibliography.) +% The available control fields are: +% +% CTLuse_article_number +% "no" turns off the display of the number for articles. +% "yes" enables +% +% CTLuse_paper +% "no" turns off the display of the paper and type fields in inproceedings. +% "yes" enables +% +% CTLuse_forced_etal +% "no" turns off the forced use of "et al." +% "yes" enables +% +% CTLmax_names_forced_etal +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that CTLnames_show_etal (below) +% is not greater than this value! +% +% CTLnames_show_etal +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to CTLmax_names_forced_etal +% +% CTLuse_alt_spacing +% "no" turns off the alternate interword spacing for entries with URLs. +% "yes" enables +% +% CTLalt_stretch_factor +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. +% +% CTLdash_repeated_names +% "no" turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% "yes" enables +% +% CTLname_format_string +% The name format control string as explained in the BibTeX style hacking +% guide. +% IEEE style "{f.~}{vv~}{ll}{, jj}" is the default, +% +% CTL_name_latex_cmd +% A LaTeX command that each name will be fed to (e.g., "\textsc"). +% Leave empty if no special font is desired for the names. +% The default is empty. +% +% Those fields that are not to be changed can be left out or empty. +@IEEEtranBSTCTL{IEEEexample:BSTcontrol, + CTLuse_article_number = "yes", + CTLuse_paper = "yes", + CTLuse_forced_etal = "no", + CTLmax_names_forced_etal = "10", + CTLnames_show_etal = "1", + CTLuse_alt_spacing = "yes", + CTLalt_stretch_factor = "4", + CTLdash_repeated_names = "yes", + CTLname_format_string = "{f.~}{vv~}{ll}{, jj}", + CTLname_latex_cmd = "" +}; + + diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/skeleton.Rmd new file mode 100644 index 0000000..abf4546 --- /dev/null +++ b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/skeleton.Rmd @@ -0,0 +1,49 @@ +--- +title: "Illinois Thesis ECE Style" +author: "StudentFirstName StudentLastName" +department: "Informatics" +phd-thesis: true +thesis-year: 2019 +abstract: > + Here is a true to life PhD or MSc Thesis. +dedication: > + Without the loving support of my parents... +acknowledgements: > + Thank you to the wonderful committee members that provided many insights. +advisor: + - name: Advisor 1 + - name: Advisor 2 +committee-members: + - name: Professor 1FirstName 1LastName + position: Chair + - name: Professor 2FirstName 2LastName +bibliography: + - bib/thesisrefs.bib +output: + uiucthemes::thesis_pdf_ece +--- + +The question before us is ... + +# Section + +To dynamically include a table use: + +```{r my-table, echo = FALSE, fig.pos="H"} +knitr::kable(head(mtcars, 5), caption = "Sample table") +``` + +Tables can be referenced with `\@ref(tab:my-table)`, where `my-table` is +the name of the code chunk. e.g. Please see Table \@ref(tab:my-table)... + +## Subsection + +To dynamically include a table use: + +```{r my-figure, echo = FALSE, fig.cap="Sample figure", fig.pos="H"} +plot(mtcars$wt, mtcars$mpg) +``` + +Referencing a figure is done using `\@ref(fig:my-figure)`, where `my-figure` is +the name of the code chunk. e.g. Please see Figure \@ref(fig:my-figure)... + diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/template.tex b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/template.tex new file mode 100644 index 0000000..7e5db3a --- /dev/null +++ b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/template.tex @@ -0,0 +1,195 @@ +\documentclass[draftthesis,tocnosub,noragright,centerchapter,12pt]{uiucecethesis09} + +% Use draftthesis for notes and date markings on every page. Useful when you +% have multiple copies floating around. +% Use offcenter for the extra .5 inch on the left side. Needed with fullpage and fancy. +% Use mixcasechap for compatibility with hyperref package, which does NOT like all caps default +% Use edeposit for the adviser/committee on the title page. +% Use tocnosub to suppress subsection and lower entries in the TOC. +% PhD candidates use "proquest" for the proquest abstract. + +\makeatletter + +\usepackage{setspace} +%\usepackage{epsfig} % for figures +\usepackage{graphicx} % another package that works for figures +\usepackage{subfigure} % for subfigures +\usepackage{amsmath} % for math spacing +\usepackage{amssymb} % for math spacing +\usepackage{url} % Hyphenation of URLs. +\usepackage{lscape} % Useful for wide tables or figures. +\usepackage[justification=raggedright]{caption} % makes captions ragged right - thanks to Bryce Lobdell + +\usepackage{hyperref} + +% Uncomment the appropriate one of the following four lines: + +$if(phd-thesis)$ +\phdthesis +$else$ +\msthesis +$endif$ +%\otherdoctorate[abbrev]{Title of Degree} +%\othermasters[abbrev]{Title of Degree} + +\title{$title$} +\author{$author$} +\department{$department$} +\degreeyear{$thesis-year$} + +% Advisor name is required for +% - doctoral students for the ProQuest abstract +% - master's students who do not have a master's committee +\advisor{ +$for(advisor)$ +$advisor.name$ +$sep$, +$endfor$ +} + +$if(committee-members)$ +\committee{ +$for(committee-members)$ +$committee-members.name$$if(committee-members.position)$, $committee-members.position$$endif$ +$sep$\\ +$endfor$ +} +$endif$ + +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ + +$for(header-includes)$ + $header-includes$ +$endfor$ + +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% COPYRIGHT +% +%\copyrightpage +%\blankpage + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TITLE +% +\maketitle + +%\raggedright +\parindent 1em% + +\frontmatter + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% ABSTRACT +% +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$endif$ + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DEDICATION +% + +$if(dedication)$ +\begin{dedication} +$dedication$ +\end{dedication} +$endif$ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% ACKNOWLEDGMENTS +% +% Put acknowledgments in a file called "ack.tex" and it'll be inputted here. +$if(acknowledgments)$ +\begin{acknowledgments} +$acknowledgments$ +\end{acknowledgments} +$endif$ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TABLE OF CONTENTS +% +\tableofcontents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% LIST OF TABLES +% +% The List of Tables is not strictly necessary. Omitting the List of Tables will +% simplify the thesis check and reduce the number of corrections. +\listoftables + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% LIST OF FIGURES +% +% The List of Figures is not strictly necessary. Omitting the List of Figures will +% simplify the thesis check and reduce the number of corrections. +\listoffigures + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% LIST OF ABBREVIATIONS +% +% The List of Abbreviations is not strictly necessary. +\chapter{LIST OF ABBREVIATIONS} + +%\begin{symbollist*} +%\item[EPIC] Explicitly Parallel Instruction Computing +%\item[GPU] Graphics Processing Unit +%\item[VLIW] Very Long Instruction Word +%\end{symbollist*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% LIST OF SYMBOLS +% +%\begin{symbollist}[0.7in] +%\item[\tau] Time taken to drink one cup of coffee. +%\end{symbollist} + +\mainmatter + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% INSERT REAL CONTENT HERE +% + +$for(include-before)$ +$include-before$ +$endfor$ + +% Inserted by bookdown +$body$ + +$for(include-after)$ +$include-after$ +$endfor$ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% APPENDIX +% +\appendix +%\include{apx} + +\backmatter + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% BIBLIOGRAPHY +% +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$IEEE_ECE$endif$} +% Put references in BibTeX format in thesisrefs.bib. + +$if(bibliography)$ +\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +$endif$ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% AUTHOR'S BIOGRAPHY +% As of 10/03/2011, Author's Biography or Vita no longer accepted by Grad College + +\end{document} diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/uiucecethesis09.cls b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/uiucecethesis09.cls new file mode 100644 index 0000000..5af781a --- /dev/null +++ b/inst/rmarkdown/templates/thesis_pdf_ece/skeleton/uiucecethesis09.cls @@ -0,0 +1,661 @@ +%% +%% This is file `uiucecethesis09.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% uiucecethesis09.dtx (with options: `class') +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% WARNING: This version is modified WITHOUT change to the .dtx file +%%% 3.09 option fullpagesingle for 1" margins without 1.5 line spacing +%%% 3.10 option littlecaptions for \scriptsize captions +%%% Jerome Colburn 6/23/2010 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from uiucecethesis09.cls. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file uiucecethesis09.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +\def\fileversion{ECE3.10} \def\filedate{2010/06/23} +%%% 3.08 fix more obvious title page bug 8/27/2009 +%%% 3.07 fix nonobvious title page bug 8/7/2009 +%%% 3.06 fix obvious title page bug 8/7/2009 +%%% 3.05 fix copyright page text 7/16/2009 +%%% 3.04 fix neglected change in "THESIS" block position 7/13/2009 +%%% 3.03 make the largecaps option work 7/10/2009 +%%% 3.02 make the title page top margin correct 7/08/2009 +%% Package and Class "uiucecethesis09" for use with LaTeX2e. +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{uiucecethesis09} + [\filedate\ \fileversion\ UIUC Thesis (PJC)] + +\RequirePackage{setspace} +\RequirePackage{calc} %% 3.07 +\expandafter\ifx\csname @ifundefined\endcsname\relax + \def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\fi +\@ifundefined{MakeUppercase}{\let\MakeUppercase=\uppercase}{} +\newif\if@thesisdraft \@thesisdraftfalse +\newif\if@thesisfancy \@thesisfancyfalse +\newif\if@fullpagesingle \@fullpagesinglefalse %% 3.09 +\newif\if@fullpage \@fullpagefalse +\newif\if@on@inchm@rgin \@on@inchm@rginfalse %% 3.09 +\newif\if@largecaps \@largecapsfalse +\newif\if@proquest \@proquestfalse +\newif\if@edeposit \@edepositfalse +\newif\if@thesisoffcenter \@thesisoffcenterfalse +\newif\if@centerchapter \@centerchapterfalse +\newif\if@doctoral\@doctoralfalse +\newif\if@c@mmitt@@\@c@mmitt@@false +\newif\if@t@cn@sub\@t@cn@subfalse +\newif\if@r@gright\@r@grighttrue +\newif\if@mixc@sech@p \@mixc@sech@pfalse +\newif\if@littlecaptions\@littlecaptionsfalse %% 3.10 +\newdimen\thesis@parindent +\DeclareOption{draftthesis}{\@thesisdrafttrue} +\DeclareOption{fancy}{\@thesisfancytrue} +%%%%\DeclareOption{fullpage}{\@fullpagetrue} +\DeclareOption{fullpage}{\@fullpagetrue\@fullpagesinglefalse} %% 3.09 +\DeclareOption{fullpagesingle}{\@fullpagesingletrue\@fullpagefalse} %% 3.09 +\DeclareOption{littlecaptions}{\@littlecaptionstrue} %% 3.10 +\DeclareOption{proquest}{\@proquesttrue} +\DeclareOption{toclabels}{\AtBeginDocument{\toclabels}} +\DeclareOption{tocnosub}{\@t@cn@subtrue} +\DeclareOption{edeposit}{\@edeposittrue} +\DeclareOption{offcenter}{\@thesisoffcentertrue} +\DeclareOption{centerchapter}{\@centerchaptertrue} +\DeclareOption{mixcasechap}{\@mixc@sech@ptrue} +\DeclareOption{noragright}{\@r@grightfalse} +\DeclareOption{largecaps}{\@largecapstrue} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} +\PassOptionsToClass{letterpaper,oneside}{book} +\ProcessOptions +\LoadClass{book} +\if@proquest + \nofiles % don't overwrite the .aux files + \def\makeindex{} + \@thesisfancyfalse + \@fullpagetrue + \@fullpagesinglefalse %% 3.09 +\fi +\if@thesisdraft + \newcount\timehh\newcount\timemm + \timehh=\time \divide\timehh by 60 + \timemm=\time \count255=\timehh \multiply\count255 by -60 + \advance\timemm by \count255 + \def\draftheader{\slshape Draft of \today\ at + \ifnum\timehh<10 0\fi\number\timehh\,:\,\ifnum\timemm<10 0\fi\number\timemm}% +\fi +\newcommand{\toclabels}{% + \addtocontents{toc}{\vspace*{-\baselineskip}\hfill Page\endgraf}% + \addtocontents{lof}{\vspace*{-\baselineskip}~Figure\hfill Page\endgraf}% + \addtocontents{lot}{\vspace*{-\baselineskip}~Table\hfill Page\endgraf}} +\def\@mkuptitle#1{\gdef\@Utitle{#1}} +\def\title#1{\gdef\@title{#1}\MakeUppercase{\protect\@mkuptitle{#1}}} +\def\@mkupauthor#1{\gdef\@Uauthor{#1}} +\def\author#1{\gdef\@author{#1}\MakeUppercase{\protect\@mkupauthor{#1}}} +\newcommand{\otherdoctorate}[2]{\def\@degree{#1} + \def\degree{#2} + \def\@thesisname{DISSERTATION} + \@doctoraltrue + } +\newcommand{\othermasters}[2]{\def\@degree{#1} + \def\degree{#2} + \def\@thesisname{THESIS} + \@doctoralfalse + } +\newcommand\phdthesis{\otherdoctorate{Doctor of Philosophy}{Ph.D.} + } +\newcommand\msthesis{\othermasters{Master of Science}{M.S.} + } +\def\degreeyear#1{\def\@degreeyear{#1}} +\def\department#1{\def\@dept{#1}} +\def\college#1{\def\@college{#1}} +\def\schools#1{\def\@schools{#1}} +\newcommand{\committee}[1]{\gdef\@committee{#1}\@c@mmitt@@true} +\gdef\@committee{% + \if@doctoral + \ClassError{uiucecethesis09}{Committee needed for doctorates}% + {Use \protect\committee\space with members separated by \protect\\'s.} + \fi} +\newcommand*{\advisor}[1]{\gdef\@advisor{#1}} +\newcommand*{\adviser}[1]{\gdef\@advisor{#1}} +\gdef\@advisor{% + \if@doctoral{ + \ClassError{uiucecethesis09}{Adviser needed for ProQuest abstract}% + }\else{ + \if@c@mmitt@@\else + \ClassError{uiucecethesis09}{Adviser must be specified}% + \fi} +\fi} +\newcommand*{\volume}[1]{\gdef\thesis@volume{VOLUME~#1}} +\newcommand*{\thesis@volume}{} +%%% \def\copyrightnotice{\copyright~\@degreeyear~by \@author. All rights reserved.} % 3.05 +\def\copyrightnotice{\copyright~\@degreeyear~\@author} +\newif\if@thesiscrpage \@thesiscrpagetrue +\let\nocopyrightpage\@thesiscrpagefalse +\if@thesisdraft\nocopyrightpage\fi +\msthesis +\department{Electrical and Computer Engineering} +\college{Graduate College} +\def\@schools{} +\def\@degreeyear{\number\year} +\newlength{\degree@dept@max} %% v 3.07 +\newlength{\degree@dept@wid} +\newsavebox{\degree@dept@test} %% ^ 3.07 +\renewcommand\maketitle{ + \if@thesiscrpage + \newpage + \thispagestyle{empty} + \null\vfill + \centerline{\copyrightnotice}% + \vskip 3ex % skip to visually center copyright notice + \vfill + \fi + \newpage + \thispagestyle{empty}% + \enlargethispage{1in}% + \begingroup + \def\baselinestretch{1} + \ifnum \@ptsize>1 %% 3.07 + \@normalsize + \newcommand{\thesis@small}{\small} + \else + \large + \newcommand{\thesis@small}{\@normalsize} + \fi + \sbox{\degree@dept@test}{Doctor of PhilosophElectrical and Computer Engineerin} + \setlength{\degree@dept@max}{\wd\degree@dept@test} + \sbox{\degree@dept@test}{\@degree\@dept} + \setlength{\degree@dept@wid}{\wd\degree@dept@test} + \ifdim\degree@dept@wid>\degree@dept@max + \thesis@small + \fi + \headheight=0pt \headsep=0pt + \topmargin=1in %% had been 1in if edeposit, 0in otherwise + \@tempdima=\paperwidth + \advance\@tempdima by -\textwidth + \divide\@tempdima by 2 + \advance\@tempdima by -1in + \oddsidemargin=\@tempdima + \let\evensidemargin=\oddsidemargin + \newdimen\thesis@dim + \thesis@dim=1.5in %% ECE: edit to adjust margin (SR) + \if@largecaps + \def\lc@selectfont{\large\selectfont}% +%%% \def\lc@selectfont{\fontshape{lc}\selectfont}% + \else + \def\lc@selectfont{}% + \fi + \begin{center} + \vbox to \thesis@dim{% + {\lc@selectfont\@Utitle} + \if@thesisdraft + \\[12pt] + \draftheader + \fi + \vfil}% + \vbox to 2.5in{% +%%% \vbox to 2in{% wrong, corrected rev. 3.04 +%%% {\lc@selectfont BY}\\[12pt] + BY\linebreak\linebreak %% 3.06 + {\lc@selectfont\@Uauthor}\\[12pt] + \begin{tabular}{c}\@schools\end{tabular}}%\vfil}% + \vbox to -1.0in{\thesis@volume\vfil} %% ECE: edit to adjust title page spacing (SR) + \vskip-0.72in %% ECE: edit to adjust title page spacing {SR) + \vbox to 2.5in{% +%%% {\lc@selectfont \@thesisname}\\[12pt] + \@thesisname\\[12pt] % [12pt] added back 3.08 + Submitted in partial fulfillment of the requirements\\ + for the degree of \@degree\ in \@dept\\ + in the \@college\ of the\\ + University of Illinois at Urbana-Champaign, \@degreeyear}%\vfil}% + \vskip-0.60in %% ECE: edit to adjust title page spacing (SR) + Urbana, Illinois + \end{center} %% ECE: edit (SR) + \vskip 0.17in %% ECE: edit to adjust title page spacing (SR) + \vbox to 2.1in{ + \if@doctoral + \hspace*{-0.5in}Doctoral Committee:\\[12pt] + \begin{tabular}{l}\@committee\end{tabular}%\vfil} + \else + \if@c@mmitt@@ + \hspace*{-0.5in}Master's Committee:\\[12pt] + \begin{tabular}{l}\@committee\end{tabular}%\vfil} + \else + \hspace*{-0.5in}Adviser:\\[12pt] + \@advisor%\vfil} + \fi + \fi} + \newpage + \endgroup +} +\let\thesis@frontmatter=\frontmatter +\def\frontmatter{% + \thesis@frontmatter + \setcounter{page}{2} + \if@r@gright + \thesis@parindent\parindent + \raggedright + \parindent\thesis@parindent + \fi + } +\renewcommand\contentsname{\if@mixc@sech@p Table of Contents\else TABLE OF CONTENTS\fi} %% SR, JSC +\renewcommand*\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus 0.2em \@minus 0.2em + \setlength\@tempdima{1.5em} + \begingroup + \leftskip \z@ \rightskip \@tocrmarg \parfillskip -\rightskip + \parindent \z@ + \leavevmode %%\bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th\mkern\@dotsep mu\hbox{.}\mkern\@dotsep mu$} + \hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +\if@t@cn@sub +\renewcommand\l@subsection{\@gobbletwo} +\renewcommand\l@subsubsection{\@gobbletwo} +\fi +\def\listtablename{List of Tables} +\def\listfigurename{List of Figures} +\let\thesis@tableofcontents=\tableofcontents +\def\tableofcontents{{\singlespacing\thesis@tableofcontents}} +\let\thesis@listoftables=\listoftables +\let\thesis@listtablename=\listtablename % JSC +\def\listoftables{\newpage% +\def\listtablename{\if@mixc@sech@p\thesis@listtablename +\else\texorpdfstring{\MakeUppercase{\thesis@listtablename}}{}\fi} %% JSC + \addcontentsline{toc}{chapter}{\listtablename}% + {\singlespacing\thesis@listoftables}} +\let\thesis@listoffigures=\listoffigures +\let\thesis@listfigurename=\listfigurename % JSC +\def\listoffigures{\newpage% +\def\listfigurename{\if@mixc@sech@p\thesis@listfigurename +\else\texorpdfstring{\MakeUppercase{\thesis@listfigurename}}{}\fi} %% JSC + \addcontentsline{toc}{chapter}{\listfigurename}% + {\singlespacing\thesis@listoffigures}} +\def\abstractname{Abstract} %% all caps (SR) +\if@proquest + \def\maketitle{} + \newenvironment{abstract}{% + \newpage + \pagestyle{empty} + \setcounter{page}{1} + \begin{singlespace}\begin{center} + \@Utitle\\[\baselineskip] + \@author, \degree\\ + Department of \@dept\\ + University of Illinois at Urbana-Champaign, \@degreeyear\\ + \@advisor, Adviser\\[\baselineskip] + \end{center}\end{singlespace}\par\noindent\ignorespaces + }{ + \newpage + \aftergroup\enddocument + \aftergroup\endinput + } +\else + \newenvironment{abstract}{\chapter*{\abstractname}}{} +\fi +\newenvironment{dedication}{ + \newpage + \leavevmode\vfill + \begin{center} + \itshape + }{ + \end{center} + \vskip 3ex + \vfill + \newpage + } +%added acknowledgments environment 11/23/2009 by Brian Johnson +\def\acknowledgmentsname{Acknowledgments} %%all caps (SR) +\newenvironment{acknowledgments}{\chapter*{\acknowledgmentsname}}{} +\newpage +\newenvironment*{symbollist}[1][1in]{ + \begin{list}{}{\singlespacing + \setlength{\leftmargin}{#1} + \setlength{\labelwidth}{#1} + \addtolength{\labelwidth}{-\labelsep} + \setlength{\topsep}{0in}}% + \def\makelabel##1{\hfil##1\hfil}% + }{ + \end{list}} +\newenvironment*{symbollist*}[1][1in]{ + \begin{symbollist}[#1] + \def\makelabel##1{##1\hfil}} + {\end{symbollist}} +\if@thesisfancy + \font\cminch=cminch at 60pt + \newcommand\chapternumberfont{\cminch} +\else + \newcommand\chapternumberfont{\LARGE} %% (SR) +\fi +\newcommand\chaptertitlefont{\LARGE} %% (SR) +\def\@chapter[#1]#2{% +\def\c@pch@ptitl@{\if@mixc@sech@p#1\else\texorpdfstring{\MakeUppercase{#1}}{}\fi} %% (JSC) + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \if@thesisfancy + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\c@pch@ptitl@}% + \else + \addcontentsline{toc}{chapter}% + {\@chapapp\ \thechapter\quad \c@pch@ptitl@}% + \fi + \else + \addcontentsline{toc}{chapter}{\c@pch@ptitl@}% + \fi + \else + \addcontentsline{toc}{chapter}{\c@pch@ptitl@}% + \fi + \chaptermark{\c@pch@ptitl@}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\newskip\thesis@chapskip +\AtBeginDocument{% + \newdimen\chapternumberheight + \begingroup + \chapternumberfont + \setbox255=\hbox{A} + \if@thesisfancy + \global\thesis@chapskip=\ht255 + \else + \global\thesis@chapskip=\baselineskip + \fi + \dimen255=\ht255 + \chaptertitlefont + \setbox255=\hbox{A} + \advance\dimen255 by \ht255 + \if@thesisfancy + \global\advance\thesis@chapskip by -\ht255 + \global\divide\thesis@chapskip by 2 + \global\advance\thesis@chapskip by 10\p@ + \else + \global\advance\thesis@chapskip by 20\p@ + \fi + \divide\dimen255 by 2 + \global\chapternumberheight=\dimen255 + \endgroup} +\newlength{\chaptertitleheight} +\if@thesisfancy + \setlength{\chaptertitleheight}{1.5in} +\else + \setlength{\chaptertitleheight}{1.85in} +\fi +\def\@makechapterhead#1{% + \def\capchaptitle{\if@mixc@sech@p#1\else\MakeUppercase{#1}\fi} %% (JSC) + \vbox to \chaptertitleheight{ + \def\baselinestretch{1}\@normalsize + \parindent \z@ \raggedright \normalfont + \if@centerchapter + \centering + \fi + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \thesis@chapskip=\z@ + \if@thesisfancy + \vspace*{10\p@}% + \leavevmode\llap{\vbox to \chapternumberheight{\hbox{% + \chapternumberfont\thechapter\,}\vss}}% + \else + {\chapternumberfont \@chapapp\space \thechapter} + \par\nobreak + \vskip 20\p@ + \fi + \fi + \fi + \interlinepenalty\@M + \vspace*{\thesis@chapskip}% + \chaptertitlefont \capchaptitle %% JSC + \vfil + }% + \par\nobreak% + } +\def\@makeschapterhead#1{% + \def\capchaptitle{\if@mixc@sech@p#1\else\MakeUppercase{#1}\fi} %% (JSC) + \vbox to \chaptertitleheight{ + \def\baselinestretch{1}\@normalsize + \parindent \z@ \raggedright \normalfont + \if@centerchapter + \centering + \fi + \interlinepenalty\@M + \vspace*{\thesis@chapskip} + \chaptertitlefont \capchaptitle %% JSC + \vfil + }% + \par\nobreak% + } +\newcommand{\sectiontitlefont}{\Large} %% (SR) +\newcommand{\subsectiontitlefont}{\large} %% (SR) +\newcommand{\subsubsectiontitlefont}{\normalsize} %% (SR) +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\singlespacing\raggedright\normalfont\sectiontitlefont}} %% (SR) +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\singlespacing\raggedright\normalfont\subsectiontitlefont}} %% (SR) +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\singlespacing\raggedright\normalfont\subsubsectiontitlefont}} %% (SR) +\let\thesis@appendix\appendix +\renewcommand\appendix{\thesis@appendix\@ifstar{\gdef\thechapter{}}{}} +\renewcommand\bibname{\if@mixc@sech@p References\else REFERENCES\fi} %% JSC +\AtBeginDocument{\let\thesis@thebib\thebibliography + \let\thesis@endbib\endthebibliography + \def\thebibliography{\begingroup\singlespacing% + \chapter{\bibname}% + \let\chapter\@gobbletwo% + \thesis@thebib} + \def\endthebibliography{\thesis@endbib\endgroup}} +\let\thesis@theindex=\theindex +\def\theindex{\addcontentsline{toc}{chapter}{\indexname}% + \begingroup\singlespacing\thesis@theindex} +\let\thesis@endtheindex=\endtheindex +\def\endtheindex{\thesis@endtheindex\endgroup} +\topmargin=0pt +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep +\textheight 8.9in +\if@fullpage + \@on@inchm@rgintrue %% v 3.09 +\else\if@fullpagesingle + \@on@inchm@rgintrue + \else + \@on@inchm@rginfalse + \fi +\fi +\if@on@inchm@rgin %% ^ 3.09 + \setlength{\textwidth}{\paperwidth} + \if@thesisoffcenter + \addtolength{\textwidth}{-2.75in} + \else + \addtolength{\textwidth}{-2in} + \fi + \@settopoint\textwidth +\fi +\setlength{\@tempdima}{\paperwidth} +\addtolength{\@tempdima}{-\textwidth} +\setlength{\oddsidemargin}{.5\@tempdima} +\addtolength{\oddsidemargin}{-1in} +\if@thesisoffcenter + \addtolength{\oddsidemargin}{0.25in} + \reversemarginpar +\fi +\setlength{\marginparwidth}{\oddsidemargin} +\addtolength{\marginparwidth}{1in} +\addtolength{\marginparwidth}{-\marginparsep} +\addtolength{\marginparwidth}{-24pt} +\@settopoint\oddsidemargin +\@settopoint\marginparwidth +\setlength{\evensidemargin}{\oddsidemargin} +\if@thesisdraft + \newcommand{\note}[1]{\marginpar{\def\baselinestretch{1}\small\raggedright #1}} +\else + \newcommand{\note}[1]{} + \let\thesis@marginpar\marginpar + \def\marginpar{% + \ClassWarning{uiucecethesis09}{Margin paragraphs fall outside the allowed margins\MessageBreak + for UIUC Theses, use \protect\note\space instead of \protect\marginpar.}% + \thesis@marginpar} +\fi +\def\ps@plain{% + \let\@mkboth\@gobbletwo + \if@thesisdraft + \def\@oddhead{\draftheader\hfil} + \else + \let\@oddhead\@empty + \fi + \let\@evenhead\@oddhead + \def\@oddfoot{\reset@font\hfil\thepage\hfil}% + \let\@evenfoot\@oddfoot +} +\if@twoside + \def\ps@headings{% + \if@thesisdraft + \def\@oddhead{\draftheader\hfil\slshape\rightmark} + \def\@evenhead{\slshape\leftmark\hfil\draftheader} + \else + \def\@oddhead{\hfil\slshape\rightmark} + \def\@evenhead{\slshape\leftmark\hfil} + \fi + \def\@oddfoot{\reset@font\hfil\thepage\hfil}% + \let\@evenfoot\@oddfoot + \let\@mkboth\markboth + \if@thesisdraft + \def\chaptermark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter% + \fi + \fi}}{}} + \else + \def\chaptermark##1{% + \def\@chaphead{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \if@thesisfancy + \thechapter.~~% + \else + \@chapapp\ \thechapter.~~% + \fi + \fi + \fi + ##1}}% + \markboth{\@chaphead}{\@chaphead}} + \fi + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection. \ % + \fi + ##1}}}} +\else + \def\ps@headings{% + \if@thesisdraft + \def\@oddhead{\draftheader\hfil\slshape\rightmark} + \else + \def\@oddhead{\hfil\slshape\rightmark\hfil} + \fi + \let\@evenhead\@oddhead + \def\@oddfoot{\reset@font\hfil\thepage\hfil}% + \let\@evenfoot\@oddfoot + \let\@mkboth\markboth + \if@thesisdraft + \def\chaptermark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter% + \fi + \fi}}} + \else + \def\chaptermark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \if@thesisfancy + \thechapter.~~% + \else + \@chapapp\ \thechapter.~~% + \fi + \fi + \fi + ##1}}} + \fi + } +\fi +\pagestyle{plain} +\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \@mkboth{}{} + \thispagestyle{plain} + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\renewcommand\chaptername{\if@mixc@sech@p Chapter\else CHAPTER\fi} +\renewcommand\appendixname{\if@mixc@sech@p Appendix\else APPENDIX\fi} +\newcommand\aubioname{Author's Biography} %% instead of Vita for ECE +\newcommand\aubio{ + \chapter{\aubioname}% +} +\newcommand\vitaname{Vita} +\newcommand\vita{ + \chapter{\vitaname}% +} +\def\thesisspacing{\if@fullpage\setstretch{1.5}\else\onehalfspacing\fi} +\pagenumbering{roman} +\AtBeginDocument{\thesisspacing} +\def\preliminary{\frontmatter} +\let\endpreliminary=\relax +\def\thesis{\mainmatter} +\let\endthesis=\relax +\renewcommand{\@tocrmarg}{4.00em} +\if@r@gright + \if@littlecaptions %% v 3.10 + \usepackage[justification=raggedright,font=scriptsize]{caption} + \else + \usepackage[justification=raggedright]{caption} + \fi +\else + \if@littlecaptions + \usepackage[font=scriptsize]{caption} + \fi %% ^ 3.10 +\fi +\newcommand{\ignore}[1]{{}} +\newcommand{\extraline}{\if@r@gright\linebreak\else\\\fi} +\endinput +%% +%% End of file `uiucecethesis09.cls'. diff --git a/inst/rmarkdown/templates/thesis_pdf_ece/template.yaml b/inst/rmarkdown/templates/thesis_pdf_ece/template.yaml new file mode 100644 index 0000000..a4880ad --- /dev/null +++ b/inst/rmarkdown/templates/thesis_pdf_ece/template.yaml @@ -0,0 +1,3 @@ +name: Illinois Thesis ECE Style +description: > + Template for creating an Illinois styled thesis under ECE styling. diff --git a/man/beamer_illinois.Rd b/man/beamer_illinois.Rd index 67f7839..c3e3ca7 100644 --- a/man/beamer_illinois.Rd +++ b/man/beamer_illinois.Rd @@ -29,7 +29,7 @@ individual bullet you can precede it with \code{>}. For example: \item{fig_width}{Default width (in inches) for figures} -\item{fig_height}{Default width (in inches) for figures} +\item{fig_height}{Default height (in inches) for figures} \item{fig_crop}{\code{TRUE} to automatically apply the \code{pdfcrop} utility (if available) to pdf figures} diff --git a/man/beamer_mil.Rd b/man/beamer_mil.Rd index b5a61d7..6f4decc 100755 --- a/man/beamer_mil.Rd +++ b/man/beamer_mil.Rd @@ -29,7 +29,7 @@ individual bullet you can precede it with \code{>}. For example: \item{fig_width}{Default width (in inches) for figures} -\item{fig_height}{Default width (in inches) for figures} +\item{fig_height}{Default height (in inches) for figures} \item{fig_crop}{\code{TRUE} to automatically apply the \code{pdfcrop} utility (if available) to pdf figures} diff --git a/man/beamer_orange.Rd b/man/beamer_orange.Rd index 1c0bb72..39cfbb4 100644 --- a/man/beamer_orange.Rd +++ b/man/beamer_orange.Rd @@ -29,7 +29,7 @@ individual bullet you can precede it with \code{>}. For example: \item{fig_width}{Default width (in inches) for figures} -\item{fig_height}{Default width (in inches) for figures} +\item{fig_height}{Default height (in inches) for figures} \item{fig_crop}{\code{TRUE} to automatically apply the \code{pdfcrop} utility (if available) to pdf figures} diff --git a/man/thesis_pdf_ece.Rd b/man/thesis_pdf_ece.Rd new file mode 100644 index 0000000..155765c --- /dev/null +++ b/man/thesis_pdf_ece.Rd @@ -0,0 +1,42 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/thesis-templates.R +\name{thesis_pdf_ece} +\alias{thesis_pdf_ece} +\title{Creates an R Markdown PDF Thesis document in the Style of the ECE Department +at UIUC} +\usage{ +thesis_pdf_ece(toc_depth = 3, highlight = "default", ...) +} +\arguments{ +\item{toc_depth}{Depth shown in table of contents. Must be a positive integer.} + +\item{highlight}{Syntax highlighting style. Supported styles include: +"default", "tango", "pygments", "kate", "monochrome", +"espresso", "zenburn", and "haddock". Pass \code{NULL} +to prevent syntax highlighting.} + +\item{...}{Additional parameters passed to \code{\link[bookdown:pdf_book]{bookdown::pdf_book()}}.} +} +\value{ +A modified \code{pdf_document} that uses the ECE Department style at UIUC. +} +\description{ +Processes the R Markdown file using the appropriate ECE PDF template. +} +\examples{ +\dontrun{ + output: uiucthemes::thesis_pdf_ece +} +} +\references{ +\itemize{ +\item \href{https://github.com/ismayc/thesisdown}{thesisdown::thesis_pdf} by Chester Ismay +\itemize{ +\item The \emph{R} function is largely based off of this format. +} +\item \href{https://wiki.illinois.edu/wiki/display/ECEThesisReview/LaTeX+Resources}{ECE Department Thesis LaTeX Template} +\itemize{ +\item The \code{template.tex} uses the shell. +} +} +} diff --git a/man/uiucthemes-package.Rd b/man/uiucthemes-package.Rd index 00ff491..7840b65 100644 --- a/man/uiucthemes-package.Rd +++ b/man/uiucthemes-package.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/uiucthemes.R +% Please edit documentation in R/uiucthemes-package.R \docType{package} \name{uiucthemes-package} \alias{uiucthemes} @@ -10,9 +10,6 @@ A set of custom 'R' 'Markdown' templates for documents and presentations with the University of Illinois at Urbana-Champaign (UIUC) color scheme and identity standards. } -\details{ -Trial run on RMarkdown templates -} \seealso{ Useful links: \itemize{ @@ -29,7 +26,8 @@ Other contributors: \itemize{ \item Steven Andrew Culpepper \email{sculpepp@illinois.edu} (Provided the Minimal Orange Beamer Theme) [contributor] \item David Dalpiaz \email{dalpiaz2@illinois.edu} (Collaborated on the LaTeX Journal Theme) [contributor] - \item Jose Luis Rodriguez \email{jrodriguezorjuela@luc.edu} (Provided the Market Information Lab (MIL) Beamer Theme) [contributor] + \item Jose Luis Rodriguez \email{jlroo@illinois.edu} (Provided the Market Information Lab (MIL) Beamer Theme) [contributor] } } +\keyword{internal}