Quellcode durchsuchen

Initial CV draft

Ryan C. Thompson vor 5 Jahren
Ursprung
Commit
997ff2d4fc
9 geänderte Dateien mit 2692 neuen und 8 gelöschten Zeilen
  1. 6 0
      .gitignore
  2. 84 6
      Snakefile
  3. 2 1
      citations.bib
  4. BIN
      examples/Salomon/Advanced RNA-seq Analysis.pdf
  5. 99 0
      mypubs.bib
  6. 22 0
      myunpubs.bib
  7. 1586 0
      plainurlyr-rev.bst
  8. 892 0
      ryan_thompson_cv.lyx
  9. 1 1
      xetexCV.cls

+ 6 - 0
.gitignore

@@ -2,4 +2,10 @@
 .doit*
 # Snakemake cache
 .snakemake
+# LyX temp files
 *.emergency
+# Intermediate bib files
+*-PROCESSED.bib
+# Misc files to ignore
+/LaMere CV Example.pdf
+/advcv.pdf

+ 84 - 6
Snakefile

@@ -4,12 +4,14 @@ import locale
 import os.path
 import regex
 import urllib.parse
+import bibtexparser
 
-from collections import Iterable, Mapping  # in Python 3 use from collections.abc
+from collections.abc import Iterable, Mapping
 from distutils.spawn import find_executable
 from fnmatch import fnmatch
 from subprocess import check_output, check_call
 from tempfile import NamedTemporaryFile
+from bibtexparser.bibdatabase import BibDatabase
 
 try:
     from os import scandir, walk
@@ -103,11 +105,27 @@ account.
                 yield s.group(2)
 
 def lyx_bib_deps(lyxfile):
-    '''Return an iterator over bib files referenced by a Lyx file.'''
-    # Cheat: Assume every bib file in the folder is a dependency of
-    # any LaTeX operation. Doing this properly is tricky without
-    # implementing the full bibfile-finding logic of LyX/LaTeX.
-    return glob_recursive('*.bib')
+    '''Return an iterator over all bib files referenced by a Lyx file.
+
+    This will only return the names of existing files, so it will be
+    unreliable in the case of an auto-generated bib file.
+
+    '''
+    try:
+        with open(lyxfile) as f:
+            lyx_text = f.read()
+        bib_names = []
+        for m in regex.finditer('bibfiles "(.*?)"', lyx_text):
+            bib_names.extend(m.group(1).split(','))
+        # Unfortunately LyX doesn't indicate which bib names refer to
+        # files in the current directory and which don't. Currently that's
+        # not a problem for me since all my refs are in bib files in the
+        # current directory.
+        for bn in bib_names:
+            bib_path = bn + '.bib'
+            yield bib_path
+    except FileNotFoundError:
+        pass
 
 def lyx_hrefs(lyxfile):
     '''Return an iterator over hrefs in a LyX file.'''
@@ -163,6 +181,25 @@ rule create_resume_html:
             shell('{LYXPATH:q} --export-to xhtml {tempf.name:q} {input.lyxfile:q}')
             shell('''cat {tempf.name:q} | perl -lape 's[<span class="flex_cv_image">(.*?)</span>][<span class="flex_cv_image"><img src="$1" width="100"></span>]g' > {output.html:q}''')
 
+rule create_cv_pdf:
+    input: lyxfile='ryan_thompson_cv.lyx',
+           bibfiles=list(lyx_bib_deps('ryan_thompson_cv.lyx')),
+           example_files=list(resume_example_deps('ryan_thompson_cv.lyx')),
+           headshot='headshot-crop.png',
+    output: pdf='ryan_thompson_cv.pdf'
+    shell: '{LYXPATH:q} --export-to pdf4 {output.pdf:q} {input.lyxfile:q}'
+
+rule create_cv_html:
+    input: lyxfile='ryan_thompson_cv.lyx',
+           bibfiles=list(lyx_bib_deps('ryan_thompson_cv.lyx')),
+           example_files=list(resume_example_deps('ryan_thompson_cv.lyx')),
+           headshot='headshot-crop.png',
+    output: html='ryan_thompson_cv.html'
+    run:
+        with NamedTemporaryFile() as tempf:
+            shell('{LYXPATH:q} --export-to xhtml {tempf.name:q} {input.lyxfile:q}')
+            shell('''cat {tempf.name:q} | perl -lape 's[<span class="flex_cv_image">(.*?)</span>][<span class="flex_cv_image"><img src="$1" width="100"></span>]g' > {output.html:q}''')
+
 rule link_resume_to_index_html:
     input: 'ryan_thompson_resume.html'
     output: 'index.html'
@@ -177,3 +214,44 @@ rule R_to_html:
     input: '{dirname}/{basename,[^/]+}.R'
     output: '{dirname}/{basename}.R.html'
     shell: 'pygmentize -f html -O full -l R -o {output:q} {input:q}'
+
+rule process_bib:
+    '''Preprocess bib file for LaTeX.
+
+For entries with a DOI, all URLs are stripped, since the DOI already
+provides a clickable link. For entries with no DOI, all but one URL is
+discarded, since LyX can't handle entries with multiple URLs. The
+shortest URL is kept.'''
+    input: '{basename}.bib'
+    output: '{basename,.*(?<!-PROCESSED)}-PROCESSED.bib'
+    run:
+        with open(input[0]) as infile:
+            bib_db = bibtexparser.load(infile)
+        entries = bib_db.entries
+        for entry in entries:
+            # Keep DOI or exactly one URL
+            if 'doi' in entry:
+                try:
+                    del entry['url']
+                except KeyError:
+                    pass
+            else:
+                try:
+                    entry_urls = regex.split('\\s+', entry['url'])
+                    shortest_url = min(entry_urls, key=len)
+                    # Need to fix e.g. 'http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=55329{\\&}tool=pmcentrez{\\&}rendertype=abstract'
+                    shortest_url = re.sub('\\{\\\\?(.)\\}', '\\1', shortest_url)
+                    entry['url'] = shortest_url
+                except KeyError:
+                    pass
+            # Boldface my name
+            authors = regex.split("\\s+and\\s+",entry['author'])
+            for i in range(len(authors)):
+                m = regex.search('^Thompson,\\s+(R.*)$', authors[i])
+                if m:
+                    authors[i] = f"\\textbf{{{m.group(1)} Thompson}}"
+            entry['author'] = ' and '.join(authors)
+        new_db = BibDatabase()
+        new_db.entries = entries
+        with open(output[0], 'w') as outfile:
+            bibtexparser.dump(new_db, outfile)

Datei-Diff unterdrückt, da er zu groß ist
+ 2 - 1
citations.bib


BIN
examples/Salomon/Advanced RNA-seq Analysis.pdf


+ 99 - 0
mypubs.bib

@@ -0,0 +1,99 @@
+@article{Kurian2017,
+abstract = {We performed orthogonal technology comparisons of concurrent peripheral blood and biopsy tissue samples from 69 kidney transplant recipients who underwent comprehensive algorithm-driven clinical phenotyping. The sample cohort included patients with normal protocol biopsies and stable transplant (sTx) function (n = 25), subclinical acute rejection (subAR, n = 23), and clinical acute rejection (cAR, n = 21). Comparisons between microarray and RNA sequencing (RNA-seq) signatures were performed and demonstrated a strong correlation between the blood and tissue compartments for both technology platforms. A number of shared differentially expressed genes and pathways between subAR and cAR in both platforms strongly suggest that these two clinical phenotypes form a continuum of alloimmune activation. SubAR is associated with fewer or less expressed genes than cAR in blood, whereas in biopsy tissues, this clinical phenotype demonstrates a more robust molecular signature for both platforms. The discovery work done in this study confirms a clear ability to detect gene expression profiles for sTx, subAR, and cAR in both blood and biopsy tissue, yielding equivalent predictive performance that is agnostic to both technology and platform. Our data also provide strong biological insights into the molecular mechanisms underlying these signatures, underscoring their logistical potential as molecular diagnostics to improve clinical outcomes following kidney transplantation.},
+author = {Kurian, S. M. and Velazquez, E. and Thompson, R. and Whisenant, T. and Rose, S. and Riley, N. and Harrison, F. and Gelbart, T. and Friedewald, J. J. and Charette, J. and Brietigam, S. and Peysakhovich, J. and First, M. R. and Abecassis, M. M. and Salomon, D. R.},
+doi = {10.1111/ajt.14224},
+file = {:Users/ryan/Documents/Mendeley Desktop/Kurian et al. - 2017 - Orthogonal Comparison of Molecular Signatures of Kidney Transplants With Subclinical and Clinical Acute Rejection.pdf:pdf},
+issn = {16006135},
+journal = {American Journal of Transplantation},
+keywords = {clinical research/practice,diagnostic techniques and imaging,genomics,kidney (allograft) function/dysfunction,kidney transplantation/nephrology,microarray/gene array,rejection: acute,translational research/science},
+month = {aug},
+number = {8},
+pages = {2103--2116},
+title = {{Orthogonal Comparison of Molecular Signatures of Kidney Transplants With Subclinical and Clinical Acute Rejection: Equivalent Performance Is Agnostic to Both Technology and Platform}},
+url = {http://doi.wiley.com/10.1111/ajt.14224},
+volume = {17},
+year = {2017}
+}
+@article{LaMere2017,
+abstract = {The changes to the epigenetic landscape in response to Ag during CD4 T cell activation have not been well characterized. Although CD4 T cell subsets have been mapped globally for numerous epigenetic marks, little has been done to study their dynamics early after activation. We have studied changes to promoter H3K27me3 during activation of human naive and memory CD4 T cells. Our results show that these changes occur relatively early (1 d) after activation of naive and memory cells and that demethylation is the predominant change to H3K27me3 at this time point, reinforcing high expression of target genes. Additionally, inhibition of the H3K27 demethylase JMJD3 in naive CD4 T cells demonstrates how critically important molecules required for T cell differentiation, such as JAK2 and IL12RB2, are regulated by H3K27me3. Our results show that H3K27me3 is a dynamic and important epigenetic modification during CD4 T cell activation and that JMJD3-driven H3K27 demethylation is critical for CD4 T cell function.},
+author = {LaMere, Sarah A. and Thompson, Ryan C. and Meng, Xiangzhi and Komori, H. Kiyomi and Mark, Adam and Salomon, Daniel R.},
+doi = {10.4049/jimmunol.1700475},
+file = {:Users/ryan/Documents/Mendeley Desktop/LaMere et al. - 2017 - H3K27 Methylation Dynamics during CD4 T Cell Activation Regulation of JAKSTAT and IL12RB2 Expression by JMJD3(2).pdf:pdf},
+issn = {0022-1767},
+journal = {The Journal of Immunology},
+month = {nov},
+number = {9},
+pages = {3158--3175},
+pmid = {28947543},
+title = {{H3K27 Methylation Dynamics during CD4 T Cell Activation: Regulation of JAK/STAT and IL12RB2 Expression by JMJD3}},
+url = {http://www.jimmunol.org/lookup/doi/10.4049/jimmunol.1700475},
+volume = {199},
+year = {2017}
+}
+@article{Rangaraju2015a,
+abstract = {Longevity mechanisms increase lifespan by counteracting the effects of aging. However, whether longevity mechanisms counteract the effects of aging continually throughout life, or whether they act during specific periods of life, preventing changes that precede mortality is unclear. Here, we uncover transcriptional drift, a phenomenon that describes how aging causes genes within functional groups to change expression in opposing directions. These changes cause a transcriptome-wide loss in mRNA stoichiometry and loss of co-expression patterns in aging animals, as compared to young adults. Using Caenorhabditis elegans as a model, we show that extending lifespan by inhibiting serotonergic signals by the antidepressant mianserin attenuates transcriptional drift, allowing the preservation of a younger transcriptome into an older age. Our data are consistent with a model in which inhibition of serotonergic signals slows age-dependent physiological decline and the associated rise in mortality levels exclusively in young adults, thereby postponing the onset of major mortality.},
+author = {Rangaraju, Sunitha and Solis, Gregory M. and Thompson, Ryan C. and Gomez-Amaro, Rafael L. and Kurian, Leo and Encalada, Sandra E. and Niculescu, Alexander B. and Salomon, Daniel R. and Petrascheck, Michael},
+doi = {10.7554/eLife.08833},
+file = {:Users/ryan/Documents/Mendeley Desktop/Rangaraju et al. - 2015 - Suppression of transcriptional drift extends C. elegans lifespan by postponing the onset of mortality.pdf:pdf;:Users/ryan/Documents/Mendeley Desktop/Rangaraju et al. - 2015 - Suppression of transcriptional drift extends C. elegans lifespan by postponing the onset of mortality.pdf:pdf;:Users/ryan/Documents/Mendeley Desktop/Rangaraju et al. - 2015 - Suppression of transcriptional drift extends C. elegans lifespan by postponing the onset of mortality(3).pdf:pdf},
+isbn = {2050-084x},
+issn = {2050084X},
+journal = {eLife},
+month = {dec},
+number = {December2015},
+pages = {1--39},
+pmid = {26623667},
+title = {{Suppression of transcriptional drift extends C. elegans lifespan by postponing the onset of mortality}},
+url = {https://elifesciences.org/articles/08833 https://elifesciences.org/content/4/e08833-download.pdf http://elifesciences.org/lookup/doi/10.7554/eLife.08833},
+volume = {4},
+year = {2015}
+}
+@article{LaMere2016,
+abstract = {The epigenetic determinants driving the responses of CD4 T cells to antigen are currently an area of active research. Much has been done to characterize helper T-cell subsets and their associated genome-wide epigenetic patterns. In contrast, little is known about the dynamics of histone modifications during CD4 T-cell activation and the differential kinetics of these epigenetic marks between naive and memory T cells. In this study, we have detailed the dynamics of genome-wide promoter H3K4me2 and H3K4me3 over a time course during activation of human naive and memory CD4 T cells. Our results demonstrate that changes to H3K4 methylation occur relatively late after activation (5 days) and reinforce activation-induced upregulation of gene expression, affecting multiple pathways important to T-cell activation, differentiation and function. The dynamics and mapped pathways of H3K4 methylation are distinctly different in memory cells, which have substantially more promoters marked by H3K4me3 alone, reinforcing their more differentiated state. Our study provides the first data examining genome-wide histone modification dynamics during CD4 T-cell activation, providing insight into the cross talk between H3K4 methylation and gene expression, and underscoring the impact of these marks upon key pathways integral to CD4 T-cell activation and function.},
+author = {LaMere, S. A. and Thompson, R. C. and Komori, H. K. and Mark, A. and Salomon, D. R.},
+doi = {10.1038/gene.2016.19},
+file = {:Users/ryan/Documents/Mendeley Desktop/LaMere et al. - 2016 - Promoter H3K4 methylation dynamically reinforces activation-induced pathways in human CD4 T cells.pdf:pdf;:Users/ryan/Documents/Mendeley Desktop/LaMere et al. - 2016 - Promoter H3K4 methylation dynamically reinforces activation-induced pathways in human CD4 T cells.ppt:ppt},
+issn = {1476-5470},
+journal = {Genes and immunity},
+month = {jul},
+number = {5},
+pages = {283--97},
+pmid = {27170561},
+publisher = {Nature Publishing Group},
+title = {{Promoter H3K4 methylation dynamically reinforces activation-induced pathways in human CD4 T cells.}},
+url = {http://www.nature.com/articles/gene201619 http://www.ncbi.nlm.nih.gov/pubmed/27170561 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC4956548},
+volume = {17},
+year = {2016}
+}
+@article{Kurian2014,
+abstract = {There are no minimally invasive diagnostic metrics for acute kidney transplant rejection (AR), especially in the setting of the common confounding diagnosis, acute dysfunction with no rejection (ADNR). Thus, though kidney transplant biopsies remain the gold standard, they are invasive, have substantial risks, sampling error issues and significant costs and are not suitable for serial monitoring. Global gene expression profiles of 148 peripheral blood samples from transplant patients with excellent function and normal histology (TX; n = 46), AR (n = 63) and ADNR (n = 39), from two independent cohorts were analyzed with DNA microarrays. We applied a new normalization tool, frozen robust multi-array analysis, particularly suitable for clinical diagnostics, multiple prediction tools to discover, refine and validate robust molecular classifiers and we tested a novel one-by-one analysis strategy to model the real clinical application of this test. Multiple three-way classifier tools identified 200 highest value probesets with sensitivity, specificity, positive predictive value, negative predictive value and area under the curve for the validation cohort ranging from 82{\%} to 100{\%}, 76{\%} to 95{\%}, 76{\%} to 95{\%}, 79{\%} to 100{\%}, 84{\%} to 100{\%} and 0.817 to 0.968, respectively. We conclude that peripheral blood gene expression profiling can be used as a minimally invasive tool to accurately reveal TX, AR and ADNR in the setting of acute kidney transplant dysfunction.},
+author = {Kurian, S M and Williams, a N and Gelbart, T and Campbell, D and Mondala, T S and Head, S R and Horvath, S and Gaber, L and Thompson, R and Whisenant, T and Lin, W and Langfelder, P and Robison, E H and Schaffer, R L and Fisher, J S and Friedewald, J and Flechner, S M and Chan, L K and Wiseman, A C and Shidban, H and Mendez, R and Heilman, R and Abecassis, M M and Marsh, C L and Salomon, D R},
+doi = {10.1111/ajt.12671},
+file = {:Users/ryan/Documents/Mendeley Desktop/Kurian et al. - 2014 - Molecular Classifiers for Acute Kidney Transplant Rejection in Peripheral Blood by Whole Genome Gene Expression P.pdf:pdf},
+issn = {16006135},
+journal = {American Journal of Transplantation},
+keywords = {abbreviations,abmr,acute,acute dysfunction with no,antibody-mediated rejection,arrays,gene expression profiling,kidney rejection,micro-,molecular classifiers,rejection},
+month = {may},
+number = {5},
+pages = {1164--1172},
+pmid = {24725967},
+title = {{Molecular Classifiers for Acute Kidney Transplant Rejection in Peripheral Blood by Whole Genome Gene Expression Profiling}},
+url = {http://www.ncbi.nlm.nih.gov/pubmed/24725967 http://europepmc.org/abstract/med/24725967 http://doi.wiley.com/10.1111/ajt.12671},
+volume = {14},
+year = {2014}
+}
+@article{VanNieuwerburgh2012,
+abstract = {Standard Illumina mate-paired libraries are constructed from 3- to 5-kb DNA fragments by a blunt-end circularization. Sequencing reads that pass through the junction of the two joined ends of a 3-5-kb DNA fragment are not easy to identify and pose problems during mapping and de novo assembly. Longer read lengths increase the possibility that a read will cross the junction. To solve this problem, we developed a mate-paired protocol for use with Illumina sequencing technology that uses Cre-Lox recombination instead of blunt end circularization. In this method, a LoxP sequence is incorporated at the junction site. This sequence allows screening reads for junctions without using a reference genome. Junction reads can be trimmed or split at the junction. Moreover, the location of the LoxP sequence in the reads distinguishes mate-paired reads from spurious paired-end reads. We tested this new method by preparing and sequencing a mate-paired library with an insert size of 3 kb from Saccharomyces cerevisiae. We present an analysis of the library quality statistics and a new bio-informatics tool called DeLoxer that can be used to analyze an IlluminaCre-Lox mate-paired data set. We also demonstrate how the resulting data significantly improves a de novo assembly of the S. cerevisiae genome.},
+author = {{Van Nieuwerburgh}, Filip and Thompson, Ryan C and Ledesma, Jessica and Deforce, Dieter and Gaasterland, Terry and Ordoukhanian, Phillip and Head, Steven R},
+doi = {10.1093/nar/gkr1000},
+file = {:Users/ryan/Documents/Mendeley Desktop/Van Nieuwerburgh et al. - 2012 - Illumina mate-paired DNA sequencing-library preparation using Cre-Lox recombination.pdf:pdf},
+issn = {1362-4962},
+journal = {Nucleic acids research},
+month = {feb},
+number = {3},
+pages = {e24},
+pmid = {22127871},
+title = {{Illumina mate-paired DNA sequencing-library preparation using Cre-Lox recombination.}},
+url = {http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=3273786{\&}tool=pmcentrez{\&}rendertype=abstract},
+volume = {40},
+year = {2012}
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 22 - 0
myunpubs.bib


+ 1586 - 0
plainurlyr-rev.bst

@@ -0,0 +1,1586 @@
+%%% Modification of BibTeX style file /usr/local/texlive/2009/texmf-dist/bibtex/bst/base/plain.bst
+%%% ... by urlbst, version 0.7 (marked with "% urlbst")
+%%% See <http://purl.org/nxg/dist/urlbst>
+%%% Added webpage entry type, and url and lastchecked fields.
+%%% Added eprint support.
+%%% Added DOI support.
+%%% Added PUBMED support.
+%%% Added hyperref support.
+%%% Original headers follow...
+
+% BibTeX standard bibliography style `plain'
+	% version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
+	% Copyright (C) 1985, all rights reserved.
+	% Copying of this file is authorized only if either
+	% (1) you make absolutely no changes to your copy, including name, or
+	% (2) if you do make changes, you name it something other than
+	% btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+	% This restriction helps ensure that all standard styles are identical.
+	% The file btxbst.doc has the documentation for this style.
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    volume
+    year
+    eprint % urlbst
+    doi % urlbst
+    pubmed % urlbst
+    url % urlbst
+    lastchecked % urlbst
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+% urlbst...
+% urlbst constants and state variables
+STRINGS { urlintro
+  eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
+  citedstring onlinestring linktextstring
+  openinlinelink closeinlinelink }
+INTEGERS { hrefform inlinelinks makeinlinelink
+  addeprints adddoiresolver addpubmedresolver }
+FUNCTION {init.urlbst.variables}
+{
+  % The following constants may be adjusted by hand, if desired
+
+  % The first set allow you to enable or disable certain functionality.
+  #1 'addeprints :=         % 0=no eprints; 1=include eprints
+  #1 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
+  #1 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
+  #2 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
+  #0 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+
+  % String constants, which you _might_ want to tweak.
+  "URL: " 'urlintro := % prefix before URL; typically "Available from:" or "URL":
+  "online" 'onlinestring := % indication that resource is online; typically "online"
+  "cited " 'citedstring := % indicator of citation date; typically "cited "
+  "[link]" 'linktextstring := % dummy link text; typically "[link]"
+  "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
+  "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
+  "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI
+  "doi:" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
+  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
+  "PMID:" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+
+  % The following are internal state variables, not configuration constants,
+  % so they shouldn't be fiddled with.
+  #0 'makeinlinelink :=     % state variable managed by possibly.setup.inlinelink
+  "" 'openinlinelink :=     % ditto
+  "" 'closeinlinelink :=    % ditto
+}
+INTEGERS { 
+  bracket.state
+  outside.brackets
+  open.brackets
+  within.brackets
+  close.brackets
+}
+% ...urlbst to here
+FUNCTION {init.state.consts}
+{ #0 'outside.brackets := % urlbst...
+  #1 'open.brackets :=
+  #2 'within.brackets :=
+  #3 'close.brackets := % ...urlbst to here
+
+  #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+
+STRINGS { s t }
+
+% urlbst
+FUNCTION {output.nonnull.original}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { add.period$ " " * write$ }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+% urlbst...
+% The following three functions are for handling inlinelink.  They wrap
+% a block of text which is potentially output with write$ by multiple
+% other functions, so we don't know the content a priori.
+% They communicate between each other using the variables makeinlinelink
+% (which is true if a link should be made), and closeinlinelink (which holds
+% the string which should close any current link.  They can be called
+% at any time, but start.inlinelink will be a no-op unless something has
+% previously set makeinlinelink true, and the two ...end.inlinelink functions
+% will only do their stuff if start.inlinelink has previously set
+% closeinlinelink to be non-empty.
+% (thanks to 'ijvm' for suggested code here)
+FUNCTION {uand}
+{ 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
+FUNCTION {possibly.setup.inlinelink}
+{ makeinlinelink hrefform #0 > uand
+    { doi empty$ adddoiresolver uand
+        { pubmed empty$ addpubmedresolver uand
+            { eprint empty$ addeprints uand
+                { url empty$
+                    { "" }
+                    { url }
+                  if$ }
+                { eprinturl eprint * }
+              if$ }
+            { pubmedurl pubmed * }
+          if$ }
+        { doiurl doi * }
+      if$
+      % an appropriately-formatted URL is now on the stack
+      hrefform #1 = % hypertex
+        { "\special {html:<a href=" quote$ * swap$ * quote$ * "> }{" * 'openinlinelink :=
+          "\special {html:</a>}" 'closeinlinelink := }
+        { "\href {" swap$ * "} {" * 'openinlinelink := % hrefform=#2 -- hyperref
+          % the space between "} {" matters: a URL of just the right length can cause "\% newline em"
+          "}" 'closeinlinelink := }
+      if$
+      #0 'makeinlinelink :=
+      }
+    'skip$
+  if$ % makeinlinelink
+}
+FUNCTION {add.inlinelink}
+{ openinlinelink empty$
+    'skip$
+    { openinlinelink swap$ * closeinlinelink *
+      "" 'openinlinelink :=
+      }
+  if$
+}
+FUNCTION {output.nonnull}
+{ % Save the thing we've been asked to output
+  's :=
+  % If the bracket-state is close.brackets, then add a close-bracket to
+  % what is currently at the top of the stack, and set bracket.state
+  % to outside.brackets
+  bracket.state close.brackets =
+    { "]" *
+      outside.brackets 'bracket.state :=
+    }
+    'skip$
+  if$
+  bracket.state outside.brackets =
+    { % We're outside all brackets -- this is the normal situation.
+      % Write out what's currently at the top of the stack, using the
+      % original output.nonnull function.
+      s
+      add.inlinelink
+      output.nonnull.original % invoke the original output.nonnull
+    }
+    { % Still in brackets.  Add open-bracket or (continuation) comma, add the
+      % new text (in s) to the top of the stack, and move to the close-brackets
+      % state, ready for next time (unless inbrackets resets it).  If we come
+      % into this branch, then output.state is carefully undisturbed.
+      bracket.state open.brackets =
+        { " [" * }
+        { ", " * } % bracket.state will be within.brackets
+      if$ 
+      s * 
+      close.brackets 'bracket.state :=
+    }
+  if$
+}
+
+% Call this function just before adding something which should be presented in 
+% brackets.  bracket.state is handled specially within output.nonnull.
+FUNCTION {inbrackets}
+{ bracket.state close.brackets =
+    { within.brackets 'bracket.state := } % reset the state: not open nor closed
+    { open.brackets 'bracket.state := }
+  if$
+}
+
+FUNCTION {format.lastchecked}
+{ lastchecked empty$
+    { "" }
+    { inbrackets citedstring lastchecked * }
+  if$
+}
+% ...urlbst to here
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.bibitem.original} % urlbst (renamed from output.bibitem, so it can be wrapped below)
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {fin.entry.original} % urlbst (renamed from fin.entry, so it can be wrapped below)
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+	'skip$
+	{ after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+      nameptr #1 >
+	{ namesleft #1 >
+	    { ", " * t * }
+	    { numnames #2 >
+		{ "," * }
+		'skip$
+	      if$
+	      t "others" =
+		{ " et~al." * }
+		{ " and " * t * }
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ ", editors" * }
+	{ ", editor" * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$ }
+  if$
+}
+
+FUNCTION {n.dashify}
+{ '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$
+}
+
+FUNCTION {format.date}
+{ year empty$
+    { month empty$
+	{ "" }
+	{ "there's a month but no year in " cite$ * warning$
+	  month
+	}
+      if$
+    }
+    { month empty$
+	'year
+	{ month " " * year * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { "volume" volume tie.or.space.connect
+      series empty$
+	'skip$
+	{ " of " * series emphasize * }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+	{ series field.or.null }
+	{ output.state mid.sentence =
+	    { "number" }
+	    { "Number" }
+	  if$
+	  number tie.or.space.connect
+	  series empty$
+	    { "there's a number but no series in " cite$ * warning$ }
+	    { " in " * series * }
+	  if$
+	}
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      if$
+    }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ '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 {format.pages}
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "pages" pages n.dashify tie.or.space.connect }
+	{ "page" pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+  number empty$
+    'skip$
+    { "(" number * ")" * *
+      volume empty$
+	{ "there's a number but no volume in " cite$ * warning$ }
+	'skip$
+      if$
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ":" * pages n.dashify * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" }
+	{ type "l" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { editor empty$
+	{ "In " booktitle emphasize * }
+	{ "In " format.editors * ", " * booktitle emphasize * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      type "t" change.case$
+    }
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    { "Technical Report" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+	{ "need key or journal for " cite$ * " to crossref " * crossref *
+	  warning$
+	  ""
+	}
+	{ "In {\em " journal * "\/}" * }
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { pop$ " et~al." * }
+    { #2 <
+	'skip$
+	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    { " et~al." * }
+	    { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+	{ series empty$
+	    { "need editor, key, or series for " cite$ * " to crossref " *
+	      crossref * warning$
+	      "" *
+	    }
+	    { "{\em " * series * "\/}" * }
+	  if$
+	}
+	{ key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+	{ booktitle empty$
+	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
+	      crossref * warning$
+	      ""
+	    }
+	    { "In {\em " booktitle * "\/}" * }
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { "In " format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+% urlbst...
+% Functions for making hypertext links.
+% In all cases, the stack has (link-text href-url)
+%
+% make 'null' specials
+FUNCTION {make.href.null}
+{
+  pop$
+}
+% make hypertex specials
+FUNCTION {make.href.hypertex}
+{ 
+  "\special {html:<a href=" quote$ *
+  swap$ * quote$ * "> }" * swap$ *
+  "\special {html:</a>}" *
+}
+% make hyperref specials
+FUNCTION {make.href.hyperref}
+{ 
+  "\href {" swap$ * "} {\path{" * swap$ * "}}" *
+}
+FUNCTION {make.href}
+{ hrefform #2 =
+    'make.href.hyperref      % hrefform = 2
+    { hrefform #1 =
+        'make.href.hypertex  % hrefform = 1
+        'make.href.null      % hrefform = 0 (or anything else)
+      if$
+    }
+  if$
+}
+
+% If inlinelinks is true, then format.url should be a no-op, since it's
+% (a) redundant, and (b) could end up as a link-within-a-link.
+FUNCTION {format.url}
+{ inlinelinks #1 = url empty$ or
+   { "" }
+   { hrefform #1 =
+       { % special case -- add HyperTeX specials
+         urlintro "\url{" url * "}" * url make.href.hypertex * }
+       { urlintro "\url{" * url * "}" * }
+     if$
+   }
+  if$
+}
+
+FUNCTION {format.eprint}
+{ eprint empty$
+    { "" }
+    { eprintprefix eprint * eprinturl eprint * make.href }
+  if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+    { "" }
+    { doiprefix doi * doiurl doi * make.href }
+  if$
+}
+
+FUNCTION {format.pubmed}
+{ pubmed empty$
+    { "" }
+    { pubmedprefix pubmed * pubmedurl pubmed * make.href }
+  if$
+}
+
+% Output a URL.  We can't use the more normal idiom (something like
+% `format.url output'), because the `inbrackets' within
+% format.lastchecked applies to everything between calls to `output',
+% so that `format.url format.lastchecked * output' ends up with both
+% the URL and the lastchecked in brackets.
+FUNCTION {output.url}
+{ url empty$
+    'skip$ 
+    { new.block 
+      format.url output
+      format.lastchecked output 
+    }
+  if$
+}
+
+FUNCTION {output.web.refs}
+{
+  new.block
+  inlinelinks
+    'skip$ % links were inline -- don't repeat them
+    {
+      output.url
+      addeprints eprint empty$ not and
+        { format.eprint output.nonnull }
+        'skip$
+      if$
+      adddoiresolver doi empty$ not and
+        { format.doi output.nonnull }
+        'skip$
+      if$
+      addpubmedresolver pubmed empty$ not and
+        { format.pubmed output.nonnull }
+        'skip$
+      if$
+    }
+  if$
+}
+
+% Wrapper for output.bibitem.original.
+% If the URL field is not empty, set makeinlinelink to be true,
+% so that an inline link will be started at the next opportunity
+FUNCTION {output.bibitem}
+{ outside.brackets 'bracket.state :=
+  output.bibitem.original
+  inlinelinks url empty$ not doi empty$ not or pubmed empty$ not or eprint empty$ not or and
+    { #1 'makeinlinelink := }
+    { #0 'makeinlinelink := }
+  if$
+}
+
+% Wrapper for fin.entry.original
+FUNCTION {fin.entry}
+{ output.web.refs  % urlbst
+  makeinlinelink       % ooops, it appears we didn't have a title for inlinelink
+    { possibly.setup.inlinelink % add some artificial link text here, as a fallback
+      linktextstring output.nonnull }
+    'skip$
+  if$
+  bracket.state close.brackets = % urlbst
+    { "]" * }
+    'skip$
+  if$
+  fin.entry.original
+}
+
+% Webpage entry type.
+% Title and url fields required;
+% author, note, year, month, and lastchecked fields optional
+% See references 
+%   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
+%   http://www.classroom.net/classroom/CitingNetResources.html
+%   http://neal.ctstateu.edu/history/cite.html
+%   http://www.cas.usf.edu/english/walker/mla.html
+% for citation formats for web pages.
+FUNCTION {webpage}
+{ output.bibitem
+  author empty$
+    { editor empty$
+        'skip$  % author and editor both optional
+        { format.editors output.nonnull }
+      if$
+    }
+    { editor empty$
+        { format.authors output.nonnull }
+        { "can't use both author and editor fields in " cite$ * warning$ }
+      if$
+    }
+  if$
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$
+  format.title "title" output.check
+  inbrackets onlinestring output
+  new.block
+  year empty$
+    'skip$
+    { format.date "year" output.check }
+  if$
+  % We don't need to output the URL details ('lastchecked' and 'url'),
+  % because fin.entry does that for us, using output.web.refs.  The only
+  % reason we would want to put them here is if we were to decide that
+  % they should go in front of the rather miscellaneous information in 'note'.
+  new.block
+  note output
+  fin.entry
+}
+% ...urlbst to here
+
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { journal emphasize "journal" output.check
+      possibly.setup.inlinelink format.vol.num.pages output% urlbst
+      format.date "year" output.check
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+	{ "author and editor" editor either.or.check }
+	'skip$
+      if$
+    }
+  if$
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+	{ "author and editor" editor either.or.check }
+	'skip$
+      if$
+    }
+  if$
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.chapter.pages output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+      format.edition output
+      format.date "year" output.check
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.pages output
+      address empty$
+	{ organization publisher new.sentence.checkb
+	  organization output
+	  publisher output
+	  format.date "year" output.check
+	}
+	{ address output.nonnull
+	  format.date "year" output.check
+	  new.sentence
+	  organization output
+	  publisher output
+	}
+      if$
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { organization empty$
+	'skip$
+	{ organization output.nonnull
+	  address output
+	}
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.btitle "title" output.check
+  author empty$
+    { organization empty$
+	{ address new.block.checka
+	  address output
+	}
+	'skip$
+      if$
+    }
+    { organization address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  title howpublished new.block.checkb
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title output
+  howpublished new.block.checka
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  address empty$
+    { editor empty$
+	{ publisher new.sentence.checka }
+	{ organization publisher new.sentence.checkb
+	  organization output
+	}
+      if$
+      publisher output
+      format.date "year" output.check
+    }
+    { address output.nonnull
+      format.date "year" output.check
+      new.sentence
+      editor empty$
+	'skip$
+	{ organization output }
+      if$
+      publisher output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  new.block
+  format.tr.number output.nonnull
+  institution "institution" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  format.date output
+  fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+	{ "   " * }
+	'skip$
+      if$
+      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
+      nameptr numnames = t "others" = and
+	{ "et al" * }
+	{ t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.month}
+{ 't :=
+  t #1 #3 substring$ "Jan" =
+  t #1 #3 substring$ "jan" =
+  or
+  { "12" }
+    { t #1 #3 substring$ "Feb" =
+      t #1 #3 substring$ "feb" =
+      or
+      { "11" }
+      { t #1 #3 substring$ "Mar" =
+        t #1 #3 substring$ "mar" =
+        or
+        { "10" }
+        { t #1 #3 substring$ "Apr" =
+          t #1 #3 substring$ "apr" =
+          or
+          { "09" }
+          { t #1 #3 substring$ "May" =
+            t #1 #3 substring$ "may" =
+            or
+            { "08" }
+            { t #1 #3 substring$ "Jun" =
+              t #1 #3 substring$ "jun" =
+              or
+              { "07" }
+              { t #1 #3 substring$ "Jul" =
+                t #1 #3 substring$ "jul" =
+                or
+                { "06" }
+                { t #1 #3 substring$ "Aug" =
+                  t #1 #3 substring$ "aug" =
+                  or
+                  { "05" }
+                  { t #1 #3 substring$ "Sep" =
+                    t #1 #3 substring$ "sep" =
+                    or
+                    { "04" }
+                    { t #1 #3 substring$ "Oct" =
+                      t #1 #3 substring$ "oct" =
+                      or
+                      { "03" }
+                      { t #1 #3 substring$ "Nov" =
+                        t #1 #3 substring$ "nov" =
+                        or
+                        { "02" }
+                        { t #1 #3 substring$ "Dec" =
+                          t #1 #3 substring$ "dec" =
+                          or
+                          { "01" }
+                          { "13" } % No month specified
+                        if$
+                        }
+                      if$
+                      }
+                    if$
+                    }
+                  if$
+                  }
+                if$
+                }
+              if$
+              }
+            if$
+            }
+          if$
+          }
+        if$
+        }
+      if$
+      }
+    if$
+    }
+  if$
+
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+	{ "to sort, need author or key in " cite$ * warning$
+	  ""
+	}
+	{ key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+	{ key empty$
+	    { "to sort, need author, editor, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+    { organization empty$
+	{ key empty$
+	    { "to sort, need author, organization, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ "The " #4 organization chop.word sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+    { organization empty$
+	{ key empty$
+	    { "to sort, need editor, organization, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ "The " #4 organization chop.word sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+%% Code for reverse sorting
+%% Contributed by Hans Ekkehard Plesser, http://arken.umb.no/~plesser
+
+% Take year, assuming it is four-digit, convert to int, subtract from 9999
+% and return as string on stack. For reverse chronological sorting.
+INTEGERS { pos k res }
+STRINGS { tmpyear }
+FUNCTION {reverse.year}
+{
+ % ensure four digit year
+ year empty$
+   { "9999" "missing year in " cite$ * ", using 9999 for sorting" * warning$ }
+   { year text.length$ #4 =
+       { year }
+       { "9999" "year not 4-digit in " cite$ * ", using 9999 for sorting" * warning$ }
+     if$
+   }
+ if$
+ 'tmpyear :=
+
+ #0 'res := % will contain year as integer
+
+ #5 'pos := % index into year, we pre-decrement, will enter body with 4..1
+ { pos #1 - 'pos := pos }
+ {
+   % extract digit at pos, convert to ASCII, subtract 48 -> 0..9, store in k
+   tmpyear pos #1 substring$ chr.to.int$ #48 - 'k :=
+
+   { k duplicate$ #1 - 'k := }
+   {
+     pos #1 =
+       { res #1000 + 'res := }
+{
+pos #2 =
+{ res #100 + 'res := }
+{
+pos #3 =
+{ res #10 + 'res := }
+{ res #1 + 'res := }
+if$
+}
+if$
+}
+     if$
+   }
+   while$
+ }
+ while$
+
+ #9999 res -
+ int.to.str$
+}
+
+FUNCTION {presort}
+{
+  % sort by reverse year
+  reverse.year
+  " "
+  *
+  month field.or.null
+  sort.format.month
+  *
+  " "
+  *
+  author field.or.null
+  sort.format.names
+  *
+  " "
+  *
+  title field.or.null
+  sort.format.title
+  *
+
+  % cite key for definitive disambiguation
+  cite$
+  *
+
+  % limit to maximum sort key length
+  #1 entry.max$ substring$
+
+  'sort.key$ :=
+}
+
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #1 'number.label :=
+  #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ 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$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.urlbst.variables} % urlbst
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}

+ 892 - 0
ryan_thompson_cv.lyx

@@ -0,0 +1,892 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass xetexCV
+\begin_preamble
+% Clear existing header/footer
+%\fancyhf{}
+% Page number in top right
+%\fancyhead[R]{\thepage}
+% Online PDF URL in bottom right
+%\fancyfoot[R]{\footnotesize{Online version (with links): \href{https://darwinawardwinner.github.io/resume/ryan_thompson_resume.pdf}{https://darwinawardwinner.github.io/resume/ryan\_{}thompson\_{}resume.pdf}}}
+% No horizontal rules
+%\renewcommand{\headrulewidth}{0pt}
+%\renewcommand{\footrulewidth}{0pt}
+
+\hypersetup{linkcolor=black,citecolor=black,filecolor=black,urlcolor=black} 
+\end_preamble
+\options unicode=true
+\use_default_options true
+\begin_modules
+customHeadersFooters
+todonotes
+\end_modules
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "Minion Pro"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts true
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format pdf4
+\output_sync 1
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\pdf_bookmarks true
+\pdf_bookmarksnumbered false
+\pdf_bookmarksopen false
+\pdf_bookmarksopenlevel 1
+\pdf_breaklinks true
+\pdf_pdfborder true
+\pdf_colorlinks false
+\pdf_backref false
+\pdf_pdfusetitle true
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plainnat
+\use_bibtopic true
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 0
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 2
+\tocdepth 2
+\paragraph_separation skip
+\defskip smallskip
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle fancy
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict true
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+renewcommand{
+\backslash
+headrulewidth}{0pt}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+No hrule under header
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+fancyhf{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+Clear any existing headers
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Left Header
+Ryan C.
+ Thompson, Ph.
+\begin_inset space \thinspace{}
+\end_inset
+
+D.
+\end_layout
+
+\begin_layout Right Header
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+thepage
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+Hide name in header on first page, since it's redundant
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+fancypagestyle{plain}{
+\backslash
+lhead{}}
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+thispagestyle{plain}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+Actual content begins here
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex CV Image
+status open
+
+\begin_layout Plain Layout
+headshot-crop.png
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout CV Name
+Ryan C.
+ Thompson, Ph.
+\begin_inset space \thinspace{}
+\end_inset
+
+D.
+\end_layout
+
+\begin_layout Contact Address
+8656 Via Mallorca
+\begin_inset Newline newline
+\end_inset
+
+Unit G
+\begin_inset Newline newline
+\end_inset
+
+La Jolla, CA 92037
+\end_layout
+
+\begin_layout Phone Number
+(908)
+\begin_inset space \thinspace{}
+\end_inset
+
+922-7470
+\end_layout
+
+\begin_layout Email
+rct@thompsonclan.org
+\end_layout
+
+\begin_layout Website
+https://github.com/DarwinAwardWinner
+\end_layout
+
+\begin_layout Section
+Education
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2019
+\end_layout
+
+\end_inset
+
+ Ph.
+\begin_inset space \thinspace{}
+\end_inset
+
+D.
+ in Bioinformatics, 
+\begin_inset CommandInset href
+LatexCommand href
+name "Skaggs Graduate School of Chemical and Biological Sciences"
+target "https://education.scripps.edu/graduate/about-the-graduate-school/"
+literal "false"
+
+\end_inset
+
+, The Scripps Research Institute, La Jolla, California 
+\begin_inset Newline newline
+\end_inset
+
+
+\size small
+Dissertation: 
+\begin_inset CommandInset href
+LatexCommand href
+name "Bioinformatic analysis of complex, high-throughput genomic and epigenomic data in the context of CD4$^{+}$ T-cell differentiation and diagnosis and treatment of transplant rejection"
+target "https://mneme.dedyn.io/~ryan/Thesis/thesis-final.pdf"
+literal "true"
+
+\end_inset
+
+
+\begin_inset Note Note
+status collapsed
+
+\begin_layout Plain Layout
+
+\size small
+Update this link to one in the resume repo when possible
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset Newline newline
+\end_inset
+
+Advisor: 
+\begin_inset CommandInset href
+LatexCommand href
+name "Andrew Su"
+target "http://sulab.org/author/andrew-i-su/"
+literal "false"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2009
+\end_layout
+
+\end_inset
+
+ B.
+\begin_inset space \thinspace{}
+\end_inset
+
+S.
+ in Biology with High Distinction; B.
+\begin_inset space \thinspace{}
+\end_inset
+
+A.
+ in Mathematics, University of Virginia, Charlottesville, Virginia 
+\begin_inset Newline newline
+\end_inset
+
+
+\size small
+Undergraduate thesis: 
+\begin_inset CommandInset href
+LatexCommand href
+name "Contig Farmer: A tool for extracting maximal-length contiguous Sequences from a Database of Short Sequence Reads"
+target "http://darwinawardwinner.github.io/resume/examples/UVa/contigfarmer.pdf"
+literal "false"
+
+\end_inset
+
+ 
+\begin_inset Newline newline
+\end_inset
+
+Advisor: 
+\begin_inset CommandInset href
+LatexCommand href
+name "Paul J. Rushton"
+target "https://therushtonlab.wordpress.com/"
+literal "false"
+
+\end_inset
+
+ 
+\end_layout
+
+\begin_layout Section
+Awards & Honors
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2006—2009
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset CommandInset href
+LatexCommand href
+name "Echols Scholar"
+target "http://echols.as.virginia.edu/front"
+literal "false"
+
+\end_inset
+
+, University of Virginia
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2006
+\end_layout
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "Phi Eta Sigma National Honor Society"
+target "https://www.phietasigma.org/"
+literal "false"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2006
+\end_layout
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "National Society of Collegiate Scholars"
+target "https://nscs.org/"
+literal "false"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2005
+\end_layout
+
+\end_inset
+
+Edward J.
+ Bloustein Disguingished Scholar
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2005
+\end_layout
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "National Merit Scholar"
+target "https://www.nationalmerit.org/"
+literal "false"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Professional Experience
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2010—2012
+\end_layout
+
+\end_inset
+
+ Gaasterland Lab, University of California San Diego, San Diego,
+\begin_inset space ~
+\end_inset
+
+CA
+\begin_inset Newline newline
+\end_inset
+
+
+\size small
+Advisor: Terry Gaasterland
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2011
+\end_layout
+
+\end_inset
+
+ Summer Bioinformatics Internship, Informatics & IT Department, Merck &
+ Co., Boston,
+\begin_inset space ~
+\end_inset
+
+MA
+\begin_inset Newline newline
+\end_inset
+
+
+\size small
+Advisor: Adnan Derti
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2006—2009
+\end_layout
+
+\end_inset
+
+ Summer Sailing Instructor, Raritan Yacht Club, Perth Amboy,
+\begin_inset space ~
+\end_inset
+
+NJ
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2005—2007
+\end_layout
+
+\end_inset
+
+ Computing Advisor & Help Desk, Information, Technology, & Communication
+ Department, University of Virginia, Charlottesville,
+\begin_inset space ~
+\end_inset
+
+VA
+\end_layout
+
+\begin_layout Section
+Writings and Publications
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+The following command suppresses the bibliography's own title, since we
+ have one above that's formatted the way we want.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begingroup 
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+renewcommand{
+\backslash
+section}[2]{}%
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset bibtex
+LatexCommand bibtex
+btprint "btPrintAll"
+bibfiles "mypubs-PROCESSED"
+options "plainurlyr-rev"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+endgroup
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Unpublished works
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begingroup 
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+renewcommand{
+\backslash
+section}[2]{}%
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset bibtex
+LatexCommand bibtex
+btprint "btPrintAll"
+bibfiles "myunpubs-PROCESSED"
+options "plainurlyr-rev"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+endgroup
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Presentations & Teaching
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+May 8, 2018
+\end_layout
+
+\end_inset
+
+ Introductory RNA-seq Analysis (
+\begin_inset CommandInset href
+LatexCommand href
+name "Lecture"
+target "https://darwinawardwinner.github.io/resume/examples/Salomon/Teaching/RNA-Seq%20Lecture.pdf"
+literal "false"
+
+\end_inset
+
+ & 
+\begin_inset CommandInset href
+LatexCommand href
+name "Lab"
+target "https://darwinawardwinner.github.io/resume/examples/Salomon/Teaching/RNA-Seq%20Lab.html"
+literal "false"
+
+\end_inset
+
+).
+ University of California, San Diego, CA
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+November 21, 2016 
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset CommandInset href
+LatexCommand href
+name "Advanced RNA-Seq Analysis"
+target "https://darwinawardwinner.github.io/resume/examples/Salomon/Advanced%20RNA-seq%20Analysis.pdf"
+literal "false"
+
+\end_inset
+
+.
+ Schork Lab, J.
+ Craig Venter Institute, La Jolla, CA
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+August 15, 2016
+\end_layout
+
+\end_inset
+
+ Introductory RNA-seq Analysis.
+ Bristol-Myers Squibb, Hopewell, NJ
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+April 29, 2016
+\end_layout
+
+\end_inset
+
+ Introductory RNA-seq Analysis.
+ The Scripps Research Institute, La Jolla, CA
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+December 21, 2015 
+\end_layout
+
+\end_inset
+
+ Advanced RNA-Seq Analysis.
+ Bristol-Myers Squibb, Hopewell, NJ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+November 13, 2015
+\end_layout
+
+\end_inset
+
+ Advanced RNA-Seq Analysis.
+ The Scripps Research Institute, La Jolla, CA
+\end_layout
+
+\begin_layout Section
+Extracurricular and Volunteer Experience
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Years
+status open
+
+\begin_layout Plain Layout
+2012—present
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset CommandInset href
+LatexCommand href
+name "Bioconductor Project"
+target "https://bioconductor.org/"
+literal "false"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Interests 
+\end_layout
+
+\begin_layout Itemize
+Cycling
+\end_layout
+
+\begin_layout Itemize
+Sailing
+\end_layout
+
+\begin_layout Itemize
+Tabletop & board gaming
+\end_layout
+
+\begin_layout Itemize
+Web comics
+\end_layout
+
+\end_body
+\end_document

+ 1 - 1
xetexCV.cls

@@ -19,7 +19,7 @@ uses the xetex typesetting system.]
 
 \RequirePackage{graphicx}
 \RequirePackage[colorlinks,unicode=true,xetex,unicode=true]{hyperref}
-\hypersetup{linkcolor=blue,citecolor=blue,filecolor=black,urlcolor=blue} 
+\hypersetup{linkcolor=blue,citecolor=blue,filecolor=black,urlcolor=blue}
 
 % Fonts
 \defaultfontfeatures{Mapping=tex-text}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.