Compare commits
merge into: warricksothr:master
warricksothr:gh-pages
warricksothr:master
pull from: warricksothr:gh-pages
warricksothr:gh-pages
warricksothr:master
No commits in common. 'master' and 'gh-pages' have entirely different histories.
61 changed files with 299 additions and 2343 deletions
-
145.gitignore
-
71.gitlab-ci.yml
-
223DPSResume.css
-
0DPSResume.outline
-
BINDPSResume.pdf
-
0README
-
11README.md
-
BINResumeSite.tar.gz
-
5base.min.css
-
BINbg1.png
-
7compatibility.min.js
-
44cover_letters/2019-09-CL-Elastic-Senior-Java-Engineer-Security.tex
-
72cover_letters/CL-Mozilla-RE.tex
-
66cover_letters/template.tex
-
356datenumber.sty
-
53datenumberUSenglish.ldf
-
57datenumberenglish.ldf
-
BINf1.woff
-
BINf2.woff
-
BINf3.woff
-
BINf4.woff
-
BINf5.woff
-
BINf6.woff
-
BINf7.woff
-
BINf8.woff
-
5fancy.min.css
-
32helvetica.sty
-
32index.html
-
BINpdf2htmlEX-64x64.png
-
27pdf2htmlEX.min.js
-
137pipeline.yml
-
805res.cls
-
9resume.tex
-
9resume_for_recruiters.tex
-
26scripts/build
-
4scripts/build-and-deploy-resume.sh
-
17scripts/build-html-resume-docker.sh
-
13scripts/build-html-resume.sh
-
18scripts/build-pdf-cover-letter-docker.sh
-
16scripts/build-pdf-cover-letter.sh
-
11scripts/build-pdf-resume-docker.sh
-
11scripts/build-pdf-resume-for-recruiters-docker.sh
-
13scripts/build-pdf-resume-for-recruiters.sh
-
28scripts/build-pdf-resume-with-cover-letter-docker.sh
-
13scripts/build-pdf-resume-with-cover-letter.sh
-
13scripts/build-pdf-resume.sh
-
3scripts/cleanup-latex.sh
-
41scripts/package-and-deploy.sh
-
7tex_parts/resume_address.tex
-
5tex_parts/resume_address_recruiters.tex
-
15tex_parts/resume_body.tex
-
6tex_parts/resume_body/achievements.tex
-
7tex_parts/resume_body/education.tex
-
64tex_parts/resume_body/experience.tex
-
9tex_parts/resume_body/intro.tex
-
4tex_parts/resume_body/references.tex
-
12tex_parts/resume_body/skills.tex
-
86tex_parts/resume_commands.tex
-
15tex_parts/resume_head.tex
-
11tex_parts/resume_preamble.tex
-
8upload_pipeline.sh
@ -1,145 +0,0 @@ |
|||||
out/ |
|
||||
*.tar.gz |
|
||||
|
|
||||
*~ |
|
||||
*.xref |
|
||||
*.lg |
|
||||
*.idv |
|
||||
*.4ct |
|
||||
*.4tc |
|
||||
*.tmp |
|
||||
|
|
||||
## Core latex/pdflatex auxiliary files: |
|
||||
*.aux |
|
||||
*.lof |
|
||||
*.log |
|
||||
*.lot |
|
||||
*.fls |
|
||||
*.out |
|
||||
*.toc |
|
||||
|
|
||||
## Intermediate documents: |
|
||||
*.dvi |
|
||||
*-converted-to.* |
|
||||
# these rules might exclude image files for figures etc. |
|
||||
*.ps |
|
||||
*.eps |
|
||||
*.pdf |
|
||||
|
|
||||
## Bibliography auxiliary files (bibtex/biblatex/biber): |
|
||||
*.bbl |
|
||||
*.bcf |
|
||||
*.blg |
|
||||
*-blx.aux |
|
||||
*-blx.bib |
|
||||
*.brf |
|
||||
*.run.xml |
|
||||
|
|
||||
### Build tool auxiliary files: |
|
||||
*.fdb_latexmk |
|
||||
*.synctex |
|
||||
*.synctex.gz |
|
||||
*.synctex.gz(busy) |
|
||||
*.pdfsync |
|
||||
|
|
||||
## Auxiliary and intermediate files from other packages: |
|
||||
## algorithms |
|
||||
*.alg |
|
||||
*.loa |
|
||||
|
|
||||
## achemso |
|
||||
acs-*.bib |
|
||||
|
|
||||
## amsthm |
|
||||
*.thm |
|
||||
|
|
||||
## beamer |
|
||||
*.nav |
|
||||
*.snm |
|
||||
*.vrb |
|
||||
|
|
||||
##(e)ledmac/(e)ledpar |
|
||||
*.end |
|
||||
*.[1-9] |
|
||||
*.[1-9][0-9] |
|
||||
*.[1-9][0-9][0-9] |
|
||||
*.[1-9]R |
|
||||
*.[1-9][0-9]R |
|
||||
*.[1-9][0-9][0-9]R |
|
||||
*.eledsec[1-9] |
|
||||
*.eledsec[1-9]R |
|
||||
*.eledsec[1-9][0-9] |
|
||||
*.eledsec[1-9][0-9]R |
|
||||
*.eledsec[1-9][0-9][0-9] |
|
||||
*.eledsec[1-9][0-9][0-9]R |
|
||||
|
|
||||
## glossaries |
|
||||
*.acn |
|
||||
*.acr |
|
||||
*.glg |
|
||||
*.glo |
|
||||
*.gls |
|
||||
|
|
||||
## gnuplottex |
|
||||
*-gnuplottex-* |
|
||||
|
|
||||
## hyperref |
|
||||
*.brf |
|
||||
|
|
||||
## knitr |
|
||||
*-concordance.tex |
|
||||
*.tikz |
|
||||
*-tikzDictionary |
|
||||
|
|
||||
## listings |
|
||||
*.lol |
|
||||
|
|
||||
## makeidx |
|
||||
*.idx |
|
||||
*.ilg |
|
||||
*.ind |
|
||||
*.ist |
|
||||
|
|
||||
## minitoc |
|
||||
*.maf |
|
||||
*.mtc |
|
||||
*.mtc[0-9] |
|
||||
*.mtc[1-9][0-9] |
|
||||
|
|
||||
## minted |
|
||||
_minted* |
|
||||
*.pyg |
|
||||
|
|
||||
## morewrites |
|
||||
*.mw |
|
||||
|
|
||||
## mylatexformat |
|
||||
*.fmt |
|
||||
|
|
||||
## nomencl |
|
||||
*.nlo |
|
||||
|
|
||||
## sagetex |
|
||||
*.sagetex.sage |
|
||||
*.sagetex.py |
|
||||
*.sagetex.scmd |
|
||||
|
|
||||
## sympy |
|
||||
*.sout |
|
||||
*.sympy |
|
||||
sympy-plots-for-*.tex/ |
|
||||
|
|
||||
## TikZ & PGF |
|
||||
*.dpth |
|
||||
*.md5 |
|
||||
*.auxlock |
|
||||
|
|
||||
## todonotes |
|
||||
*.tdo |
|
||||
|
|
||||
## xindy |
|
||||
*.xdy |
|
||||
|
|
||||
## WinEdt |
|
||||
*.bak |
|
||||
*.sav |
|
@ -1,71 +0,0 @@ |
|||||
stages: |
|
||||
- build |
|
||||
- deploy |
|
||||
|
|
||||
build-resume: |
|
||||
stage: build |
|
||||
script: |
|
||||
- ./scripts/build-pdf-resume.sh |
|
||||
- ./scripts/build-pdf-resume-for-recruiters.sh |
|
||||
- ./scripts/build-html-resume.sh |
|
||||
only: |
|
||||
- master |
|
||||
tags: |
|
||||
- linux |
|
||||
artifacts: |
|
||||
paths: |
|
||||
- resume.pdf |
|
||||
- resume_for_recruiters.pdf |
|
||||
- ResumeSite.tar.gz |
|
||||
|
|
||||
deploy-resume-site: |
|
||||
image: sothr.com/deploy:ubuntu |
|
||||
stage: deploy |
|
||||
variables: |
|
||||
TARGET_DIRECTORY: "/srv/www/sothr.com/resume" |
|
||||
script: |
|
||||
- eval `ssh-agent -s` |
|
||||
- ssh-add <(echo "$SSH_DEPLOY_KEY") |
|
||||
- mkdir -p ~/.ssh |
|
||||
- ssh-keyscan -p $DEPLOY_PORT sothr.com >> ~/.ssh/known_hosts |
|
||||
- mkdir /tmp/deploy |
|
||||
- tar -xvf ResumeSite.tar.gz -C /tmp/deploy |
|
||||
- cp resume.pdf /tmp/deploy |
|
||||
- cp resume_for_recruiters.pdf /tmp/deploy |
|
||||
- rsync -avz --delete-delay -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p $DEPLOY_PORT" --progress /tmp/deploy/* $DEPLOY_USER@$DEPLOY_HOST:$TARGET_DIRECTORY |
|
||||
only: |
|
||||
- master |
|
||||
tags: |
|
||||
- docker |
|
||||
environment: production |
|
||||
|
|
||||
deploy-resume-github: |
|
||||
image: sothr.com/deploy:ubuntu |
|
||||
stage: deploy |
|
||||
variables: |
|
||||
GIT_REPO: git@github.com:warricksothr/resume.git |
|
||||
script: |
|
||||
- eval `ssh-agent -s` |
|
||||
- ssh-add <(echo "$SSH_DEPLOY_KEY") |
|
||||
- mkdir -p ~/.ssh |
|
||||
- ssh-keyscan github.com >> ~/.ssh/known_hosts |
|
||||
- git clone $GIT_REPO /tmp/deploy |
|
||||
- pushd /tmp/deploy |
|
||||
- git checkout -b gh-pages origin/gh-pages |
|
||||
- git config --global user.email "warrick@sothr.com" |
|
||||
- git config --global user.name "Drew Short" |
|
||||
- rm -rf * |
|
||||
- popd |
|
||||
- tar -xvf ResumeSite.tar.gz -C /tmp/deploy |
|
||||
- cp resume.pdf /tmp/deploy |
|
||||
- cp resume_for_recruiters.pdf /tmp/deploy |
|
||||
- pushd /tmp/deploy |
|
||||
- git add . |
|
||||
- git commit -am"$CI_COMMIT_MESSAGE" |
|
||||
- git push |
|
||||
- popd |
|
||||
only: |
|
||||
- master |
|
||||
tags: |
|
||||
- docker |
|
||||
environment: production |
|
@ -0,0 +1,223 @@ |
|||||
|
.ff0{font-family:sans-serif;visibility:hidden;} |
||||
|
@font-face{font-family:ff1;src:url(f1.woff)format("woff");}.ff1{font-family:ff1;line-height:0.943000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff2;src:url(f2.woff)format("woff");}.ff2{font-family:ff2;line-height:0.947000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff3;src:url(f3.woff)format("woff");}.ff3{font-family:ff3;line-height:0.864000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff4;src:url(f4.woff)format("woff");}.ff4{font-family:ff4;line-height:0.854000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff5;src:url(f5.woff)format("woff");}.ff5{font-family:ff5;line-height:0.388000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff6;src:url(f6.woff)format("woff");}.ff6{font-family:ff6;line-height:0.939000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff7;src:url(f7.woff)format("woff");}.ff7{font-family:ff7;line-height:0.752000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
@font-face{font-family:ff8;src:url(f8.woff)format("woff");}.ff8{font-family:ff8;line-height:0.939000;font-style:normal;font-weight:normal;visibility:visible;} |
||||
|
.m0{transform:matrix(0.375000,0.000000,0.000000,0.375000,0,0);-ms-transform:matrix(0.375000,0.000000,0.000000,0.375000,0,0);-webkit-transform:matrix(0.375000,0.000000,0.000000,0.375000,0,0);} |
||||
|
.m1{transform:matrix(1.500000,0.000000,0.000000,1.500000,0,0);-ms-transform:matrix(1.500000,0.000000,0.000000,1.500000,0,0);-webkit-transform:matrix(1.500000,0.000000,0.000000,1.500000,0,0);} |
||||
|
.v0{vertical-align:0.000000px;} |
||||
|
.ls0{letter-spacing:0.000000px;} |
||||
|
.sc_{text-shadow:none;} |
||||
|
.sc0{text-shadow:-0.015em 0 transparent,0 0.015em transparent,0.015em 0 transparent,0 -0.015em transparent;} |
||||
|
@media screen and (-webkit-min-device-pixel-ratio:0){ |
||||
|
.sc_{-webkit-text-stroke:0px transparent;} |
||||
|
.sc0{-webkit-text-stroke:0.015em transparent;text-shadow:none;} |
||||
|
} |
||||
|
.ws0{word-spacing:0.000000px;} |
||||
|
._1{margin-left:-7.173120px;} |
||||
|
._3{margin-left:-4.662497px;} |
||||
|
._a{margin-left:-3.227882px;} |
||||
|
._2{margin-left:-2.191772px;} |
||||
|
._9{margin-left:-1.099842px;} |
||||
|
._f{width:7.452025px;} |
||||
|
._7{width:9.444545px;} |
||||
|
._8{width:10.480655px;} |
||||
|
._6{width:11.636317px;} |
||||
|
._0{width:13.724570px;} |
||||
|
._4{width:15.065254px;} |
||||
|
._e{width:17.334924px;} |
||||
|
._12{width:18.530436px;} |
||||
|
._5{width:19.922800px;} |
||||
|
._b{width:80.019603px;} |
||||
|
._15{width:105.852154px;} |
||||
|
._16{width:420.180750px;} |
||||
|
._10{width:446.979010px;} |
||||
|
._13{width:480.329310px;} |
||||
|
._c{width:521.704714px;} |
||||
|
._19{width:592.416046px;} |
||||
|
._1a{width:631.902834px;} |
||||
|
._17{width:737.830156px;} |
||||
|
._11{width:745.800236px;} |
||||
|
._14{width:753.889867px;} |
||||
|
._d{width:819.643027px;} |
||||
|
._18{width:1135.497298px;} |
||||
|
.fc1{color:rgb(0,0,255);} |
||||
|
.fc0{color:rgb(0,0,0);} |
||||
|
.fs0{font-size:39.850400px;} |
||||
|
.fs1{font-size:47.820800px;} |
||||
|
.y31{bottom:45.235500px;} |
||||
|
.y30{bottom:110.899500px;} |
||||
|
.y2f{bottom:148.135500px;} |
||||
|
.y2d{bottom:153.366000px;} |
||||
|
.y2e{bottom:168.309000px;} |
||||
|
.y2c{bottom:171.298500px;} |
||||
|
.y2b{bottom:208.533000px;} |
||||
|
.y2a{bottom:226.465500px;} |
||||
|
.y29{bottom:263.701500px;} |
||||
|
.y28{bottom:283.876500px;} |
||||
|
.y27{bottom:304.050000px;} |
||||
|
.y0{bottom:319.500000px;} |
||||
|
.y26{bottom:325.420500px;} |
||||
|
.y25{bottom:342.904500px;} |
||||
|
.y24{bottom:374.287500px;} |
||||
|
.y23{bottom:392.220000px;} |
||||
|
.y22{bottom:412.393500px;} |
||||
|
.y21{bottom:430.326000px;} |
||||
|
.y20{bottom:450.501000px;} |
||||
|
.y1f{bottom:468.433500px;} |
||||
|
.y1e{bottom:488.608500px;} |
||||
|
.y1d{bottom:506.541000px;} |
||||
|
.y1c{bottom:527.911500px;} |
||||
|
.y1b{bottom:545.395500px;} |
||||
|
.y1a{bottom:576.777000px;} |
||||
|
.y19{bottom:594.709500px;} |
||||
|
.y18{bottom:614.884500px;} |
||||
|
.y17{bottom:632.817000px;} |
||||
|
.y16{bottom:652.992000px;} |
||||
|
.y15{bottom:670.924500px;} |
||||
|
.y14{bottom:692.295000px;} |
||||
|
.y13{bottom:709.779000px;} |
||||
|
.y12{bottom:747.013500px;} |
||||
|
.y11{bottom:764.947500px;} |
||||
|
.y10{bottom:782.880000px;} |
||||
|
.yf{bottom:800.812500px;} |
||||
|
.ye{bottom:838.047000px;} |
||||
|
.yd{bottom:855.981000px;} |
||||
|
.yc{bottom:876.154500px;} |
||||
|
.yb{bottom:894.087000px;} |
||||
|
.ya{bottom:914.262000px;} |
||||
|
.y9{bottom:932.194500px;} |
||||
|
.y8{bottom:950.127000px;} |
||||
|
.y7{bottom:953.116500px;} |
||||
|
.y6{bottom:971.049000px;} |
||||
|
.y5{bottom:1008.283500px;} |
||||
|
.y4{bottom:1026.217500px;} |
||||
|
.y3{bottom:1047.123000px;} |
||||
|
.y1{bottom:1055.940000px;} |
||||
|
.y2{bottom:1056.015000px;} |
||||
|
.h2{height:29.369745px;} |
||||
|
.h4{height:29.529146px;} |
||||
|
.h3{height:35.243930px;} |
||||
|
.h1{height:724.500000px;} |
||||
|
.h0{height:1188.000000px;} |
||||
|
.w1{width:729.000000px;} |
||||
|
.w0{width:918.000000px;} |
||||
|
.x0{left:93.000000px;} |
||||
|
.x8{left:233.457000px;} |
||||
|
.x9{left:255.873000px;} |
||||
|
.xa{left:270.816000px;} |
||||
|
.x6{left:309.333000px;} |
||||
|
.x7{left:313.486500px;} |
||||
|
.xb{left:625.486500px;} |
||||
|
.x1{left:760.621500px;} |
||||
|
.x3{left:772.801500px;} |
||||
|
.x2{left:774.601500px;} |
||||
|
.x5{left:813.478500px;} |
||||
|
.x4{left:815.278500px;} |
||||
|
@media print{ |
||||
|
.v0{vertical-align:0.000000pt;} |
||||
|
.ls0{letter-spacing:0.000000pt;} |
||||
|
.ws0{word-spacing:0.000000pt;} |
||||
|
._1{margin-left:-6.376107pt;} |
||||
|
._3{margin-left:-4.144442pt;} |
||||
|
._a{margin-left:-2.869229pt;} |
||||
|
._2{margin-left:-1.948242pt;} |
||||
|
._9{margin-left:-0.977637pt;} |
||||
|
._f{width:6.624022pt;} |
||||
|
._7{width:8.395151pt;} |
||||
|
._8{width:9.316138pt;} |
||||
|
._6{width:10.343393pt;} |
||||
|
._0{width:12.199617pt;} |
||||
|
._4{width:13.391337pt;} |
||||
|
._e{width:15.408821pt;} |
||||
|
._12{width:16.471499pt;} |
||||
|
._5{width:17.709156pt;} |
||||
|
._b{width:71.128536pt;} |
||||
|
._15{width:94.090804pt;} |
||||
|
._16{width:373.494000pt;} |
||||
|
._10{width:397.314675pt;} |
||||
|
._13{width:426.959386pt;} |
||||
|
._c{width:463.737524pt;} |
||||
|
._19{width:526.592041pt;} |
||||
|
._1a{width:561.691408pt;} |
||||
|
._17{width:655.849028pt;} |
||||
|
._11{width:662.933543pt;} |
||||
|
._14{width:670.124326pt;} |
||||
|
._d{width:728.571580pt;} |
||||
|
._18{width:1009.330931pt;} |
||||
|
.fs0{font-size:35.422578pt;} |
||||
|
.fs1{font-size:42.507378pt;} |
||||
|
.y31{bottom:40.209333pt;} |
||||
|
.y30{bottom:98.577333pt;} |
||||
|
.y2f{bottom:131.676000pt;} |
||||
|
.y2d{bottom:136.325333pt;} |
||||
|
.y2e{bottom:149.608000pt;} |
||||
|
.y2c{bottom:152.265333pt;} |
||||
|
.y2b{bottom:185.362667pt;} |
||||
|
.y2a{bottom:201.302667pt;} |
||||
|
.y29{bottom:234.401333pt;} |
||||
|
.y28{bottom:252.334667pt;} |
||||
|
.y27{bottom:270.266667pt;} |
||||
|
.y0{bottom:284.000000pt;} |
||||
|
.y26{bottom:289.262667pt;} |
||||
|
.y25{bottom:304.804000pt;} |
||||
|
.y24{bottom:332.700000pt;} |
||||
|
.y23{bottom:348.640000pt;} |
||||
|
.y22{bottom:366.572000pt;} |
||||
|
.y21{bottom:382.512000pt;} |
||||
|
.y20{bottom:400.445333pt;} |
||||
|
.y1f{bottom:416.385333pt;} |
||||
|
.y1e{bottom:434.318667pt;} |
||||
|
.y1d{bottom:450.258667pt;} |
||||
|
.y1c{bottom:469.254667pt;} |
||||
|
.y1b{bottom:484.796000pt;} |
||||
|
.y1a{bottom:512.690667pt;} |
||||
|
.y19{bottom:528.630667pt;} |
||||
|
.y18{bottom:546.564000pt;} |
||||
|
.y17{bottom:562.504000pt;} |
||||
|
.y16{bottom:580.437333pt;} |
||||
|
.y15{bottom:596.377333pt;} |
||||
|
.y14{bottom:615.373333pt;} |
||||
|
.y13{bottom:630.914667pt;} |
||||
|
.y12{bottom:664.012000pt;} |
||||
|
.y11{bottom:679.953333pt;} |
||||
|
.y10{bottom:695.893333pt;} |
||||
|
.yf{bottom:711.833333pt;} |
||||
|
.ye{bottom:744.930667pt;} |
||||
|
.yd{bottom:760.872000pt;} |
||||
|
.yc{bottom:778.804000pt;} |
||||
|
.yb{bottom:794.744000pt;} |
||||
|
.ya{bottom:812.677333pt;} |
||||
|
.y9{bottom:828.617333pt;} |
||||
|
.y8{bottom:844.557333pt;} |
||||
|
.y7{bottom:847.214667pt;} |
||||
|
.y6{bottom:863.154667pt;} |
||||
|
.y5{bottom:896.252000pt;} |
||||
|
.y4{bottom:912.193333pt;} |
||||
|
.y3{bottom:930.776000pt;} |
||||
|
.y1{bottom:938.613333pt;} |
||||
|
.y2{bottom:938.680000pt;} |
||||
|
.h2{height:26.106440pt;} |
||||
|
.h4{height:26.248130pt;} |
||||
|
.h3{height:31.327937pt;} |
||||
|
.h1{height:644.000000pt;} |
||||
|
.h0{height:1056.000000pt;} |
||||
|
.w1{width:648.000000pt;} |
||||
|
.w0{width:816.000000pt;} |
||||
|
.x0{left:82.666667pt;} |
||||
|
.x8{left:207.517333pt;} |
||||
|
.x9{left:227.442667pt;} |
||||
|
.xa{left:240.725333pt;} |
||||
|
.x6{left:274.962667pt;} |
||||
|
.x7{left:278.654667pt;} |
||||
|
.xb{left:555.988000pt;} |
||||
|
.x1{left:676.108000pt;} |
||||
|
.x3{left:686.934667pt;} |
||||
|
.x2{left:688.534667pt;} |
||||
|
.x5{left:723.092000pt;} |
||||
|
.x4{left:724.692000pt;} |
||||
|
} |
@ -1,11 +0,0 @@ |
|||||
# Drew's Resume |
|
||||
[![Concourse](https://concourse.nulloctet.com/api/v1/teams/sothr/pipelines/resume/jobs/publish/badge)](https://concourse.nulloctet.com/teams/sothr/pipelines/resume) |
|
||||
|
|
||||
# Github Links |
|
||||
## [View Resume](https://warricksothr.github.io/resume) |
|
||||
## [Download Resume](https://warricksothr.github.io/resume/resume.pdf) |
|
||||
|
|
||||
# Personal Site |
|
||||
## [Site](https://sothr.com) |
|
||||
## [View Resume](https://sothr.com/resume/) |
|
||||
## [Download Resume](https://sothr.com/resume/resume.pdf) |
|
@ -0,0 +1,5 @@ |
|||||
|
/*! |
||||
|
* Base CSS for pdf2htmlEX |
||||
|
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> |
||||
|
* https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE |
||||
|
*/#sidebar{position:absolute;top:0;left:0;bottom:0;width:250px;padding:0;margin:0;overflow:auto}#page-container{position:absolute;top:0;left:0;margin:0;padding:0;border:0}@media screen{#sidebar.opened+#page-container{left:250px}#page-container{bottom:0;right:0;overflow:auto}.loading-indicator{display:none}.loading-indicator.active{display:block;position:absolute;width:64px;height:64px;top:50%;left:50%;margin-top:-32px;margin-left:-32px}.loading-indicator img{position:absolute;top:0;left:0;bottom:0;right:0}}@media print{@page{margin:0}html{margin:0}body{margin:0;-webkit-print-color-adjust:exact}#sidebar{display:none}#page-container{width:auto;height:auto;overflow:visible;background-color:transparent}.d{display:none}}.pf{position:relative;background-color:white;overflow:hidden;margin:0;border:0}.pc{position:absolute;border:0;padding:0;margin:0;top:0;left:0;width:100%;height:100%;overflow:hidden;display:block;transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0}.pc.opened{display:block}.bf{position:absolute;border:0;margin:0;top:0;bottom:0;width:100%;height:100%;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.bi{position:absolute;border:0;margin:0;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}@media print{.pf{margin:0;box-shadow:none;page-break-after:always;page-break-inside:avoid}@-moz-document url-prefix(){.pf{overflow:visible;border:1px solid #fff}.pc{overflow:visible}}}.c{position:absolute;border:0;padding:0;margin:0;overflow:hidden;display:block}.t{position:absolute;white-space:pre;font-size:1px;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%;unicode-bidi:bidi-override;-moz-font-feature-settings:"liga" 0}.t:after{content:''}.t:before{content:'';display:inline-block}.t span{position:relative;unicode-bidi:bidi-override}._{display:inline-block;color:transparent;z-index:-1}::selection{background:rgba(127,255,255,0.4)}::-moz-selection{background:rgba(127,255,255,0.4)}.pi{display:none}.d{position:absolute;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%}.it{border:0;background-color:rgba(255,255,255,0.0)}.ir:hover{cursor:pointer} |
After Width: 972 | Height: 966 | Size: 4.1 KiB |
@ -0,0 +1,7 @@ |
|||||
|
/* |
||||
|
Copyright 2012 Mozilla Foundation |
||||
|
Copyright 2013 Lu Wang <coolwanglu@gmail.com> |
||||
|
Apachine License Version 2.0 |
||||
|
*/ |
||||
|
(function(){function b(a,b,e,f){var c=(a.className||"").split(/\s+/g);""===c[0]&&c.shift();var d=c.indexOf(b);0>d&&e&&c.push(b);0<=d&&f&&c.splice(d,1);a.className=c.join(" ");return 0<=d}if(!("classList"in document.createElement("div"))){var e={add:function(a){b(this.element,a,!0,!1)},contains:function(a){return b(this.element,a,!1,!1)},remove:function(a){b(this.element,a,!1,!0)},toggle:function(a){b(this.element,a,!0,!0)}};Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){if(this._classList)return this._classList; |
||||
|
var a=Object.create(e,{element:{value:this,writable:!1,enumerable:!0}});Object.defineProperty(this,"_classList",{value:a,writable:!1,enumerable:!1});return a},enumerable:!0})}})(); |
@ -1,44 +0,0 @@ |
|||||
% Cover letter using letter.sty |
|
||||
\documentclass{letter} % Uses 10pt |
|
||||
%Use \documentstyle[newcent]{letter} for New Century Schoolbook postscript font |
|
||||
% the following commands control the margins: |
|
||||
\topmargin=-1in % Make letterhead start about 1 inch from top of page |
|
||||
\textheight=8in % text height can be bigger for a longer letter |
|
||||
\oddsidemargin=0pt % leftmargin is 1 inch |
|
||||
\textwidth=6.5in % textwidth of 6.5in leaves 1 inch for right margin |
|
||||
|
|
||||
\begin{document} |
|
||||
|
|
||||
\signature{\vspace{-30pt} Drew Short} % name for signature |
|
||||
\longindentation=0pt % needed to get closing flush left |
|
||||
\let\raggedleft\raggedright % needed to get date flush left |
|
||||
|
|
||||
\begin{letter}{Elastic \\ |
|
||||
3300 N Interstate 35, 7th Floor \\ |
|
||||
Austin, TX 78705} |
|
||||
|
|
||||
\begin{flushleft} |
|
||||
{\large\bf Drew Short} |
|
||||
\end{flushleft} |
|
||||
\medskip\hrule height 1pt |
|
||||
\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}r@{}} |
|
||||
drew@sothr.com & 1430 Taylor Ave W \\ |
|
||||
(651) 285-4565 & Saint Paul, MN 55104 |
|
||||
\end{tabular*} |
|
||||
\vfill % forces letterhead to top of page |
|
||||
|
|
||||
\opening{Dear Hiring Manager for the Senior Java Engineer - Security Position:} |
|
||||
|
|
||||
\noindent I've been an avid supporter of Elastic products stretching back to my push for the ELK stack as a log aggregation, searching, and data visualization platform within Cargill Risk Management. So, when I found your open Senior Java Engineer position through the LinkedIn job boards I was excited to consider the possibility of directly contributing to the Elasticsearch platform. |
|
||||
|
|
||||
\noindent In my 8 years of professional software engineering experience, I've moved through testing, development, mentoring and leadership roles and have spent a significant amount of that time addressing performance and security issues within both large Spring applications and Spring Boot microservices. I recently transitioned to a lead role within a DevOps group as part of a long term initiative to align the operations team with the technical architecture team. As a result of that role change I've also been responsible for the technical analysis, triaging, and assignment of security issues to domain teams. Security is a complicated field and often a series of innocuous choices lead to a vulnerabilities. I believe with my varied experience I can offer unique insights and solutions. |
|
||||
|
|
||||
\noindent I look forward to connecting about this opportunity. Please feel free to reach out to me at (651) 285-4565 or drew@sothr.com |
|
||||
|
|
||||
\closing{Thank you for your time,} |
|
||||
|
|
||||
%\encl{} % Enclosures |
|
||||
|
|
||||
\end{letter} |
|
||||
|
|
||||
\end{document} |
|
@ -1,72 +0,0 @@ |
|||||
% Cover letter using letter.sty |
|
||||
\documentclass{letter} % Uses 10pt |
|
||||
%Use \documentstyle[newcent]{letter} for New Century Schoolbook postscript font |
|
||||
% the following commands control the margins: |
|
||||
\topmargin=-1in % Make letterhead start about 1 inch from top of page |
|
||||
\textheight=8in % text height can be bigger for a longer letter |
|
||||
\oddsidemargin=0pt % leftmargin is 1 inch |
|
||||
\textwidth=6.5in % textwidth of 6.5in leaves 1 inch for right margin |
|
||||
|
|
||||
\begin{document} |
|
||||
|
|
||||
\signature{Drew P. Short} % name for signature |
|
||||
\longindentation=0pt % needed to get closing flush left |
|
||||
\let\raggedleft\raggedright % needed to get date flush left |
|
||||
|
|
||||
|
|
||||
|
|
||||
\begin{letter}{ |
|
||||
Mozilla Corporation \\ |
|
||||
331 E. Evelyn Avenue \\ |
|
||||
Mountain View, CA 94041} |
|
||||
|
|
||||
|
|
||||
\begin{flushleft} |
|
||||
{\large\bf Drew P. Short} |
|
||||
\end{flushleft} |
|
||||
\medskip\hrule height 1pt |
|
||||
\begin{flushright} |
|
||||
\hfill 1430 Taylor Ave W, Saint Paul, MN 55104 \\ |
|
||||
\hfill (651) 285-4565 |
|
||||
\end{flushright} |
|
||||
\vfill % forces letterhead to top of page |
|
||||
|
|
||||
|
|
||||
\opening{Dear Hiring Manager for the Research Engineer Position:} |
|
||||
|
|
||||
\noindent I found your open Research Engineer position through the |
|
||||
Mozilla career site and am applying because this role aligns with my |
|
||||
future goals as a software engineer. As a loyal user of Mozilla |
|
||||
products I deeply resonate with Mozilla's goal of building a better |
|
||||
Internet and am excited about the possibility to work for a company |
|
||||
that has changed the Internet so profoundly. |
|
||||
|
|
||||
\noindent For the past 3 years I have been expanding and maintaining |
|
||||
a large Java Spring web application for Cargill Inc. Risk Management. |
|
||||
This has made me sensitive to the difficulties in providing a unified |
|
||||
experience on the web. I would like to use my skills and ambitions |
|
||||
to make the web a better place for everyone; developers, designers and users |
|
||||
alike. I have hobbyist experience with Rust and love the work I |
|
||||
have done in the language so far, I think it has a very bright future |
|
||||
ahead of it. |
|
||||
|
|
||||
\noindent I would love to have an opportunity to share my experience, |
|
||||
discuss the position, and explore the unique background I can bring |
|
||||
to the team. |
|
||||
|
|
||||
\closing{Thanks for your time,} |
|
||||
|
|
||||
|
|
||||
|
|
||||
%\encl{} % Enclosures |
|
||||
|
|
||||
\end{letter} |
|
||||
|
|
||||
|
|
||||
\end{document} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -1,66 +0,0 @@ |
|||||
% Cover letter using letter.sty |
|
||||
\documentclass{letter} % Uses 10pt |
|
||||
%Use \documentstyle[newcent]{letter} for New Century Schoolbook postscript font |
|
||||
% the following commands control the margins: |
|
||||
\topmargin=-1in % Make letterhead start about 1 inch from top of page |
|
||||
\textheight=8in % text height can be bigger for a longer letter |
|
||||
\oddsidemargin=0pt % leftmargin is 1 inch |
|
||||
\textwidth=6.5in % textwidth of 6.5in leaves 1 inch for right margin |
|
||||
|
|
||||
\begin{document} |
|
||||
|
|
||||
\signature{\vspace{-30pt} Drew Short} % name for signature |
|
||||
\longindentation=0pt % needed to get closing flush left |
|
||||
\let\raggedleft\raggedright % needed to get date flush left |
|
||||
|
|
||||
\begin{letter}{Ms. Terri Roberts \\ |
|
||||
Senior Staff Recruiter \\ |
|
||||
XYZ Corporation \\ |
|
||||
Rt. 56 \\ |
|
||||
Anytown, New Jersey 05867} |
|
||||
|
|
||||
\begin{flushleft} |
|
||||
{\large\bf Susan R. Bumpershoot} |
|
||||
\end{flushleft} |
|
||||
\medskip\hrule height 1pt |
|
||||
\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}r@{}} |
|
||||
drew@sothr.com & 1430 Taylor Ave W \\ |
|
||||
(651) 285-4565 & Saint Paul, MN 55104 |
|
||||
\end{tabular*} |
|
||||
\vfill % forces letterhead to top of page |
|
||||
|
|
||||
\opening{Dear Ms. Roberts:} |
|
||||
|
|
||||
\noindent PARAGRAPH ONE: State reason for letter, name the position or type |
|
||||
of work you are applying for and identify source from which you |
|
||||
learned of the opening. (i.e. Career Development Center, |
|
||||
newspaper, employment service, personal contact). |
|
||||
|
|
||||
\noindent PARAGRAPH TWO: Indicate why you are interested in the position, |
|
||||
the company, its products, services - above all, stress what you |
|
||||
can do for the employer. If you are a recent graduate, explain |
|
||||
how your academic background makes you a qualified candidate for |
|
||||
the position. If you have practical work experience, point out |
|
||||
specific achievements or unique qualifications. Try not to repeat |
|
||||
the same information the reader will find in the resume. Refer |
|
||||
the reader to the enclosed resume or application which summarizes |
|
||||
your qualifications, training, and experiences. The purpose of |
|
||||
this section is to strengthen your resume by providing details |
|
||||
which bring your experiences to life. |
|
||||
|
|
||||
\noindent PARAGRAPH THREE: Request a personal interview and indicate your |
|
||||
flexibility as to the time and place. Repeat your phone number in |
|
||||
the letter and offer assistance to help in a speedy response. For |
|
||||
example, state that you will be in the city where the company is |
|
||||
located on a certain date and would like to set up an interview. |
|
||||
Or, state that you will call on a certain date to set up an |
|
||||
interview. End the letter by thanking the employer for taking |
|
||||
time to consider your credentials. |
|
||||
|
|
||||
\closing{Sincerely yours,} |
|
||||
|
|
||||
\encl{} % Enclosures |
|
||||
|
|
||||
\end{letter} |
|
||||
|
|
||||
\end{document} |
|
@ -1,356 +0,0 @@ |
|||||
%% |
|
||||
%% This is file `datenumber.sty', |
|
||||
%% generated with the docstrip utility. |
|
||||
%% |
|
||||
%% The original source files were: |
|
||||
%% |
|
||||
%% datenumber.dtx (with options: `datenumber') |
|
||||
%% |
|
||||
%% This file is part of the `datenumber' package, |
|
||||
%% |
|
||||
%% Copyright (C) 2001 J"org-Michael Schr"oder. |
|
||||
%% |
|
||||
%% IMPORTANT NOTICE: |
|
||||
%% |
|
||||
%% This program may be distributed and/or modified under the |
|
||||
%% conditions of the LaTeX Project Public License, either version 1.2 |
|
||||
%% of this license or (at your option) any later version. |
|
||||
%% The latest version of this license is in |
|
||||
%% http://www.latex-project.org/lppl.txt |
|
||||
%% and version 1.2 or later is part of all distributions of LaTeX |
|
||||
%% version 1999/12/01 or later. |
|
||||
%% |
|
||||
%% This program consists of all files listed in README.txt. |
|
||||
%% |
|
||||
%% For error reports, or offers to help make this a more powerful |
|
||||
%% tool, please contact me on schrj020@mail.uni-mainz.de |
|
||||
%% |
|
||||
\def\fileversion{v0.02} |
|
||||
\def\filedate{2001/08/06} |
|
||||
|
|
||||
\NeedsTeXFormat{LaTeX2e} |
|
||||
\ProvidesPackage{datenumber}[\filedate \fileversion] |
|
||||
|
|
||||
\DeclareOption{english}{\input datenumberenglish.ldf} |
|
||||
\DeclareOption{USenglish}{\input datenumberUSenglish.ldf} |
|
||||
\DeclareOption{french}{\input datenumberfrench.ldf} |
|
||||
\DeclareOption{italian}{\input datenumberitalian.ldf} |
|
||||
\DeclareOption{spanish}{\input datenumberspanish.ldf} |
|
||||
\DeclareOption{german}{\input datenumbergerman.ldf} |
|
||||
\DeclareOption{ngerman}{\input datenumbergerman.ldf} |
|
||||
\input datenumberUSenglish.ldf |
|
||||
\ProcessOptions |
|
||||
\newcounter{@dayscnt} |
|
||||
\newcounter{@startyear} |
|
||||
|
|
||||
\def\setstartyear#1{% |
|
||||
\ifnum#1<1 |
|
||||
\errmessage{Package datenumber: startyear < 1}% |
|
||||
\fi |
|
||||
\setcounter{@startyear}{#1}% |
|
||||
\setdatetoday |
|
||||
} |
|
||||
|
|
||||
\def\thestartyear{\the@startyear} |
|
||||
|
|
||||
\def\setmydatenumber#1#2#3#4{% |
|
||||
\ifvaliddate{#2}{#3}{#4}% |
|
||||
\else |
|
||||
\errmessage{\@errmessage}% |
|
||||
\fi |
|
||||
\ifnum\the@startyear<1 |
|
||||
\errmessage{Package datenumber: startyear < 1}% |
|
||||
\fi |
|
||||
\ifnum#2<\the@startyear |
|
||||
\errmessage{Package datenumber: datenumber < startyear (#2 < \the@startyear)}% |
|
||||
\fi |
|
||||
\setcounter{@dayscnt}{0}% |
|
||||
\ifnum#2>\the@startyear |
|
||||
\relax\@yearloop{#2}% |
|
||||
\fi |
|
||||
\addtocounter{@dayscnt}{% |
|
||||
\ifcase #3% |
|
||||
\or 0\or 31\or 59 |
|
||||
\or 90\or 120\or 151 |
|
||||
\or 181\or 212\or 243 |
|
||||
\or 273\or 304\or 334 |
|
||||
\fi |
|
||||
}% |
|
||||
\ifleapyear{#2}% |
|
||||
\ifnum#3>2 |
|
||||
\addtocounter{@dayscnt}{1}% |
|
||||
\fi |
|
||||
\fi |
|
||||
\ifnum#2=1582 |
|
||||
\ifnum#3>10 |
|
||||
\addtocounter{@dayscnt}{-10}% |
|
||||
\fi |
|
||||
\ifnum#3=10 |
|
||||
\ifnum#4>14 |
|
||||
\addtocounter{@dayscnt}{-10}% |
|
||||
\fi |
|
||||
\fi |
|
||||
\fi |
|
||||
\addtocounter{@dayscnt}{#4}% |
|
||||
\setcounter{#1}{\the@dayscnt}% |
|
||||
} |
|
||||
|
|
||||
\def\setmydatebynumber#1#2#3#4{% |
|
||||
\ifnum\the@startyear<1 |
|
||||
\errmessage{Package datenumber: startyear < 1}% |
|
||||
\fi |
|
||||
\ifnum#1<1 |
|
||||
\errmessage{Package datenumber: datenumber < 1}% |
|
||||
\fi |
|
||||
\setcounter{#2}{\the@startyear}% |
|
||||
\setcounter{@dayscnt}{1}% |
|
||||
\loop |
|
||||
\ifleapyear{\thedateyear}% |
|
||||
\@tempcnta=366 |
|
||||
\else |
|
||||
\@tempcnta=365 |
|
||||
\fi |
|
||||
\ifnum\thedateyear=1582 |
|
||||
\@tempcnta=355 |
|
||||
\fi |
|
||||
\addtocounter{@dayscnt}{\the\@tempcnta}% |
|
||||
\ifnum\the@dayscnt<#1\addtocounter{dateyear}{1}% |
|
||||
\repeat |
|
||||
\addtocounter{@dayscnt}{-\the\@tempcnta}% |
|
||||
% |
|
||||
\setcounter{#3}{1}% |
|
||||
\setcounter{#4}{1}% |
|
||||
\setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}% |
|
||||
\ifnum#1>\the@dayscnt\relax |
|
||||
\loop |
|
||||
\mynextdate{#2}{#3}{#4}% |
|
||||
\addtocounter{@dayscnt}{1}% |
|
||||
\ifnum\the@dayscnt<#1\relax |
|
||||
\repeat |
|
||||
\setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}% |
|
||||
\fi |
|
||||
} |
|
||||
|
|
||||
\def\mynextdate#1#2#3{% |
|
||||
\ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}% |
|
||||
\else |
|
||||
\errmessage{\@errmessage}% |
|
||||
\fi |
|
||||
\addtocounter{#3}{1}% |
|
||||
\ifleapyear{\value{#1}}% |
|
||||
\@tempcnta=29 |
|
||||
\else |
|
||||
\@tempcnta=28 |
|
||||
\fi |
|
||||
\ifnum\value{#3}>% |
|
||||
\ifcase\value{#2}\or31\or\@tempcnta\or31\or30\or31\or30% |
|
||||
\or31\or31\or30\or31\or30\else31% |
|
||||
\fi\relax |
|
||||
\setcounter{#3}{1}% |
|
||||
\addtocounter{#2}{1}% |
|
||||
\ifnum\value{#2}>12 |
|
||||
\setcounter{#2}{1}% |
|
||||
\addtocounter{#1}{1}% |
|
||||
\fi |
|
||||
\fi |
|
||||
\ifnum\value{#1}=1582 |
|
||||
\ifnum\value{#2}=10 |
|
||||
\ifnum\value{#3}=5 |
|
||||
\setcounter{#3}{15}% |
|
||||
\fi |
|
||||
\fi |
|
||||
\fi |
|
||||
} |
|
||||
|
|
||||
\def\myprevdate#1#2#3{% |
|
||||
\ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}% |
|
||||
\else |
|
||||
\errmessage{\@errmessage}% |
|
||||
\fi |
|
||||
\addtocounter{#3}{-1}% |
|
||||
\ifleapyear{\value{#1}}% |
|
||||
\@tempcnta=29 |
|
||||
\else |
|
||||
\@tempcnta=28 |
|
||||
\fi |
|
||||
\ifnum\value{#3}=0 |
|
||||
\addtocounter{#2}{-1}% |
|
||||
\ifnum\value{#2}=0 |
|
||||
\addtocounter{#1}{-1}% |
|
||||
\setcounter{#2}{12}% |
|
||||
\fi |
|
||||
\setcounter{#3}{% |
|
||||
\ifcase\value{#2}\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30 |
|
||||
\or 31\or 31\or 30\or 31\or 30\else 31 |
|
||||
\fi |
|
||||
}% |
|
||||
\fi |
|
||||
\ifnum\value{#1}=1582 |
|
||||
\ifnum\value{#2}=10 |
|
||||
\ifnum\value{#3}=14 |
|
||||
\setcounter{#3}{4}% |
|
||||
\fi |
|
||||
\fi |
|
||||
\fi |
|
||||
} |
|
||||
|
|
||||
|
|
||||
\newcounter{datenumber} |
|
||||
\newcounter{dateyear} |
|
||||
\newcounter{datemonth} |
|
||||
\newcounter{dateday} |
|
||||
\newcounter{datedayname} |
|
||||
|
|
||||
\def\setdatenumber#1#2#3{% |
|
||||
\setmydatenumber{datenumber}{#1}{#2}{#3}% |
|
||||
\setcounter{dateyear}{#1}% |
|
||||
\setcounter{datemonth}{#2}% |
|
||||
\setcounter{dateday}{#3}% |
|
||||
\setdaynamebynumber{\thedatenumber}% |
|
||||
\setmonthname{\thedatemonth}% |
|
||||
} |
|
||||
|
|
||||
\def\setdatebynumber#1{% |
|
||||
\setmydatebynumber{#1}{dateyear}{datemonth}{dateday}% |
|
||||
\setcounter{datenumber}{#1}% |
|
||||
\setdaynamebynumber{\thedatenumber}% |
|
||||
\setmonthname{\thedatemonth}% |
|
||||
} |
|
||||
|
|
||||
\def\nextdate{% |
|
||||
\mynextdate{dateyear}{datemonth}{dateday}% |
|
||||
\setdate{\thedateyear}{\thedatemonth}{\thedateday}% |
|
||||
} |
|
||||
|
|
||||
\def\prevdate{% |
|
||||
\myprevdate{dateyear}{datemonth}{dateday}% |
|
||||
\setdate{\thedateyear}{\thedatemonth}{\thedateday}% |
|
||||
} |
|
||||
|
|
||||
\def\setdate#1#2#3{%#1 year, #2 month, #3 day |
|
||||
\setdatenumber{#1}{#2}{#3}% |
|
||||
} |
|
||||
|
|
||||
\def\setdatetoday{% |
|
||||
\setdatenumber{\the\year}{\the\month}{\the\day}% |
|
||||
} |
|
||||
|
|
||||
|
|
||||
\def\setmonthname#1{% |
|
||||
\def\datemonthname{\@monthname{#1}}% |
|
||||
} |
|
||||
|
|
||||
|
|
||||
\def\setdayname#1{% |
|
||||
\def\datedayname{\@dayname{#1}}% |
|
||||
} |
|
||||
|
|
||||
\def\setdaynamebynumber#1{% |
|
||||
\@tempcnta=#1\relax |
|
||||
\ifnum\the@startyear=1800\advance \@tempcnta by 1\fi |
|
||||
\ifnum\the@startyear=1900\advance \@tempcnta by 6\fi |
|
||||
\ifnum\the@startyear=2000\advance \@tempcnta by 4\fi |
|
||||
\@modulo{\the\@tempcnta}{7}% |
|
||||
\setcounter{datedayname}{\the\@den}% |
|
||||
\addtocounter{datedayname}{1}% |
|
||||
\setdayname{\thedatedayname}% |
|
||||
} |
|
||||
|
|
||||
\def\datedate{\@datedate}% |
|
||||
|
|
||||
\def\dateselectlanguage#1{% |
|
||||
\csname @datelanguage#1\endcsname |
|
||||
\setdayname{\thedatedayname}% |
|
||||
\setmonthname{\thedatemonth}% |
|
||||
} |
|
||||
|
|
||||
\def\ifleapyear#1{%#1 year |
|
||||
\ifnum#1>1500 |
|
||||
\@modulo{#1}{100}% |
|
||||
\ifnum\@den=0 |
|
||||
\@modulo{#1}{400}% |
|
||||
\else |
|
||||
\@modulo{#1}{4}% |
|
||||
\fi |
|
||||
\else |
|
||||
\@modulo{#1}{4}% |
|
||||
\fi |
|
||||
\ifnum\@den=0 |
|
||||
} |
|
||||
|
|
||||
\def\ifvaliddate#1#2#3{% |
|
||||
\ifleapyear{#1}% |
|
||||
\@tempcnta=29 |
|
||||
\else |
|
||||
\@tempcnta=28 |
|
||||
\fi |
|
||||
\gdef\@errmessage{}% |
|
||||
\ifnum#1<1 |
|
||||
\gdef\@errmessage{Package datenumber: % |
|
||||
invalid date: year < 1, #1/#2/#3}% |
|
||||
\fi% |
|
||||
\ifnum#2<1 |
|
||||
\gdef\@errmessage{Package datenumber: % |
|
||||
invalid date: month < 1, #1/#2/#3}% |
|
||||
\fi% |
|
||||
\ifnum#2>12 |
|
||||
\gdef\@errmessage{Package datenumber: % |
|
||||
invalid date: month > 12, #1/#2/#3}% |
|
||||
\fi% |
|
||||
\ifnum#3<1 |
|
||||
\gdef\@errmessage{Package datenumber: % |
|
||||
invalid date: day < 1, #1/#2/#3}% |
|
||||
\fi% |
|
||||
\@tempcntb= |
|
||||
\ifcase#2 31\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30 |
|
||||
\or 31\or 31\or 30\or 31\or 30\else 31 |
|
||||
\fi\relax |
|
||||
\ifnum#3>\@tempcntb |
|
||||
\gdef\@errmessage{Package datenumber: % |
|
||||
invalid date: day > \the\@tempcntb, #1/#2/#3}% |
|
||||
\fi% |
|
||||
\ifnum#1=1582 |
|
||||
\ifnum#2=10 |
|
||||
\ifnum#3>4 |
|
||||
\ifnum#3<15 |
|
||||
\gdef\@errmessage{Package datenumber: % |
|
||||
invalid date: #1/#2/#3}% |
|
||||
\fi |
|
||||
\fi |
|
||||
\fi |
|
||||
\fi |
|
||||
\ifx\@errmessage\empty |
|
||||
} |
|
||||
|
|
||||
\def\@yearloop#1{% |
|
||||
\@tempcnta=\the@startyear% |
|
||||
\loop |
|
||||
\ifleapyear{\@tempcnta}% |
|
||||
\addtocounter{@dayscnt}{366}% |
|
||||
\else |
|
||||
\addtocounter{@dayscnt}{365}% |
|
||||
\fi |
|
||||
\ifnum\@tempcnta=1582 |
|
||||
\addtocounter{@dayscnt}{-10}% |
|
||||
\fi |
|
||||
\advance \@tempcnta by 1 |
|
||||
\ifnum\@tempcnta=#1\else |
|
||||
\repeat |
|
||||
} |
|
||||
|
|
||||
\newcount\@nom\newcount\@den |
|
||||
|
|
||||
\def\@modulo#1#2{% |
|
||||
\@nom=#1\relax |
|
||||
\@den=#2\relax |
|
||||
\divide\@nom by \@den% |
|
||||
\multiply\@nom by \@den% |
|
||||
\@den=#1% |
|
||||
\advance\@den by -\@nom% |
|
||||
} |
|
||||
|
|
||||
\setstartyear{1800} |
|
||||
|
|
||||
\endinput |
|
||||
%% |
|
||||
%% End of file `datenumber.sty'. |
|
@ -1,53 +0,0 @@ |
|||||
%% |
|
||||
%% This is file `datenumberUSenglish.ldf', |
|
||||
%% generated with the docstrip utility. |
|
||||
%% |
|
||||
%% The original source files were: |
|
||||
%% |
|
||||
%% datenumber.dtx (with options: `USenglish') |
|
||||
%% |
|
||||
%% This file is part of the `datenumber' package, |
|
||||
%% |
|
||||
%% Copyright (C) 2001 J"org-Michael Schr"oder. |
|
||||
%% |
|
||||
%% IMPORTANT NOTICE: |
|
||||
%% |
|
||||
%% This program may be distributed and/or modified under the |
|
||||
%% conditions of the LaTeX Project Public License, either version 1.2 |
|
||||
%% of this license or (at your option) any later version. |
|
||||
%% The latest version of this license is in |
|
||||
%% http://www.latex-project.org/lppl.txt |
|
||||
%% and version 1.2 or later is part of all distributions of LaTeX |
|
||||
%% version 1999/12/01 or later. |
|
||||
%% |
|
||||
%% This program consists of all files listed in README.txt. |
|
||||
%% |
|
||||
%% For error reports, or offers to help make this a more powerful |
|
||||
%% tool, please contact me on schrj020@mail.uni-mainz.de |
|
||||
%% |
|
||||
|
|
||||
\ProvidesFile{datenumberUSenglish.ldf} |
|
||||
|
|
||||
\def\@datelanguageUSenglish{% |
|
||||
\def\@dayname{\@daynameUSenglish} |
|
||||
\def\@monthname{\@monthnameUSenglish}% |
|
||||
\def\@datedate{\@datedateUSenglish}% |
|
||||
} |
|
||||
|
|
||||
\def\@monthnameUSenglish#1{% |
|
||||
\ifcase#1\or |
|
||||
January\or February\or March\or April\or May\or June\or |
|
||||
July\or August\or September\or October\or November\or December\fi}% |
|
||||
|
|
||||
\def\@daynameUSenglish#1{% |
|
||||
\ifcase#1\or |
|
||||
Monday\or Tuesday\or Wednesday\or Thursday\or |
|
||||
Friday\or Saturday\or Sunday\fi} |
|
||||
|
|
||||
\def\@datedateUSenglish{\datemonthname\space\thedateday, \thedateyear} |
|
||||
|
|
||||
\@datelanguageUSenglish |
|
||||
|
|
||||
\endinput |
|
||||
%% |
|
||||
%% End of file `datenumberUSenglish.ldf'. |
|
@ -1,57 +0,0 @@ |
|||||
%% |
|
||||
%% This is file `datenumberenglish.ldf', |
|
||||
%% generated with the docstrip utility. |
|
||||
%% |
|
||||
%% The original source files were: |
|
||||
%% |
|
||||
%% datenumber.dtx (with options: `english') |
|
||||
%% |
|
||||
%% This file is part of the `datenumber' package, |
|
||||
%% |
|
||||
%% Copyright (C) 2001 J"org-Michael Schr"oder. |
|
||||
%% |
|
||||
%% IMPORTANT NOTICE: |
|
||||
%% |
|
||||
%% This program may be distributed and/or modified under the |
|
||||
%% conditions of the LaTeX Project Public License, either version 1.2 |
|
||||
%% of this license or (at your option) any later version. |
|
||||
%% The latest version of this license is in |
|
||||
%% http://www.latex-project.org/lppl.txt |
|
||||
%% and version 1.2 or later is part of all distributions of LaTeX |
|
||||
%% version 1999/12/01 or later. |
|
||||
%% |
|
||||
%% This program consists of all files listed in README.txt. |
|
||||
%% |
|
||||
%% For error reports, or offers to help make this a more powerful |
|
||||
%% tool, please contact me on schrj020@mail.uni-mainz.de |
|
||||
%% |
|
||||
|
|
||||
\ProvidesFile{datenumberenglish.ldf} |
|
||||
|
|
||||
\def\@datelanguageenglish{% |
|
||||
\def\@dayname{\@daynameenglish} |
|
||||
\def\@monthname{\@monthnameenglish}% |
|
||||
\def\@datedate{\@datedateenglish}% |
|
||||
} |
|
||||
|
|
||||
\def\@monthnameenglish#1{% |
|
||||
\ifcase#1\or |
|
||||
January\or February\or March\or April\or May\or June\or |
|
||||
July\or August\or September\or October\or November\or December\fi}% |
|
||||
|
|
||||
\def\@daynameenglish#1{% |
|
||||
\ifcase#1\or |
|
||||
Monday\or Tuesday\or Wednesday\or Thursday\or |
|
||||
Friday\or Saturday\or Sunday\fi} |
|
||||
|
|
||||
\def\@datedateenglish{\thedateday \ifcase\thedateday \or |
|
||||
st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or |
|
||||
th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or |
|
||||
st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or |
|
||||
st\fi~\datemonthname \space\thedateyear} |
|
||||
|
|
||||
\@datelanguageenglish |
|
||||
|
|
||||
\endinput |
|
||||
%% |
|
||||
%% End of file `datenumberenglish.ldf'. |
|
@ -0,0 +1,5 @@ |
|||||
|
/*! |
||||
|
* Fancy styles for pdf2htmlEX |
||||
|
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> |
||||
|
* https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE |
||||
|
*/@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes swing{0{transform:rotate(0)}10%{transform:rotate(0)}90%{transform:rotate(720deg)}100%{transform:rotate(720deg)}}@-webkit-keyframes swing{0{-webkit-transform:rotate(0)}10%{-webkit-transform:rotate(0)}90%{-webkit-transform:rotate(720deg)}100%{-webkit-transform:rotate(720deg)}}@media screen{#sidebar{background-color:#2f3236;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjNDAzYzNmIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDBMNCA0Wk00IDBMMCA0WiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2U9IiMxZTI5MmQiPjwvcGF0aD4KPC9zdmc+")}#outline{font-family:Georgia,Times,"Times New Roman",serif;font-size:13px;margin:2em 1em}#outline ul{padding:0}#outline li{list-style-type:none;margin:1em 0}#outline li>ul{margin-left:1em}#outline a,#outline a:visited,#outline a:hover,#outline a:active{line-height:1.2;color:#e8e8e8;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;display:block;overflow:hidden;outline:0}#outline a:hover{color:#0cf}#page-container{background-color:#9e9e9e;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1IiBoZWlnaHQ9IjUiPgo8cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSI1IiBmaWxsPSIjOWU5ZTllIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDVMNSAwWk02IDRMNCA2Wk0tMSAxTDEgLTFaIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMSI+PC9wYXRoPgo8L3N2Zz4=");-webkit-transition:left 500ms;transition:left 500ms}.pf{margin:13px auto;box-shadow:1px 1px 3px 1px #333;border-collapse:separate}.pc.opened{-webkit-animation:fadein 100ms;animation:fadein 100ms}.loading-indicator.active{-webkit-animation:swing 1.5s ease-in-out .01s infinite alternate none;animation:swing 1.5s ease-in-out .01s infinite alternate none}.checked{background:no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goQDSYgDiGofgAAAslJREFUOMvtlM9LFGEYx7/vvOPM6ywuuyPFihWFBUsdNnA6KLIh+QPx4KWExULdHQ/9A9EfUodYmATDYg/iRewQzklFWxcEBcGgEplDkDtI6sw4PzrIbrOuedBb9MALD7zv+3m+z4/3Bf7bZS2bzQIAcrmcMDExcTeXy10DAFVVAQDksgFUVZ1ljD3yfd+0LOuFpmnvVVW9GHhkZAQcxwkNDQ2FSCQyRMgJxnVdy7KstKZpn7nwha6urqqfTqfPBAJAuVymlNLXoigOhfd5nmeiKL5TVTV+lmIKwAOA7u5u6Lped2BsbOwjY6yf4zgQQkAIAcedaPR9H67r3uYBQFEUFItFtLe332lpaVkUBOHK3t5eRtf1DwAwODiIubk5DA8PM8bYW1EU+wEgCIJqsCAIQAiB7/u253k2BQDDMJBKpa4mEon5eDx+UxAESJL0uK2t7XosFlvSdf0QAEmlUnlRFJ9Waho2Qghc1/U9z3uWz+eX+Wr+lL6SZfleEAQIggA8z6OpqSknimIvYyybSCReMsZ6TislhCAIAti2Dc/zejVNWwCAavN8339j27YbTg0AGGM3WltbP4WhlRWq6Q/btrs1TVsYHx+vNgqKoqBUKn2NRqPFxsbGJzzP05puUlpt0ukyOI6z7zjOwNTU1OLo6CgmJyf/gA3DgKIoWF1d/cIY24/FYgOU0pp0z/Ityzo8Pj5OTk9PbwHA+vp6zWghDC+VSiuRSOQgGo32UErJ38CO42wdHR09LBQK3zKZDDY2NupmFmF4R0cHVlZWlmRZ/iVJUn9FeWWcCCE4ODjYtG27Z2Zm5juAOmgdGAB2d3cBADs7O8uSJN2SZfl+WKlpmpumaT6Yn58vn/fs6XmbhmHMNjc3tzDGFI7jYJrm5vb29sDa2trPC/9aiqJUy5pOp4f6+vqeJ5PJBAB0dnZe/t8NBajx/z37Df5OGX8d13xzAAAAAElFTkSuQmCC)}} |
@ -1,32 +0,0 @@ |
|||||
%% |
|
||||
%% This is file `helvetica.sty', based on helvet.sty extended to include |
|
||||
%% definitions for rm and tt. This means commands such as \textbf, \textit, |
|
||||
%% etc. will appear in Helvetica. |
|
||||
%% Changes added by Harriet Borton on <1995/12/11> |
|
||||
%% |
|
||||
%% The original source files were: |
|
||||
%% |
|
||||
%% psfonts.dtx (with options: `helvet') |
|
||||
%% |
|
||||
%% Copyright (C) 1994 Sebastian Rahtz |
|
||||
%% All rights reserved. |
|
||||
%% |
|
||||
%% The original file is part of the PSNFSS2e package. |
|
||||
%% ----------------------------------------- |
|
||||
%% |
|
||||
%% This is a generated file. Permission is granted to to customize the |
|
||||
%% declarations in this file to serve the needs of your installation. |
|
||||
%% However, no permission is granted to distribute a modified version of |
|
||||
%% this file under its original name. |
|
||||
\def\fileversion{4.2} |
|
||||
\def\filedate{94/11/11} |
|
||||
\def\docdate {94/11/06} |
|
||||
\NeedsTeXFormat{LaTeX2e} |
|
||||
\ProvidesPackage{helvetica}[\filedate\space\fileversion\space |
|
||||
Helvetica PSNFSS2e package] |
|
||||
\renewcommand{\sfdefault}{phv} |
|
||||
\renewcommand{\rmdefault}{phv} |
|
||||
\renewcommand{\ttdefault}{pcr} |
|
||||
\endinput |
|
||||
%% |
|
||||
%% End of file `helvetica.sty'. |
|
32
index.html
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
After Width: 64 | Height: 64 | Size: 3.3 KiB |
@ -0,0 +1,27 @@ |
|||||
|
(function(){/* |
||||
|
pdf2htmlEX.js: Core UI functions for pdf2htmlEX |
||||
|
Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> and other contributors |
||||
|
https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE
|
||||
|
*/ |
||||
|
var pdf2htmlEX=window.pdf2htmlEX=window.pdf2htmlEX||{},CSS_CLASS_NAMES={page_frame:"pf",page_content_box:"pc",page_data:"pi",background_image:"bi",link:"l",input_radio:"ir",__dummy__:"no comma"},DEFAULT_CONFIG={container_id:"page-container",sidebar_id:"sidebar",outline_id:"outline",loading_indicator_cls:"loading-indicator",preload_pages:3,render_timeout:100,scale_step:0.9,key_handler:!0,hashchange_handler:!0,view_history_handler:!0,__dummy__:"no comma"},EPS=1E-6; |
||||
|
function invert(a){var b=a[0]*a[3]-a[1]*a[2];return[a[3]/b,-a[1]/b,-a[2]/b,a[0]/b,(a[2]*a[5]-a[3]*a[4])/b,(a[1]*a[4]-a[0]*a[5])/b]}function transform(a,b){return[a[0]*b[0]+a[2]*b[1]+a[4],a[1]*b[0]+a[3]*b[1]+a[5]]}function get_page_number(a){return parseInt(a.getAttribute("data-page-no"),16)}function disable_dragstart(a){for(var b=0,c=a.length;b<c;++b)a[b].addEventListener("dragstart",function(){return!1},!1)} |
||||
|
function clone_and_extend_objs(a){for(var b={},c=0,e=arguments.length;c<e;++c){var h=arguments[c],d;for(d in h)h.hasOwnProperty(d)&&(b[d]=h[d])}return b} |
||||
|
function Page(a){if(a){this.shown=this.loaded=!1;this.page=a;this.num=get_page_number(a);this.original_height=a.clientHeight;this.original_width=a.clientWidth;var b=a.getElementsByClassName(CSS_CLASS_NAMES.page_content_box)[0];b&&(this.content_box=b,this.original_scale=this.cur_scale=this.original_height/b.clientHeight,this.page_data=JSON.parse(a.getElementsByClassName(CSS_CLASS_NAMES.page_data)[0].getAttribute("data-data")),this.ctm=this.page_data.ctm,this.ictm=invert(this.ctm),this.loaded=!0)}} |
||||
|
Page.prototype={hide:function(){this.loaded&&this.shown&&(this.content_box.classList.remove("opened"),this.shown=!1)},show:function(){this.loaded&&!this.shown&&(this.content_box.classList.add("opened"),this.shown=!0)},rescale:function(a){this.cur_scale=0===a?this.original_scale:a;this.loaded&&(a=this.content_box.style,a.msTransform=a.webkitTransform=a.transform="scale("+this.cur_scale.toFixed(3)+")");a=this.page.style;a.height=this.original_height*this.cur_scale+"px";a.width=this.original_width*this.cur_scale+ |
||||
|
"px"},view_position:function(){var a=this.page,b=a.parentNode;return[b.scrollLeft-a.offsetLeft-a.clientLeft,b.scrollTop-a.offsetTop-a.clientTop]},height:function(){return this.page.clientHeight},width:function(){return this.page.clientWidth}};function Viewer(a){this.config=clone_and_extend_objs(DEFAULT_CONFIG,0<arguments.length?a:{});this.pages_loading=[];this.init_before_loading_content();var b=this;document.addEventListener("DOMContentLoaded",function(){b.init_after_loading_content()},!1)} |
||||
|
Viewer.prototype={scale:1,cur_page_idx:0,first_page_idx:0,init_before_loading_content:function(){this.pre_hide_pages()},initialize_radio_button:function(){for(var a=document.getElementsByClassName(CSS_CLASS_NAMES.input_radio),b=0;b<a.length;b++)a[b].addEventListener("click",function(){this.classList.toggle("checked")})},init_after_loading_content:function(){this.sidebar=document.getElementById(this.config.sidebar_id);this.outline=document.getElementById(this.config.outline_id);this.container=document.getElementById(this.config.container_id); |
||||
|
this.loading_indicator=document.getElementsByClassName(this.config.loading_indicator_cls)[0];for(var a=!0,b=this.outline.childNodes,c=0,e=b.length;c<e;++c)if("ul"===b[c].nodeName.toLowerCase()){a=!1;break}a||this.sidebar.classList.add("opened");this.find_pages();if(0!=this.pages.length){disable_dragstart(document.getElementsByClassName(CSS_CLASS_NAMES.background_image));this.config.key_handler&&this.register_key_handler();var h=this;this.config.hashchange_handler&&window.addEventListener("hashchange", |
||||
|
function(a){h.navigate_to_dest(document.location.hash.substring(1))},!1);this.config.view_history_handler&&window.addEventListener("popstate",function(a){a.state&&h.navigate_to_dest(a.state)},!1);this.container.addEventListener("scroll",function(){h.update_page_idx();h.schedule_render(!0)},!1);[this.container,this.outline].forEach(function(a){a.addEventListener("click",h.link_handler.bind(h),!1)});this.initialize_radio_button();this.render()}},find_pages:function(){for(var a=[],b={},c=this.container.childNodes, |
||||
|
e=0,h=c.length;e<h;++e){var d=c[e];d.nodeType===Node.ELEMENT_NODE&&d.classList.contains(CSS_CLASS_NAMES.page_frame)&&(d=new Page(d),a.push(d),b[d.num]=a.length-1)}this.pages=a;this.page_map=b},load_page:function(a,b,c){var e=this.pages;if(!(a>=e.length||(e=e[a],e.loaded||this.pages_loading[a]))){var e=e.page,h=e.getAttribute("data-page-url");if(h){this.pages_loading[a]=!0;var d=e.getElementsByClassName(this.config.loading_indicator_cls)[0];"undefined"===typeof d&&(d=this.loading_indicator.cloneNode(!0), |
||||
|
d.classList.add("active"),e.appendChild(d));var f=this,g=new XMLHttpRequest;g.open("GET",h,!0);g.onload=function(){if(200===g.status||0===g.status){var b=document.createElement("div");b.innerHTML=g.responseText;for(var d=null,b=b.childNodes,e=0,h=b.length;e<h;++e){var p=b[e];if(p.nodeType===Node.ELEMENT_NODE&&p.classList.contains(CSS_CLASS_NAMES.page_frame)){d=p;break}}b=f.pages[a];f.container.replaceChild(d,b.page);b=new Page(d);f.pages[a]=b;b.hide();b.rescale(f.scale);disable_dragstart(d.getElementsByClassName(CSS_CLASS_NAMES.background_image)); |
||||
|
f.schedule_render(!1);c&&c(b)}delete f.pages_loading[a]};g.send(null)}void 0===b&&(b=this.config.preload_pages);0<--b&&(f=this,setTimeout(function(){f.load_page(a+1,b)},0))}},pre_hide_pages:function(){var a="@media screen{."+CSS_CLASS_NAMES.page_content_box+"{display:none;}}",b=document.createElement("style");b.styleSheet?b.styleSheet.cssText=a:b.appendChild(document.createTextNode(a));document.head.appendChild(b)},render:function(){for(var a=this.container,b=a.scrollTop,c=a.clientHeight,a=b-c,b= |
||||
|
b+c+c,c=this.pages,e=0,h=c.length;e<h;++e){var d=c[e],f=d.page,g=f.offsetTop+f.clientTop,f=g+f.clientHeight;g<=b&&f>=a?d.loaded?d.show():this.load_page(e):d.hide()}},update_page_idx:function(){var a=this.pages,b=a.length;if(!(2>b)){for(var c=this.container,e=c.scrollTop,c=e+c.clientHeight,h=-1,d=b,f=d-h;1<f;){var g=h+Math.floor(f/2),f=a[g].page;f.offsetTop+f.clientTop+f.clientHeight>=e?d=g:h=g;f=d-h}this.first_page_idx=d;for(var g=h=this.cur_page_idx,k=0;d<b;++d){var f=a[d].page,l=f.offsetTop+f.clientTop, |
||||
|
f=f.clientHeight;if(l>c)break;f=(Math.min(c,l+f)-Math.max(e,l))/f;if(d===h&&Math.abs(f-1)<=EPS){g=h;break}f>k&&(k=f,g=d)}this.cur_page_idx=g}},schedule_render:function(a){if(void 0!==this.render_timer){if(!a)return;clearTimeout(this.render_timer)}var b=this;this.render_timer=setTimeout(function(){delete b.render_timer;b.render()},this.config.render_timeout)},register_key_handler:function(){var a=this;window.addEventListener("DOMMouseScroll",function(b){if(b.ctrlKey){b.preventDefault();var c=a.container, |
||||
|
e=c.getBoundingClientRect(),c=[b.clientX-e.left-c.clientLeft,b.clientY-e.top-c.clientTop];a.rescale(Math.pow(a.config.scale_step,b.detail),!0,c)}},!1);window.addEventListener("keydown",function(b){var c=!1,e=b.ctrlKey||b.metaKey,h=b.altKey;switch(b.keyCode){case 61:case 107:case 187:e&&(a.rescale(1/a.config.scale_step,!0),c=!0);break;case 173:case 109:case 189:e&&(a.rescale(a.config.scale_step,!0),c=!0);break;case 48:e&&(a.rescale(0,!1),c=!0);break;case 33:h?a.scroll_to(a.cur_page_idx-1):a.container.scrollTop-= |
||||
|
a.container.clientHeight;c=!0;break;case 34:h?a.scroll_to(a.cur_page_idx+1):a.container.scrollTop+=a.container.clientHeight;c=!0;break;case 35:a.container.scrollTop=a.container.scrollHeight;c=!0;break;case 36:a.container.scrollTop=0,c=!0}c&&b.preventDefault()},!1)},rescale:function(a,b,c){var e=this.scale;this.scale=a=0===a?1:b?e*a:a;c||(c=[0,0]);b=this.container;c[0]+=b.scrollLeft;c[1]+=b.scrollTop;for(var h=this.pages,d=h.length,f=this.first_page_idx;f<d;++f){var g=h[f].page;if(g.offsetTop+g.clientTop>= |
||||
|
c[1])break}g=f-1;0>g&&(g=0);var g=h[g].page,k=g.clientWidth,f=g.clientHeight,l=g.offsetLeft+g.clientLeft,m=c[0]-l;0>m?m=0:m>k&&(m=k);k=g.offsetTop+g.clientTop;c=c[1]-k;0>c?c=0:c>f&&(c=f);for(f=0;f<d;++f)h[f].rescale(a);b.scrollLeft+=m/e*a+g.offsetLeft+g.clientLeft-m-l;b.scrollTop+=c/e*a+g.offsetTop+g.clientTop-c-k;this.schedule_render(!0)},fit_width:function(){var a=this.cur_page_idx;this.rescale(this.container.clientWidth/this.pages[a].width(),!0);this.scroll_to(a)},fit_height:function(){var a=this.cur_page_idx; |
||||
|
this.rescale(this.container.clientHeight/this.pages[a].height(),!0);this.scroll_to(a)},get_containing_page:function(a){for(;a;){if(a.nodeType===Node.ELEMENT_NODE&&a.classList.contains(CSS_CLASS_NAMES.page_frame)){a=get_page_number(a);var b=this.page_map;return a in b?this.pages[b[a]]:null}a=a.parentNode}return null},link_handler:function(a){var b=a.target,c=b.getAttribute("data-dest-detail");if(c){if(this.config.view_history_handler)try{var e=this.get_current_view_hash();window.history.replaceState(e, |
||||
|
"","#"+e);window.history.pushState(c,"","#"+c)}catch(h){}this.navigate_to_dest(c,this.get_containing_page(b));a.preventDefault()}},navigate_to_dest:function(a,b){try{var c=JSON.parse(a)}catch(e){return}if(c instanceof Array){var h=c[0],d=this.page_map;if(h in d){for(var f=d[h],h=this.pages[f],d=2,g=c.length;d<g;++d){var k=c[d];if(null!==k&&"number"!==typeof k)return}for(;6>c.length;)c.push(null);var g=b||this.pages[this.cur_page_idx],d=g.view_position(),d=transform(g.ictm,[d[0],g.height()-d[1]]), |
||||
|
g=this.scale,l=[0,0],m=!0,k=!1,n=this.scale;switch(c[1]){case "XYZ":l=[null===c[2]?d[0]:c[2]*n,null===c[3]?d[1]:c[3]*n];g=c[4];if(null===g||0===g)g=this.scale;k=!0;break;case "Fit":case "FitB":l=[0,0];k=!0;break;case "FitH":case "FitBH":l=[0,null===c[2]?d[1]:c[2]*n];k=!0;break;case "FitV":case "FitBV":l=[null===c[2]?d[0]:c[2]*n,0];k=!0;break;case "FitR":l=[c[2]*n,c[5]*n],m=!1,k=!0}if(k){this.rescale(g,!1);var p=this,c=function(a){l=transform(a.ctm,l);m&&(l[1]=a.height()-l[1]);p.scroll_to(f,l)};h.loaded? |
||||
|
c(h):(this.load_page(f,void 0,c),this.scroll_to(f))}}}},scroll_to:function(a,b){var c=this.pages;if(!(0>a||a>=c.length)){c=c[a].view_position();void 0===b&&(b=[0,0]);var e=this.container;e.scrollLeft+=b[0]-c[0];e.scrollTop+=b[1]-c[1]}},get_current_view_hash:function(){var a=[],b=this.pages[this.cur_page_idx];a.push(b.num);a.push("XYZ");var c=b.view_position(),c=transform(b.ictm,[c[0],b.height()-c[1]]);a.push(c[0]/this.scale);a.push(c[1]/this.scale);a.push(this.scale);return JSON.stringify(a)}}; |
||||
|
pdf2htmlEX.Viewer=Viewer;})(); |
@ -1,137 +0,0 @@ |
|||||
--- |
|
||||
resources: |
|
||||
- name: resume-git |
|
||||
type: git |
|
||||
icon: git |
|
||||
source: |
|
||||
uri: ssh://git@git.nulloctet.com:8437/warricksothr/resume.git |
|
||||
private_key: | |
|
||||
((pull_key)) |
|
||||
ignore_paths: |
|
||||
- pipeline.yml |
|
||||
- upload_pipeline.sh |
|
||||
- README.md |
|
||||
- name: resume-github-gh-pages |
|
||||
type: git |
|
||||
icon: github-circle |
|
||||
source: |
|
||||
uri: git@github.com:warricksothr/resume.git |
|
||||
private_key: | |
|
||||
((push_key_github)) |
|
||||
branch: gh-pages |
|
||||
|
|
||||
jobs: |
|
||||
- name: publish |
|
||||
plan: |
|
||||
- get: resume-git |
|
||||
trigger: true |
|
||||
- get: resume-github-gh-pages |
|
||||
- task: build-resume-pdf |
|
||||
config: |
|
||||
platform: linux |
|
||||
image_resource: |
|
||||
type: registry-image |
|
||||
source: { repository: schickling/latex, tag: "latest" } |
|
||||
inputs: |
|
||||
- name: resume-git |
|
||||
outputs: |
|
||||
- name: resume-pdf |
|
||||
run: |
|
||||
path: /bin/sh |
|
||||
args: |
|
||||
- -c |
|
||||
- | |
|
||||
cd resume-git |
|
||||
latex --output-format pdf resume.tex |
|
||||
latex --output-format pdf resume_for_recruiters.tex |
|
||||
mv resume.pdf ../resume-pdf/ |
|
||||
mv resume_for_recruiters.pdf ../resume-pdf/ |
|
||||
- task: build-resume-html |
|
||||
config: |
|
||||
platform: linux |
|
||||
image_resource: |
|
||||
type: registry-image |
|
||||
source: |
|
||||
repository: ((nexus_docker_read.host))/sothr/pdf2htmlex |
|
||||
tag: "stable" |
|
||||
username: ((nexus_docker_read.username)) |
|
||||
password: ((nexus_docker_read.password)) |
|
||||
inputs: |
|
||||
- name: resume-pdf |
|
||||
outputs: |
|
||||
- name: resume-html |
|
||||
run: |
|
||||
path: /bin/sh |
|
||||
args: |
|
||||
- -c |
|
||||
- | |
|
||||
cd resume-pdf |
|
||||
pdf2htmlEX --zoom 1.5 --embed cfijo --dest-dir out resume.pdf |
|
||||
mv out/resume.html out/index.html |
|
||||
tar -czvf resume_site.tgz -C out/ . |
|
||||
mv resume_site.tgz ../resume-html/ |
|
||||
- task: publish-site |
|
||||
config: |
|
||||
platform: linux |
|
||||
image_resource: |
|
||||
type: registry-image |
|
||||
source: |
|
||||
repository: ((nexus_docker_read.host))/sothr/deploy |
|
||||
tag: "stable" |
|
||||
username: ((nexus_docker_read.username)) |
|
||||
password: ((nexus_docker_read.password)) |
|
||||
inputs: |
|
||||
- name: resume-pdf |
|
||||
- name: resume-html |
|
||||
params: |
|
||||
DEPLOY_KEY: ((deploy.key)) |
|
||||
DEPLOY_HOST: ((deploy.host)) |
|
||||
DEPLOY_PORT: ((deploy.port)) |
|
||||
DEPLOY_USER: ((deploy.user)) |
|
||||
DEPLOY_TARGET: ((deploy.target)) |
|
||||
run: |
|
||||
path: /bin/bash |
|
||||
args: |
|
||||
- -c |
|
||||
- | |
|
||||
eval `ssh-agent -s` |
|
||||
ssh-add <(echo "${DEPLOY_KEY}") |
|
||||
mkdir -p ~/.ssh |
|
||||
ssh-keyscan -p ${DEPLOY_PORT} ${DEPLOY_HOST} >> ~/.ssh/known_hosts |
|
||||
mkdir /tmp/deploy |
|
||||
tar -xzvf resume-html/resume_site.tgz -C /tmp/deploy |
|
||||
cp resume-pdf/resume.pdf /tmp/deploy |
|
||||
cp resume-pdf/resume_for_recruiters.pdf /tmp/deploy |
|
||||
rsync -avz --delete-delay -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p ${DEPLOY_PORT}" --progress /tmp/deploy/* ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_TARGET} |
|
||||
- task: publish-gh-pages |
|
||||
config: |
|
||||
platform: linux |
|
||||
image_resource: |
|
||||
type: registry-image |
|
||||
source: { repository: alpine/git } |
|
||||
inputs: |
|
||||
- name: resume-pdf |
|
||||
- name: resume-html |
|
||||
- name: resume-github-gh-pages |
|
||||
outputs: |
|
||||
- name: updated-resume-github-gh-pages |
|
||||
run: |
|
||||
path: /bin/sh |
|
||||
args: |
|
||||
- -c |
|
||||
- | |
|
||||
git config --global user.email "concourse@warrick.sothr.com" |
|
||||
git config --global user.name "Concourse" |
|
||||
git clone resume-github-gh-pages updated-resume-github-gh-pages |
|
||||
cd resume-html |
|
||||
mkdir -p /tmp/resume_site |
|
||||
tar -zxvf resume_site.tgz -C /tmp/resume_site |
|
||||
cd ../updated-resume-github-gh-pages |
|
||||
rm -rf * |
|
||||
mv /tmp/resume_site/* . |
|
||||
cp ../resume-pdf/*.pdf . |
|
||||
git add . |
|
||||
git commit -m"Auto update of resume page" |
|
||||
- put: resume-github-gh-pages |
|
||||
params: |
|
||||
repository: updated-resume-github-gh-pages |
|
@ -1,805 +0,0 @@ |
|||||
% RESUME DOCUMENT STYLE -- Released 23 Nov 1989 |
|
||||
% for LaTeX version 2.09 |
|
||||
% Copyright (C) 1988,1989 by Michael DeCorte |
|
||||
|
|
||||
\typeout{Document Style `res' <26 Sep 89>.} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% res.sty |
|
||||
% |
|
||||
% \documentstyle{res} |
|
||||
% |
|
||||
% Copyright (c) 1988 by Michael DeCorte |
|
||||
% Permission to copy all or part of this work is granted, provided |
|
||||
% that the copies are not made or distributed for resale, and that |
|
||||
% the copyright notice and this notice are retained. |
|
||||
% |
|
||||
% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO |
|
||||
% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, |
|
||||
% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS |
|
||||
% FOR ANY PARTICULAR PURPOSE. |
|
||||
% |
|
||||
% If you make any improvements, I'd like to hear about them. |
|
||||
% |
|
||||
% Michael DeCorte |
|
||||
% P.O. Box 652 |
|
||||
% Potsdam NY 13676 |
|
||||
% mrd@sun.soe.clarkson.edu |
|
||||
% mrd@clutx.bitnet |
|
||||
% |
|
||||
% Changes for LaTeX2e -- Venkat Krishnamurthy (Aug 7, 2001) |
|
||||
% |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% You can have multiple style options the legal options ones are: |
|
||||
% |
|
||||
% centered the name and address are centered at the top of the |
|
||||
% page (default) |
|
||||
% |
|
||||
% line the name is the left with a horizontal line then |
|
||||
% the address to the right |
|
||||
% |
|
||||
% overlapped the section titles overlap the body text (default) |
|
||||
% |
|
||||
% margin the section titles are to the left of the body text |
|
||||
% |
|
||||
% 11pt use 11 point fonts instead of 10 point fonts |
|
||||
% |
|
||||
% 12pt use 12 point fonts instead of 10 point fonts |
|
||||
% |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% Commands |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% \Resume prints the word resume but typeset nicely |
|
||||
% |
|
||||
% \newsectionwidth{dimen} |
|
||||
% defines the amount of space the labels extend |
|
||||
% into the left margin. |
|
||||
% DO NOT TRY to change any of the dimensions |
|
||||
% yourself. You will probably confuse the style file. |
|
||||
% |
|
||||
% \name{text} defines your name |
|
||||
% |
|
||||
% \address{text} |
|
||||
% defines your address |
|
||||
% this can be called twice if you have two addresses |
|
||||
% use \\'s to indicate where either line breaks or |
|
||||
% comas should go |
|
||||
% |
|
||||
% \opening this prints your name and address at that spot |
|
||||
% this is not normally needed, as \begin{resume} |
|
||||
% does this but is provided just in case you need |
|
||||
% to do something odd |
|
||||
% |
|
||||
% \begin{resume} ... \end{resume} |
|
||||
% all of the resume should go inside of this |
|
||||
% environment |
|
||||
% |
|
||||
% \section{text} |
|
||||
% This prints 'text' in the left hand margin. |
|
||||
% Its exact placement depends on what the style |
|
||||
% options has been set to. (overlapped or margin) |
|
||||
% You should use \\ to start a new line. If the |
|
||||
% style option is margin, the \\ is converted |
|
||||
% to a space. |
|
||||
% To use this in any of the list environments, put |
|
||||
% the \section after the \item[] but before the |
|
||||
% text. |
|
||||
% Eg. |
|
||||
% \begin{itemize} |
|
||||
% \item\section{text} |
|
||||
% text |
|
||||
% \end{itemize} |
|
||||
% |
|
||||
% \begin{ncolumn}{n} ... \end{ncolumn} |
|
||||
% creates a tabular environment with n equally |
|
||||
% spaced columns. Separate columns by & and |
|
||||
% end them with \\ |
|
||||
% |
|
||||
% \begin{position} ... \end{position} |
|
||||
% this is used to print a job description. There should |
|
||||
% be only one job description in it. Information |
|
||||
% related to the job (such as title, dates...) will |
|
||||
% be printed. |
|
||||
% |
|
||||
% \begin{format} ... \end{format} |
|
||||
% used to change the default format for the position |
|
||||
% environment. Within it the recognized commands are: |
|
||||
% \title{option} |
|
||||
% \employer{option} |
|
||||
% \location{option} |
|
||||
% \dates{option} |
|
||||
% \body |
|
||||
% \\ |
|
||||
% where option is one of l,r,c standing for left, right, center. |
|
||||
% The format will eventually be used to make several |
|
||||
% tabular environments and you are defining the number of columns |
|
||||
% and the placement of text within the columns of the tabulars. |
|
||||
% Each row is terminated by a \\. Any number of options can |
|
||||
% be on a line, they will each be set in their own columns. |
|
||||
% Any of the options except \body may be left out. |
|
||||
% |
|
||||
% Eg. |
|
||||
% \begin{format} |
|
||||
% \title{l}\employer{r}\\ |
|
||||
% \dates{r}\\ |
|
||||
% \body\\ |
|
||||
% \location{l}\\ |
|
||||
% \end{format} |
|
||||
% |
|
||||
% In this example the title and employer information |
|
||||
% are set in 2 columns left justified and right justified |
|
||||
% respectively. Then the date is set right justified. |
|
||||
% Then the body is set. Then the location is set left |
|
||||
% justified. |
|
||||
% |
|
||||
% \employer{text} |
|
||||
% \title{text} |
|
||||
% \dates{text} |
|
||||
% \location{text} |
|
||||
% declare text for the next invocation of the position |
|
||||
% environment |
|
||||
% |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% Glue |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% |
|
||||
% sectionskip the amount of horizontal before a section |
|
||||
% |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% Dimensions |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% |
|
||||
% sectionwidth the amount that the section titles go in the |
|
||||
% left margin |
|
||||
% |
|
||||
% resumewidth the width of the total resume from the left |
|
||||
% margin to the right. Don't use textwidth |
|
||||
% |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% Definitions |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% |
|
||||
% sectionfont the font used to print section titles |
|
||||
% use \renewcommand to change it |
|
||||
% |
|
||||
% namefont the font used to print your name |
|
||||
% use \renewcommand to change it |
|
||||
% |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% THINGS TO DO |
|
||||
% |
|
||||
% add lm,rm options to format style to allow things to be placed |
|
||||
% in the left or right margin respectivly |
|
||||
% |
|
||||
% add capability so that \body doesn't have to be proceeded (followed) |
|
||||
% by a \\ allowing part of the description (eg. location) to be the |
|
||||
% first (last) thing of the body |
|
||||
% |
|
||||
% clean up the list building procedures |
|
||||
% |
|
||||
% write docs to tell people how to use this |
|
||||
|
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01] |
|
||||
\ProvidesClass{res}[2000/05/19 v1.4b Resume class] |
|
||||
|
|
||||
%\DeclareOption{11pt}{\renewcommand\@ptsize{1}} |
|
||||
%\DeclareOption{12pt}{\renewcommand\@ptsize{2}} |
|
||||
|
|
||||
\PassOptionsToClass{11pt,12pt}{article} |
|
||||
\LoadClassWithOptions{article} |
|
||||
|
|
||||
\newif\if@line |
|
||||
\newif\if@margin |
|
||||
|
|
||||
\DeclareOption{line}{\@linetrue} |
|
||||
\DeclareOption{centered}{\@linefalse} |
|
||||
|
|
||||
\DeclareOption{margin}{\@margintrue} |
|
||||
\DeclareOption{overlapped}{\@marginfalse} |
|
||||
|
|
||||
\ExecuteOptions{overlapped,centered} |
|
||||
\ProcessOptions\relax |
|
||||
|
|
||||
\nofiles % resume's don't need .aux files |
|
||||
|
|
||||
|
|
||||
\newtoks\tabular@text % holds the current list being processed |
|
||||
\newtoks\tabular@head % holds the head tabular list |
|
||||
\newtoks\tabular@tail % holds the tail tabular list |
|
||||
\newtoks\@ta % used by \@append |
|
||||
\newtoks\undefined@token\undefined@token={} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% prints a centered name with the address centered |
|
||||
% or the two address on opposite sides of the page |
|
||||
% |
|
||||
\def\@printcentername{\begingroup |
|
||||
% print the name centered |
|
||||
\leavevmode\hbox to \textwidth{\hfil\@tablebox{\namefont\@name}\hfil}\par |
|
||||
\@ifundefined{@addressone}{% |
|
||||
% do nothing |
|
||||
}{% |
|
||||
\@ifundefined{@addresstwo}{ |
|
||||
% only one address |
|
||||
\leavevmode\hbox to \textwidth{\hfil\@tablebox{\@addressone}\hfil}\par |
|
||||
}{ |
|
||||
% two addresses |
|
||||
\leavevmode\hbox to \textwidth{\@tablebox{\@addressone}\hfil |
|
||||
\@tablebox{\@addresstwo}}\par |
|
||||
}% |
|
||||
}% |
|
||||
\endgroup} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% this is used to print the name and address at the top of |
|
||||
% the page with a hline in between |
|
||||
% |
|
||||
\def\namefont{\large\bf} |
|
||||
\def\@linename{\begingroup |
|
||||
\def\\{, } |
|
||||
{\namefont\@name} |
|
||||
\vskip 2pt |
|
||||
\fullline |
|
||||
\vskip 4pt |
|
||||
% where do you live? |
|
||||
\@ifundefined{@addressone}{% |
|
||||
% do nothing |
|
||||
}{% |
|
||||
\leavevmode\hbox to \textwidth |
|
||||
{\hfill\vbox{\hbox{\@addressone} |
|
||||
\hbox{\@addresstwo} |
|
||||
}% |
|
||||
}\par |
|
||||
} |
|
||||
\endgroup} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% HEADINGS: |
|
||||
% There are two types of headings: |
|
||||
% 1) one with the name centered and the address centered or |
|
||||
% in the left and right side if there are two address |
|
||||
% 2) one where the name is in the upper left corner |
|
||||
% the a line accross the paper |
|
||||
% then the address all on one line in the right corner |
|
||||
% the second address will be directly below the first if defined |
|
||||
% |
|
||||
\let\print@name\relax |
|
||||
\def\ds@centered{\ifx\print@name\relax\let\print@name\@printcentername\fi} |
|
||||
\def\ds@line{\ifx\print@name\relax\let\print@name\@linename\fi} |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% Use this to set the sectionwidth. |
|
||||
% It adjust the width of the text as well as the hoffset |
|
||||
% You probably shouldn't touch any of the size paramaters |
|
||||
% unless you really understand all of this but it is not |
|
||||
% hard. Either way, it can only be executed once |
|
||||
% |
|
||||
\def\sectionfont{\bf} |
|
||||
\newdimen\sectionwidth |
|
||||
\newskip\sectionskip |
|
||||
\newdimen\resumewidth |
|
||||
|
|
||||
%\resumewidth=6.75in |
|
||||
%\sectionskip=3.5ex plus 1ex minus -.2ex % values stolen from LaTeX |
|
||||
\resumewidth=6.75in |
|
||||
\sectionskip=3.0ex plus 1ex minus -.2ex % values stolen from LaTeX |
|
||||
|
|
||||
\def\newsectionwidth#1{% |
|
||||
\sectionwidth=#1 |
|
||||
\textwidth=\resumewidth |
|
||||
\advance\textwidth-\sectionwidth |
|
||||
\hsize=\textwidth |
|
||||
\hoffset=\sectionwidth |
|
||||
} |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% This is for sectiontitles that are entirely in the left margin. |
|
||||
% multiline sectiontitles are permited and will be broken by |
|
||||
% \TeX{} to fit into a box \verb|\sectionwidth| wide. It is advised |
|
||||
% that \verb|\\| be used to break the lines by hand as \TeX{} will |
|
||||
% probably not do what you want. |
|
||||
% |
|
||||
% When using this with {\tt tabbing} and {\tt list} (or anything |
|
||||
% that is made out of {\tt list}) put the \section's inside of |
|
||||
% the \verb|\begin{}| and the \verb|\item|Eg. |
|
||||
% \begin{verbatim} |
|
||||
% \begin{trivlist} |
|
||||
% \item[] |
|
||||
% \section{foo} |
|
||||
% text |
|
||||
% \end{trivlist} |
|
||||
% \end{verbatim} |
|
||||
% |
|
||||
\def\boxed@sectiontitle#1{% |
|
||||
% this macro may be called in a tabular. Special code must be written |
|
||||
% to accomodate this. In LaTeX, a tabular is made out of hboxes. |
|
||||
% TeX never goes into horizontal mode because of this; it only |
|
||||
% gets into vertical mode and restricted horizontal mode. Certain |
|
||||
% indenting problems must be handled because of this. They |
|
||||
% are delt with at the end of this routine. |
|
||||
% It is also necessary to close the hbox that was created before |
|
||||
% the \section and create a new one when this macro has ended. |
|
||||
% This macro therefore simulates a \kill, so that any text before |
|
||||
% the \section not be printed. The proper use is therefore |
|
||||
% ... |
|
||||
% text\\ |
|
||||
% \section{foo} |
|
||||
% more text\\ |
|
||||
% ... |
|
||||
\ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) |
|
||||
\@stopfield % the is the first part of a \kill |
|
||||
\else |
|
||||
\@@par % This will end the previous paragraph if needed and |
|
||||
% go into vertical mode. If this was already in |
|
||||
% vertical mode then the \par does nothing. |
|
||||
|
|
||||
\fi |
|
||||
\begingroup |
|
||||
\everypar={}% |
|
||||
\def\par{\@@par}% |
|
||||
\let\\=\@normalcr |
|
||||
\addpenalty{\@secpenalty} % this would be a good place for a page break |
|
||||
% \@secpenalty is what LaTeX uses before its |
|
||||
% section's. It happens to be -300 |
|
||||
\addvspace{\sectionskip} % put in a bit of glue |
|
||||
% The following hbox will be contributed to the page list without going |
|
||||
% into horizontal mode. Therefore, any \parindent's, \parshape's, \leftskip |
|
||||
% will be ignored but \hoffset's are not. The result is that the box will |
|
||||
% only by \hoffset. This is what I want |
|
||||
\hbox to 0pt{% |
|
||||
\hss % this is an llap. In other words, this glue |
|
||||
% will shrink by the width of the stuff in the vbox |
|
||||
% (\sectionwidth) into the left margin and then |
|
||||
% insert the contents of the vbox. |
|
||||
\vtop to 0pt{% make a 0pt height paragraph, with the baseline at the |
|
||||
% lined up with the baseline of the first box in the list |
|
||||
\leftskip=0pt |
|
||||
\hsize=\sectionwidth |
|
||||
\textwidth=\sectionwidth |
|
||||
\raggedright % you don't want this filled out to the right margin |
|
||||
\sectionfont |
|
||||
#1\vss % Go into horizontal mode; do the paragraph; |
|
||||
% go into vertical mode; add some negative glue |
|
||||
% to give a box of 0pt height and depth |
|
||||
}% |
|
||||
}% |
|
||||
\addpenalty{-\@secpenalty} % this would be a bad place for a page break |
|
||||
\vskip-\baselineskip % when the next box is processed, baselineskip glue |
|
||||
% glue will be added (the box has no depth because of |
|
||||
% the \vss; therefore, we don't have to worry about |
|
||||
% \lineskiplimit). This -\baselineskip glue |
|
||||
% is to undo this. \nointerlineskip doesn't |
|
||||
% work because the baseline of this line would be lined |
|
||||
% up with the top of the top of the next box. We |
|
||||
% want the baselines lined up. |
|
||||
% |
|
||||
% It may have been possible to do this by forcing the |
|
||||
% baseline of this box to be the top of the box but |
|
||||
% then the interline skip between this box and the |
|
||||
% previous box would be off as the baselines of the |
|
||||
% this box (the one that being made above) and the |
|
||||
% previous line would be separated by \baselineskip |
|
||||
% (probably, it may be separted by the depth of the |
|
||||
% previous box + \lineskip) but as the baseline of |
|
||||
% this box has been moved to the top, the box's would |
|
||||
% separted by to much glue. The exact amount being |
|
||||
% the height of this box. |
|
||||
\endgroup |
|
||||
\ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) |
|
||||
% this is the second part of the \kill; it starts the next tabbing line |
|
||||
% Because this routine will never get into paragraph mode when used in |
|
||||
% tabbing the \parskip that is discussed below will never be inserted. |
|
||||
% Therefore it should not be negated as done below. |
|
||||
\@startline |
|
||||
\ignorespaces |
|
||||
\else |
|
||||
\vskip-\parskip % The next thing to be contributed will be a paragraph. |
|
||||
% Right before being contributed though a \vskip\parskip |
|
||||
% will be inserted. This is to negate it. |
|
||||
% |
|
||||
% I do consider this to be a bit of a cludge but |
|
||||
% I can not find a way to write \unskipfutureskip |
|
||||
% or a way to make TeX think that nothing has |
|
||||
% been contributed to the page list. |
|
||||
\fi |
|
||||
} |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% This is for sectiontitles that are entirely above the section text |
|
||||
% |
|
||||
\def\unboxed@sectiontitle#1{% |
|
||||
\ifx\\\@tabcr % see boxed@sectiontitle for explation |
|
||||
\@stopfield |
|
||||
\else |
|
||||
\@@par |
|
||||
\fi |
|
||||
\begingroup |
|
||||
\everypar={}% |
|
||||
\def\par{\@@par}% |
|
||||
\def\\{ } |
|
||||
\addpenalty{\@secpenalty} |
|
||||
\addvspace{\sectionskip} |
|
||||
\hbox to 0pt{\hss\hbox to \sectionwidth{\sectionfont#1\hss}} |
|
||||
\addpenalty{-\@secpenalty} % this would be a bad place for a page break |
|
||||
\endgroup |
|
||||
\ifx\\\@tabcr % see boxed@sectiontitle for explation |
|
||||
\@startline |
|
||||
\else |
|
||||
\vskip-\parskip |
|
||||
\fi |
|
||||
\ignorespaces |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% There are two types of section headings: |
|
||||
% 1) the section heading is all on one line and directly |
|
||||
% below it, is the body of the text |
|
||||
% 2) the section heading is entirely in the left margin |
|
||||
% (possibly taking multiple lines) with the body of |
|
||||
% the text next to it |
|
||||
% |
|
||||
\let\@@section\relax |
|
||||
\def\ds@overlapped{\ifx\@@section\relax\newsectionwidth{0.5in}\let |
|
||||
\@@section\unboxed@sectiontitle\fi} |
|
||||
\def\ds@margin{\ifx\@@section\relax\newsectionwidth{1.3in}\let |
|
||||
\@@section\boxed@sectiontitle\fi} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% DEFAULTS: (some of them) |
|
||||
% |
|
||||
% centered name |
|
||||
% overlapped section titles |
|
||||
% |
|
||||
% format is: |
|
||||
% title employer |
|
||||
% location dates |
|
||||
% body |
|
||||
% with everything in the left of its column |
|
||||
|
|
||||
%\input article.sty |
|
||||
|
|
||||
\if@line\ds@line\else\ds@centered\fi |
|
||||
\if@margin\ds@margin\else\ds@overlapped\fi |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% typeset resume all nice and pretty |
|
||||
% |
|
||||
\def\Resume{{R\'{e}sum\'{e}}} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% makes a line of width \textwidth starting at -\hoffset |
|
||||
% |
|
||||
\def\fullline{ % hrules only listen to \hoffset |
|
||||
\nointerlineskip % so I have this code |
|
||||
\moveleft\hoffset\vbox{\hrule width\textwidth} |
|
||||
\nointerlineskip |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% create a multiline box. |
|
||||
% |
|
||||
\def\@tablebox#1{\begin{tabular}[t]{@{}l@{\extracolsep{\fill}}}#1\end{tabular}} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% use this to define your name |
|
||||
% |
|
||||
\def\name#1{\def\@name{#1}} |
|
||||
|
|
||||
\def\@name{} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% use this to define your address, this may be called more than once. |
|
||||
% |
|
||||
\let\@addressone\relax |
|
||||
\let\@addresstwo\relax |
|
||||
|
|
||||
\def\address#1{ |
|
||||
\@ifundefined{@addressone}{\def\@addressone{#1}}{\def\@addresstwo{#1}}} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% if you want to print your name and address is a slightly |
|
||||
% different format than sugessted, then this can be used |
|
||||
% to place it exactly where you want |
|
||||
% |
|
||||
\def\opening{\def\@opening{} |
|
||||
\begingroup |
|
||||
\leftskip=-\hoffset % I use leftskip to move things to the left as |
|
||||
\advance\textwidth\hoffset % changing hoffset doesn't work. But this |
|
||||
\hsize=\textwidth % doesn't really work as hboxes are rules |
|
||||
% are unaffeted |
|
||||
\let\par=\@@par |
|
||||
\parindent=0pt |
|
||||
\parskip=0pt |
|
||||
\print@name |
|
||||
\endgroup |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% all of the resume goes in the resume environment |
|
||||
% |
|
||||
\newenvironment{resume}{\begingroup |
|
||||
\@ifundefined{@opening}{\opening}{} |
|
||||
}{\endgroup} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% gives you a tabular environment with n equally spaced columns |
|
||||
% \begin{ncolumn}{#} ... \end{ncolumn} |
|
||||
% |
|
||||
% The p option of LaTeX is broken in all but the newest verion |
|
||||
% of latex.tex, this is how to fix it |
|
||||
% |
|
||||
\def\@endpbox{\par\egroup\hfil} |
|
||||
\let\@@endpbox=\@endpbox |
|
||||
|
|
||||
\newdimen\@columnwidth % the width of each column equal to |
|
||||
\def\ncolumn#1{% |
|
||||
% \@columnwidth = \textwidth / #1 |
|
||||
\@columnwidth=\textwidth \divide\@columnwidth by #1 |
|
||||
\begin{tabular*}{\textwidth}[t]% |
|
||||
{*{#1}{@{}p{\@columnwidth}@{\extracolsep{\fill}}}} |
|
||||
} |
|
||||
|
|
||||
\def\endncolumn{\end{tabular*}} |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% \employer{text} defines employer to be text |
|
||||
% \location{text} defines location to be text |
|
||||
% \dates{text} defines dates to be text |
|
||||
% \title{text} defines title to be text |
|
||||
% \body |
|
||||
% |
|
||||
|
|
||||
\def\employer#1{\def\@employer{\print@employer{#1}}} |
|
||||
\def\location#1{\def\@location{\print@location{#1}}} |
|
||||
\def\dates#1{\def\@dates{\print@dates{#1}}} |
|
||||
\def\title#1{\def\@title{\print@title{#1}}} |
|
||||
|
|
||||
\let\l@justify\raggedright |
|
||||
\let\r@justify\raggedleft |
|
||||
\let\c@justify\centering |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% \@format{name}{justify} |
|
||||
% will define \print@#1 to print it's one argument |
|
||||
% justified according to #2 which can be |
|
||||
% l = left |
|
||||
% r = right |
|
||||
% c = center |
|
||||
% |
|
||||
% eg. |
|
||||
% \@format{employer}{c} |
|
||||
% is the same as \def\print@employer#1{{\centering #1\par}} |
|
||||
% |
|
||||
\def\@format#1#2{% |
|
||||
\expandafter\gdef\csname print@#1\endcsname##1{% |
|
||||
{\csname#2@justify\endcsname##1\par}} |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% this is used to define how the position environment should |
|
||||
% formated. |
|
||||
% |
|
||||
% \begin{format} positioning text \end{format} |
|
||||
% where positioning text may be |
|
||||
% \employer{pos} |
|
||||
% \location{pos} |
|
||||
% \dates{pos} |
|
||||
% \title{pos} |
|
||||
% \body (for the body of the position environment) |
|
||||
% where pos is |
|
||||
% l for left |
|
||||
% r for right |
|
||||
% c for center |
|
||||
% use \\ to break the line |
|
||||
% you don't have to use all of the options. |
|
||||
% on any one line, you should indicate what you want on that line |
|
||||
% and where it should go within its column. |
|
||||
% eg. |
|
||||
% the following prints the employer in the left with the location |
|
||||
% centered within that its column. It then prints the date on the |
|
||||
% right. Then it prints the body of the position environment. Then |
|
||||
% it prints the title centered within its column; as there is only |
|
||||
% one column here it is really just centered. |
|
||||
% |
|
||||
% \begin{format} |
|
||||
% \employer{l}\location{c}\\ |
|
||||
% \dates{r}\\ |
|
||||
% \body\\ |
|
||||
% \title{c}\\ |
|
||||
% \end{format} |
|
||||
|
|
||||
\newcounter{numberofcolumns} |
|
||||
\newenvironment{format}{% |
|
||||
\def\end@line@head{\append@tabular@head{tabular@text}\tabular@text={}% |
|
||||
\c@numberofcolumns 0} |
|
||||
\def\end@line@tail{\append@tabular@tail{tabular@text}\tabular@text={}% |
|
||||
\c@numberofcolumns 0} |
|
||||
\tabular@text={} |
|
||||
\tabular@head={} |
|
||||
\tabular@tail={} |
|
||||
\c@numberofcolumns 0 |
|
||||
\let\\=\end@line@head |
|
||||
\def\employer##1{\advance\c@numberofcolumns 1 |
|
||||
\@format{employer}{##1} |
|
||||
\append@tabular@text{employer}} |
|
||||
\def\location##1{\advance\c@numberofcolumns 1 |
|
||||
\@format{location}{##1} |
|
||||
\append@tabular@text{location}} |
|
||||
\def\dates##1{\advance\c@numberofcolumns 1 |
|
||||
\@format{dates}{##1} |
|
||||
\append@tabular@text{dates}} |
|
||||
\def\title##1{\advance\c@numberofcolumns 1 |
|
||||
\@format{title}{##1} |
|
||||
\append@tabular@text{title}} |
|
||||
\def\body{\iftoks\tabular@head\undefined@token\then |
|
||||
\else |
|
||||
\@append{\noexpand\\}\to\tabular@head |
|
||||
\skotfi |
|
||||
\let\\=\end@line@tail}}{} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
%taken from page 378 of TeXbook but freely hacked |
|
||||
% |
|
||||
% appends the expansion of #1 to the token list #2 |
|
||||
|
|
||||
\def\@append#1\to#2{% |
|
||||
\@ta=\expandafter{#1}% |
|
||||
\xdef\@append@temp{\the#2\the\@ta} |
|
||||
\global#2=\expandafter{\@append@temp}% |
|
||||
} |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% CHAA006%vaxb.rhbnc.ac.uk@NSS.Cs.Ucl.AC.UK |
|
||||
% texhax.88.078 |
|
||||
% is used to see if two token lists are equal |
|
||||
% there must be a better way |
|
||||
% |
|
||||
|
|
||||
\let \then = \empty |
|
||||
\def \iftoks #1#2\then #3\else #4\skotfi{ |
|
||||
\edef \1{\the #1} |
|
||||
\edef \2{\the #2} |
|
||||
\ifx \1\2\then #3\else #4\fi} |
|
||||
|
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% \append@tabular@text{command} |
|
||||
% |
|
||||
% appends command to the end of \tabular@text. |
|
||||
% NOTE: command MUST be a command but without the \ |
|
||||
% Eg. \append@tabular@text{relax} |
|
||||
% |
|
||||
% used to define \tabular@text for the tabular environment |
|
||||
% used by append@tabular@head and append@tabular@tail |
|
||||
% |
|
||||
|
|
||||
\def\append@tabular@text#1{% |
|
||||
\iftoks\tabular@text\undefined@token\then |
|
||||
\global\tabular@text=\expandafter{\csname @#1\endcsname} |
|
||||
\else |
|
||||
\@append{&}\to\tabular@text |
|
||||
\@append{\csname @#1\endcsname}\to\tabular@text |
|
||||
\skotfi |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% append@tabular@head |
|
||||
% |
|
||||
% appends command to the end of \tabular@text@head |
|
||||
% NOTE: command MUST be a command but without the \ |
|
||||
% Eg. \append@tabular@head{relax} |
|
||||
% |
|
||||
% used to define \tabular@head for the tabular environment |
|
||||
% used by the position environment |
|
||||
% |
|
||||
\def\append@tabular@head#1{% |
|
||||
\ifnum\the\c@numberofcolumns=0\relax |
|
||||
\else |
|
||||
\iftoks\tabular@head\undefined@token\then |
|
||||
\relax |
|
||||
\else |
|
||||
\@append{\noexpand\\}\to\tabular@head |
|
||||
\@append{\noexpand\penalty-\@secpenalty}\to\tabular@head |
|
||||
\skotfi |
|
||||
\@append{\noexpand\begin{ncolumn}}\to\tabular@head |
|
||||
\@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@head |
|
||||
\@append{\the\csname#1\endcsname}\to\tabular@head |
|
||||
\@append{\noexpand\end{ncolumn}}\to\tabular@head |
|
||||
\fi |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% append@tabular@tail |
|
||||
% |
|
||||
% appends command to the end of \tabular@text@htail |
|
||||
% NOTE: command MUST be a command but without the \ |
|
||||
% Eg. \append@tabular@tail{relax} |
|
||||
% |
|
||||
% used to define \tabular@tail for the tabular environment |
|
||||
% used by the position environment |
|
||||
% |
|
||||
\def\append@tabular@tail#1{% |
|
||||
\ifnum\the\c@numberofcolumns=0\relax |
|
||||
\else |
|
||||
\iftoks\tabular@tail\undefined@token\then |
|
||||
\else |
|
||||
\@append{\noexpand\\}\to\tabular@tail |
|
||||
\@append{\noexpand\penalty-\@secpenalty}\to\tabular@tail |
|
||||
\skotfi |
|
||||
\@append{\noexpand\begin{ncolumn}}\to\tabular@tail |
|
||||
\@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@tail |
|
||||
\@append{\the\csname#1\endcsname}\to\tabular@tail |
|
||||
\@append{\noexpand\end{ncolumn}}\to\tabular@tail |
|
||||
\fi |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% put the actual job descriptions here |
|
||||
% \begin{postion} ... \end{position} |
|
||||
% in the ... describe the position. |
|
||||
% don't put the \dates \location etc in here. define them before hand |
|
||||
\newenvironment{position}% |
|
||||
{% |
|
||||
\begingroup |
|
||||
\par |
|
||||
\the\tabular@head |
|
||||
% \addpenalty{-\@secpenalty}% bad place for a page break |
|
||||
\penalty -\@secpenalty % bad place for a page break |
|
||||
\penalty 10000 |
|
||||
\ignorespaces |
|
||||
}{% |
|
||||
\the\tabular@tail |
|
||||
% \addpenalty{\@secpenalty}% good place for a page break |
|
||||
\penalty \@secpenalty % good place for a page break |
|
||||
\endgroup |
|
||||
} |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% DEFAULTS: (the rest of them) |
|
||||
% |
|
||||
% centered name |
|
||||
% overlapped section titles |
|
||||
% |
|
||||
% format is: |
|
||||
% title employer |
|
||||
% location dates |
|
||||
% body |
|
||||
% with everything in the left of its column |
|
||||
|
|
||||
\@secpenalty = -500 |
|
||||
\topmargin 0pt |
|
||||
\headheight 12pt |
|
||||
\headsep 0pt |
|
||||
\textheight 9in |
|
||||
\parindent 0pt |
|
||||
\topmargin 0in |
|
||||
\oddsidemargin -10pt |
|
||||
\evensidemargin -10pt |
|
||||
\marginparwidth -10pt |
|
||||
\parindent 0pt |
|
||||
\parskip \baselineskip |
|
||||
\setcounter{secnumdepth}{0} |
|
||||
\def\@listI{\leftmargin\leftmargini |
|
||||
\topsep 0pt |
|
||||
\parskip 0pt |
|
||||
\partopsep 2pt plus 2pt |
|
||||
\parsep 2pt plus 2pt |
|
||||
\itemsep \parsep} |
|
||||
|
|
||||
\pagestyle{empty} % don't want page numbers |
|
||||
|
|
||||
\begin{format} |
|
||||
\title{l}\employer{r}\\ |
|
||||
\location{l}\dates{r}\\ |
|
||||
\body\\ |
|
||||
\end{format} |
|
||||
|
|
||||
\let\section\@@section |
|
||||
|
|
@ -1,9 +0,0 @@ |
|||||
\input{tex_parts/resume_head.tex} |
|
||||
|
|
||||
\begin{document} |
|
||||
|
|
||||
\input{tex_parts/resume_address.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body.tex} |
|
||||
|
|
||||
\end{document} |
|
@ -1,9 +0,0 @@ |
|||||
\input{tex_parts/resume_head.tex} |
|
||||
|
|
||||
\begin{document} |
|
||||
|
|
||||
\input{tex_parts/resume_address_recruiters.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body.tex} |
|
||||
|
|
||||
\end{document} |
|
@ -1,26 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
function print_help { |
|
||||
echo "Resume Build Utility" |
|
||||
echo "usage: ./build resume pdf" |
|
||||
echo "usage: ./build resume html [package, deploy]" |
|
||||
echo "usage: ./build coverletter pdf <cover letter file name>" |
|
||||
echo "usage: ./build combined pdf <cover letter file name>" |
|
||||
} |
|
||||
|
|
||||
if [ -z "$1" ]; then |
|
||||
echo "Must supply a build command" |
|
||||
print_help |
|
||||
fi |
|
||||
|
|
||||
case "$1" in |
|
||||
"resume") |
|
||||
;; |
|
||||
"coverletter") |
|
||||
;; |
|
||||
"combined") |
|
||||
;; |
|
||||
*) |
|
||||
print_help |
|
||||
;; |
|
||||
esac |
|
@ -1,4 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
# Simple script to build he PDF, build the html, and deploy them to the gh-pages branch |
|
||||
./build-pdf-resume.sh && ./build-pdf-resume-for-recruiters.sh && ./build-html-resume.sh && ./package-and-deploy.sh |
|
@ -1,17 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
cd /source |
|
||||
|
|
||||
userid="$(cat userid.info)" |
|
||||
|
|
||||
# Script to build an HTML site from the PDF source |
|
||||
pdf2htmlEX --zoom 1.5 --embed cfijo --dest-dir out resume.pdf |
|
||||
chown -R $userid:$userid out/ |
|
||||
chmod -R 666 out/ |
|
||||
chmod u+x out/ |
|
||||
mv out/resume.html out/index.html |
|
||||
|
|
||||
tar -czvf ResumeSite.tar.gz -C out/ . |
|
||||
chown $userid:$userid ResumeSite.tar.gz |
|
||||
chmod 666 ResumeSite.tar.gz |
|
||||
rm -rf out |
|
@ -1,13 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
echo "$(id -u)" > userid.info |
|
||||
|
|
||||
# Script to build an HTML site from the PDF source |
|
||||
docker run \ |
|
||||
-v $(pwd):/source \ |
|
||||
sothr/pdf2htmlex \ |
|
||||
/usr/bin/env bash /source/scripts/build-html-resume-docker.sh |
|
||||
|
|
||||
./scripts/cleanup-latex.sh |
|
||||
|
|
||||
rm userid.info |
|
@ -1,18 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
set -e |
|
||||
set -x |
|
||||
|
|
||||
cd /source |
|
||||
|
|
||||
userid="$(cat userid.info)" |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
latex --output-format pdf "${1}" |
|
||||
outfile="$(basename -- ${1} | cut -f1 -d'.')" |
|
||||
chown $userid:$userid ${outfile}.pdf |
|
||||
chmod 666 ${outfile}.pdf |
|
||||
mv "${outfile}.pdf" "cover_letters/${outfile}.pdf" |
|
||||
|
|
||||
rm ${outfile}.log |
|
||||
rm ${outfile}.aux |
|
@ -1,16 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
set -e |
|
||||
set -x |
|
||||
|
|
||||
echo "$(id -u)" > userid.info |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
docker run -it \ |
|
||||
-v $(pwd):/source \ |
|
||||
schickling/latex \ |
|
||||
/usr/bin/env bash /source/scripts/build-pdf-cover-letter-docker.sh $1 |
|
||||
|
|
||||
./scripts/cleanup-latex.sh |
|
||||
|
|
||||
rm userid.info |
|
@ -1,11 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
cd /source |
|
||||
|
|
||||
userid="$(cat userid.info)" |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
latex --output-format pdf resume.tex |
|
||||
chown $userid:$userid resume.pdf |
|
||||
chmod 666 resume.pdf |
|
||||
rm resume.log |
|
@ -1,11 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
cd /source |
|
||||
|
|
||||
userid="$(cat userid.info)" |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
latex --output-format pdf resume_for_recruiters.tex |
|
||||
chown $userid:$userid resume_for_recruiters.pdf |
|
||||
chmod 666 resume_for_recruiters.pdf |
|
||||
rm resume_for_recruiters.log |
|
@ -1,13 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
echo "$(id -u)" > userid.info |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
docker run \ |
|
||||
-v $(pwd):/source:Z \ |
|
||||
schickling/latex \ |
|
||||
/usr/bin/env bash /source/scripts/build-pdf-resume-for-recruiters-docker.sh |
|
||||
|
|
||||
./scripts/cleanup-latex.sh |
|
||||
|
|
||||
rm userid.info |
|
@ -1,28 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
cd /source |
|
||||
|
|
||||
userid="$(cat userid.info)" |
|
||||
|
|
||||
# Get PDFJam to combine the pdf's |
|
||||
#curl -LSO http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam/pdfjam_latest.tgz |
|
||||
#tar -zxvf pdfjam_latest.tgz |
|
||||
#export PATH="$PWD/pdfjam/bin:$PATH" |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
latex --output-format pdf resume.tex |
|
||||
chown $userid:$userid resume.pdf |
|
||||
chmod 666 resume.pdf |
|
||||
latex --output-format pdf ${1}.tex |
|
||||
chown $userid:$userid ${1}.pdf |
|
||||
chmod 666 ${1}.pdf |
|
||||
|
|
||||
outfile="${1}_with_resume.pdf" |
|
||||
pdfjam --fitpaper 'true' --rotateoversize 'false' --suffix joined --no-landscape --outfile $outfile ${1}.pdf resume.pdf |
|
||||
#pdfjoin ${1}.pdf DPSResume.pdf --no-landscape --outfile $outfile |
|
||||
|
|
||||
chown $userid:$userid $outfile |
|
||||
chmod 666 $outfile |
|
||||
|
|
||||
rm resume.log |
|
||||
rm ${1}.log |
|
@ -1,13 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
echo "$(id -u)" > userid.info |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
docker run \ |
|
||||
-v $(pwd):/source \ |
|
||||
schickling/latex \ |
|
||||
/usr/bin/env bash /source/scripts/build-pdf-resume-with-cover-letter-docker.sh $1 |
|
||||
|
|
||||
./scripts/cleanup-latex.sh |
|
||||
|
|
||||
rm userid.info |
|
@ -1,13 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
echo "$(id -u)" > userid.info |
|
||||
|
|
||||
# Script to build a PDF from the latex source |
|
||||
docker run \ |
|
||||
-v $(pwd):/source:Z \ |
|
||||
schickling/latex \ |
|
||||
/usr/bin/env bash /source/scripts/build-pdf-resume-docker.sh |
|
||||
|
|
||||
./scripts/cleanup-latex.sh |
|
||||
|
|
||||
rm userid.info |
|
@ -1,3 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
rm -f *.aux *.4ct *.4tc *.dvi *.idv *.lg *.tmp *.xref |
|
@ -1,41 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
# Script to package the PDF and the html. |
|
||||
# Store them. |
|
||||
# flush the current directory |
|
||||
# checkout the gh-pages branch |
|
||||
# extract the updated site over the current |
|
||||
# add the changes |
|
||||
# commit the changes |
|
||||
# push the changes to github |
|
||||
|
|
||||
mkdir -p ~/tmp |
|
||||
|
|
||||
cp resume.pdf ~/tmp |
|
||||
cp resume_for_recruiters.pdf ~/tmp |
|
||||
cp ResumeSite.tar.gz ~/tmp |
|
||||
|
|
||||
# Prepare the current directory |
|
||||
git clean -fq . |
|
||||
git clean -fXq |
|
||||
git checkout . |
|
||||
|
|
||||
#Checkout the deployment directory |
|
||||
git checkout gh-pages |
|
||||
|
|
||||
# Move and extract the files |
|
||||
tar -zxvf ~/tmp/ResumeSite.tar.gz . |
|
||||
rm ~/tmp/ResumeSite.tar.gz |
|
||||
mv ~/tmp/resume.pdf . |
|
||||
mv ~/tmp/resume_for_recruiters.pdf . |
|
||||
|
|
||||
# Add the files |
|
||||
git add . |
|
||||
git commit -m "Auto updating resume site files" |
|
||||
git push ssh://git@gitlab.sothr.com:9141/warricksothr/resume.git HEAD:gh-pages --force |
|
||||
|
|
||||
# Prepare the current directory |
|
||||
git clean -fq . |
|
||||
git clean -fdXq |
|
||||
git checkout master |
|
||||
git pull |
|
@ -1,7 +0,0 @@ |
|||||
\name{Drew Short} |
|
||||
\address{ |
|
||||
\textifsymbol{18} St. Paul MN | |
|
||||
\Mobilefone \hspace{1 pt} (612)-361-1019 | |
|
||||
\Letter \hspace{1 pt} \href{mailto:drew@sothr.com?subject=Concerning Your Resume}{drew@sothr.com} | |
|
||||
\Mundus \hspace{1 pt} \url{https://www.sothr.com} |
|
||||
} |
|
@ -1,5 +0,0 @@ |
|||||
\name{Drew Short} |
|
||||
\address{ |
|
||||
\textifsymbol{18} Minneapolis/St. Paul MN | |
|
||||
\Mundus \hspace{1 pt} \href{https://www.linkedin.com/in/drew-short-5188033a/a}{LinkedIn} |
|
||||
} |
|
@ -1,15 +0,0 @@ |
|||||
\begin{resume} |
|
||||
|
|
||||
\input{tex_parts/resume_body/intro.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body/skills.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body/experience.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body/education.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body/achievements.tex} |
|
||||
|
|
||||
\input{tex_parts/resume_body/references.tex} |
|
||||
|
|
||||
\end{resume} |
|
@ -1,6 +0,0 @@ |
|||||
\section{NOTABLE ACHIEVEMENTS} |
|
||||
|
|
||||
\begin{itemize} \itemsep -0.5pt %reduce space between items-2pt %reduce space between items |
|
||||
\item \textbf{\emph{Eagle Scout \hfill 2007}} |
|
||||
\item BSA Leadership Instructor \hfill Summers 2004-2007 |
|
||||
\end{itemize} |
|
@ -1,7 +0,0 @@ |
|||||
\section{EDUCATION} |
|
||||
|
|
||||
{\sl Bachelor of Science}, IT (May 2013) \hfill Minnesota State University \\ |
|
||||
% \sl will be bold italic in New Century Schoolbook (or |
|
||||
% any postscript font) and just slanted in |
|
||||
% Computer Modern (default) font |
|
||||
Software Engineering \& Ethics \hfill Mankato, MN |
|
@ -1,64 +0,0 @@ |
|||||
\section{EXPERIENCE} |
|
||||
|
|
||||
{\bf Senior Platform Engineer} \hfill {\bf Flywheel Exchange, LLC} \\ |
|
||||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|
||||
Minneapolis, MN & 2020 - {\the\year} (\difftoday{2020}{02}{17}) \\ |
|
||||
\hline |
|
||||
\end{tabular*} |
|
||||
|
|
||||
\begin{itemize} \itemsep -0.5pt % reduce space between items |
|
||||
\item Lead team meetings, planning sessions, retrospectives, postmortems, gamedays, and brown bag learning sessions. |
|
||||
\item Developed Terraform + Helm + Kubernetes based replacement for the existing Manual + Bash + Docker Compose deployments. |
|
||||
\item Migrated legacy pet VMs to highly available metrics and build Kubernetes clusters managed through Terraform. |
|
||||
\item Lead development effort that moved customer site log collection into centralized GCP Stackdriver and customer supplied logging infrastructure. |
|
||||
\item Wrote management tooling for support to connect/maintain/upgrade Kubernetes deployments. |
|
||||
\item Currated and maintained support documentation for maintaining, upgrading, and migrating customer deployments. |
|
||||
\item Mentored platform engineers, software engineers, and interns on Terraform, Helm, Kubernetes, Scalable Code Patterns, and monitoring tooling. |
|
||||
\end{itemize} |
|
||||
|
|
||||
\vspace*{-5pt} |
|
||||
{\bf Senior Software Engineer} \hfill {\bf Optum} \\ |
|
||||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|
||||
Eden Prairie, MN & 2017 - 2020 (\diffdates{2017}{08}{01}{2020}{01}{30}) \\ |
|
||||
& (Contracted) 2016 - 2017 (\diffdates{2016}{12}{12}{2017}{07}{30}) \\ |
|
||||
\hline |
|
||||
\end{tabular*} |
|
||||
|
|
||||
\begin{itemize} \itemsep -0.5pt % reduce space between items |
|
||||
\item Replaced slow legacy REST API services with hoizontally scaling services and provided guidance and support for the migration process. |
|
||||
\item Led efforts to triage critical security issues in production Spring services, taking accountability for identified issues and assigning security work to engineers. |
|
||||
\item Developed report tooling to group and assign security issues to domain teams, reducing touch time and missed assignments. |
|
||||
\item Led the conversion work of legacy in-line JSON deserialization to Jackson powered DTO for the communication of internal data structures via web API and message queues between services managed by the team. |
|
||||
\item Improved code generation of an internal framework built on top of Spring. Significantly reducing configuration required for engineers to leverage message based workflows. |
|
||||
\end{itemize} |
|
||||
|
|
||||
% manually split the page here. TODO fix this so layout is less manual |
|
||||
\newpage |
|
||||
\vspace*{5pt} |
|
||||
|
|
||||
\vspace*{-5pt} |
|
||||
{\bf Software Engineer} \hfill {\bf Cargill Incorporated, Risk Management} \\ |
|
||||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|
||||
Hopkins, MN & 2013 - 2016 (\diffdates{2013}{06}{01}{2016}{12}{9}) \\ |
|
||||
\hline |
|
||||
\end{tabular*} |
|
||||
|
|
||||
\begin{itemize} \itemsep -0.5pt % reduce space between items |
|
||||
\item Led a small (3-5 person) team to retool and support a migration system in preparation of an extended cut-over testing period. |
|
||||
\item Architected a Python REST API to integrate an Oracle data source with a third-party suite of back, middle and front office tools. |
|
||||
\item Redesigned management system for '\emph{Risk Products}', delivering improved control over the individual components. |
|
||||
\item Maintained/upgraded a 10+ year Spring web application. Modernized interface, improved the back end, started work to move to modern build tools/process. |
|
||||
\end{itemize} |
|
||||
|
|
||||
\vspace*{-5pt} |
|
||||
{\bf Software Engineer Intern} \hfill (Under Contract To) {\bf FPX LLC} \\ |
|
||||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|
||||
Mankato, MN & 2011 - 2013 (\diffdates{2011}{04}{01}{2013}{05}{03}) \\ |
|
||||
\hline |
|
||||
\end{tabular*} |
|
||||
|
|
||||
\begin{itemize} \itemsep -0.5pt %reduce space between items |
|
||||
\item Expanded a REST API and implemented continuous integration testing. |
|
||||
\item Developed a DSL and tooling for internal auditing, testing and reporting. |
|
||||
\item Developed a '\emph{playback}' system that facilitated debugging of client systems. |
|
||||
\end{itemize} |
|
@ -1,9 +0,0 @@ |
|||||
\section{SOFTWARE ENGINEER} |
|
||||
|
|
||||
Object Oriented Design and Development | Relational Database Systems |
|
||||
|
|
||||
\begin{itemize} \itemsep -0.5pt |
|
||||
\item \emph{Exceptional Software Engineer} - 11+ years of experience with the entire software development lifcycle. Dedicated to the delivery of innovative solutions for today's problems, using tomorrow's tools. |
|
||||
\item \emph{Excellent troubleshooting and analysis skills} - Quick to analyze the root cause of issues and work towards both immediate and long term solutions. |
|
||||
\item \emph{Expert in backend/middle system design \& implementation} - Years of experience in validating, processing, and marshalling data across varied systems. |
|
||||
\end{itemize} |
|
@ -1,4 +0,0 @@ |
|||||
\section{REFERENCES} |
|
||||
|
|
||||
\centering |
|
||||
Available Upon Request |
|
@ -1,12 +0,0 @@ |
|||||
\section{COMPUTER \\ SKILLS} |
|
||||
|
|
||||
{\bf Languages \& Software:} Go, Python, Java, Kotlin, Groovy, SQL, |
|
||||
Poetry, Maven, Gradle, |
|
||||
pytest, JUnit, Spock, |
|
||||
Spring Framework, Spring Boot, Spring Cloud Stream, Hibernate, |
|
||||
Kubernetes, Helm, Terraform, |
|
||||
GitLab CI/CD, Jenkins, Concourse, |
|
||||
Docker, Tomcat, Nginx, |
|
||||
Oracle, MySQL, SQLite. \\ |
|
||||
{\bf Cloud Providers:} GCP, AWS, Azure. \\ |
|
||||
{\bf Operating Systems:} Windows, Linux (Ubuntu, Fedora, RHEL), OSX. |
|
@ -1,86 +0,0 @@ |
|||||
\newcounter{datetoday} |
|
||||
\newcounter{diffyears} |
|
||||
\newcounter{diffmonths} |
|
||||
\newcounter{diffdays} |
|
||||
|
|
||||
% Function curtesy of Martin Scharrer |
|
||||
% http://tex.stackexchange.com/questions/14518/difference-between-two-dates |
|
||||
\newcommand{\difftoday}[3]{% |
|
||||
\setmydatenumber{datetoday}{\the\year}{\the\month}{\the\day}% |
|
||||
\setmydatenumber{diffdays}{#1}{#2}{#3}% |
|
||||
\addtocounter{diffdays}{-\thedatetoday}% |
|
||||
\ifnum\value{diffdays}>0 |
|
||||
\def\diffbefore{in }% |
|
||||
\def\diffafter{}% |
|
||||
\else |
|
||||
\def\diffbefore{}% |
|
||||
\def\diffafter{}% |
|
||||
\setcounter{diffdays}{-\value{diffdays}}% |
|
||||
\fi |
|
||||
\setcounter{diffyears}{\value{diffdays}/365}% |
|
||||
\setcounter{diffdays}{\value{diffdays}-365*\value{diffyears}}% |
|
||||
\setcounter{diffmonths}{\value{diffdays}/30}% |
|
||||
\setcounter{diffdays}{\value{diffdays}-30*\value{diffmonths}}% |
|
||||
% |
|
||||
\diffbefore |
|
||||
\ifnum\value{diffyears}=0 |
|
||||
\else |
|
||||
\ifnum\value{diffyears}>1 |
|
||||
\thediffyears\space years\ignorespacesafterend |
|
||||
\else |
|
||||
\thediffyears\space year\ignorespacesafterend |
|
||||
\fi |
|
||||
\fi |
|
||||
\ifnum\value{diffmonths}=0 |
|
||||
\else |
|
||||
\ifnum\value{diffyears}>0 |
|
||||
, |
|
||||
\fi |
|
||||
\ifnum\value{diffmonths}>1 |
|
||||
\thediffmonths\space months\ignorespacesafterend |
|
||||
\else |
|
||||
\thediffmonths\space month\ignorespacesafterend |
|
||||
\fi |
|
||||
\fi |
|
||||
\diffafter |
|
||||
} |
|
||||
|
|
||||
\newcommand{\diffdates}[6]{% |
|
||||
\setmydatenumber{datetoday}{#4}{#5}{#6}% |
|
||||
\setmydatenumber{diffdays}{#1}{#2}{#3}% |
|
||||
\addtocounter{diffdays}{-\thedatetoday}% |
|
||||
\ifnum\value{diffdays}>0 |
|
||||
\def\diffbefore{in }% |
|
||||
\def\diffafter{}% |
|
||||
\else |
|
||||
\def\diffbefore{}% |
|
||||
\def\diffafter{}% |
|
||||
\setcounter{diffdays}{-\value{diffdays}}% |
|
||||
\fi |
|
||||
\setcounter{diffyears}{\value{diffdays}/365}% |
|
||||
\setcounter{diffdays}{\value{diffdays}-365*\value{diffyears}}% |
|
||||
\setcounter{diffmonths}{\value{diffdays}/30}% |
|
||||
\setcounter{diffdays}{\value{diffdays}-30*\value{diffmonths}}% |
|
||||
% |
|
||||
\diffbefore |
|
||||
\ifnum\value{diffyears}=0 |
|
||||
\else |
|
||||
\ifnum\value{diffyears}>1 |
|
||||
\thediffyears\space years\ignorespacesafterend |
|
||||
\else |
|
||||
\thediffyears\space year\ignorespacesafterend |
|
||||
\fi |
|
||||
\fi |
|
||||
\ifnum\value{diffmonths}=0 |
|
||||
\else |
|
||||
\ifnum\value{diffyears}>0 |
|
||||
, |
|
||||
\fi |
|
||||
\ifnum\value{diffmonths}>1 |
|
||||
\thediffmonths\space months\ignorespacesafterend |
|
||||
\else |
|
||||
\thediffmonths\space month\ignorespacesafterend |
|
||||
\fi |
|
||||
\fi |
|
||||
\diffafter |
|
||||
} |
|
@ -1,15 +0,0 @@ |
|||||
\input{tex_parts/resume_preamble} |
|
||||
|
|
||||
\input{tex_parts/resume_commands} |
|
||||
|
|
||||
% Hyperref setup |
|
||||
\hypersetup{ |
|
||||
colorlinks=true, |
|
||||
urlcolor=blue |
|
||||
} |
|
||||
|
|
||||
\pagestyle{fancy} % Makes sure we have footers |
|
||||
\renewcommand{\headrulewidth}{0pt} % clear the header |
|
||||
\rfoot{Last Updated: \today} % set the right footer |
|
||||
\rhead{\vspace{13pt}\textbf{\Resume}} % Put Resume in the upper right |
|
||||
\pagenumbering{gobble} % Hide page numbering |
|
@ -1,11 +0,0 @@ |
|||||
% LaTeX resume using res.cls |
|
||||
\documentclass[line,margin]{res} |
|
||||
\usepackage{helvetica} % uses helvetica postscript font (download helvetica.sty) |
|
||||
\usepackage{newcent} % uses new century schoolbook postscript font |
|
||||
\usepackage{fancyhdr} % FancyHDR package for footers |
|
||||
\usepackage{hyperref} % HyperRef package to get fancy hyperlinks |
|
||||
\usepackage{marvosym} % Symbol library |
|
||||
\usepackage{ctable} % For special line rules |
|
||||
\usepackage{datenumber} % For date calculations |
|
||||
\usepackage{calc} |
|
||||
\usepackage{ifsym} |
|
@ -1,8 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" |
|
||||
pushd "${DIR}" |
|
||||
|
|
||||
fly -t sothr set-pipeline --pipeline resume --config pipeline.yml |
|
||||
|
|
||||
popd |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue