make-cv 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. files/Awards/personal awards data.xlsx +0 -0
  2. files/Awards/student awards data.xlsx +0 -0
  3. files/CV/cv.tex +69 -0
  4. files/CV/cv_header.tex +116 -0
  5. files/CV/cv_tables.tex +94 -0
  6. files/CV/far.tex +163 -0
  7. files/Proposals & Grants/proposals & grants.xlsx +0 -0
  8. files/Scholarship/scholarship.bib +17 -0
  9. files/Scholarship/thesis data.xlsx +0 -0
  10. files/Service/reviews data.xlsx +0 -0
  11. files/Service/service data.xlsx +0 -0
  12. files/Service/undergraduate research data.xlsx +0 -0
  13. make_cv/UR2latex.py +67 -0
  14. make_cv/UR2latex_far.py +62 -0
  15. make_cv/bib2latex_far.py +87 -0
  16. make_cv/bib_add_citations.py +146 -0
  17. make_cv/bib_add_keywords.py +135 -0
  18. make_cv/bib_add_student_markers.py +131 -0
  19. make_cv/bib_get_entries.py +216 -0
  20. make_cv/create_config.py +91 -0
  21. make_cv/grants2latex_far.py +69 -0
  22. make_cv/invited_text2bib.bash +7 -0
  23. make_cv/make_cv.py +355 -0
  24. make_cv/make_far.py +152 -0
  25. make_cv/make_web.py +155 -0
  26. make_cv/personal_awards2latex.py +87 -0
  27. make_cv/personal_awards2latex_far.py +62 -0
  28. make_cv/props2latex_far.py +64 -0
  29. make_cv/publons2excel.py +60 -0
  30. make_cv/publons2latex.py +70 -0
  31. make_cv/publons2latex_far.py +60 -0
  32. make_cv/publons_editor2excel.py +22 -0
  33. make_cv/service2latex.py +90 -0
  34. make_cv/service2latex_far.py +57 -0
  35. make_cv/stringprotect.py +225 -0
  36. make_cv/student_awards2latex.py +60 -0
  37. make_cv/student_awards2latex_far.py +59 -0
  38. make_cv/teaching2latex.py +68 -0
  39. make_cv/teaching2latex_far.py +74 -0
  40. make_cv/thesis2latex_far.py +88 -0
  41. make_cv-0.0.1.dist-info/METADATA +227 -0
  42. make_cv-0.0.1.dist-info/RECORD +45 -0
  43. make_cv-0.0.1.dist-info/WHEEL +4 -0
  44. make_cv-0.0.1.dist-info/entry_points.txt +2 -0
  45. make_cv-0.0.1.dist-info/licenses/LICENSE.md +675 -0
Binary file
Binary file
files/CV/cv.tex ADDED
@@ -0,0 +1,69 @@
1
+ \input{cv_header.tex}
2
+
3
+ \begin{center}
4
+ \Large{\bf My Name} % make the name stand out
5
+ \end{center}
6
+
7
+ \begin{center}
8
+ MAE Department Box 5725\\
9
+ Clarkson University\\
10
+ Potsdam, NY 13699-5725\\
11
+ (315) 268-2204\\
12
+ \em{myemail@clarkson.edu}
13
+ \end{center}
14
+
15
+ \section*{EDUCATION}
16
+ {\bf Some University} \hspace*{\fill}
17
+ { Some Place, XX}
18
+ \par
19
+ {\em January 19XX - November 1997}
20
+ \par
21
+ Doctoral degree in the Mechanical and Aerospace Engineering program,
22
+ with concentration in the areas of blah blah. Master of Arts degree received June 1994. Advisor: Professor D. D. Dummy.
23
+ \par
24
+ \vspace{\baselineskip}
25
+ {\bf University of Somewhere} \hspace*{\fill}
26
+ { Somewhere, SN}
27
+ \par
28
+ {\em September 1987 - June 1991}
29
+ \par
30
+ Bachelor of Science degree in Mechanical Engineering.
31
+ Undergraduate research advisor: Professor Somebody. Research topic: something.
32
+
33
+ \section*{EXPERIENCE}
34
+ {\bf Clarkson University} \hspace*{\fill} Potsdam, NY
35
+ \par
36
+ {\em Associate Professor, Mechanical and Aeronautical Eng. Dept.} \hfill {\em March 2006 -May 2013}\\
37
+ {\em Assistant Professor, Mechanical and Aeronautical Eng. Dept.} \hfill {\em January 2001 - March 2006 }\\
38
+ {\em Courtesy Appointment, Math. and Computer Science Dept.}
39
+
40
+ \par
41
+ Current research is on doing fun stuff.
42
+
43
+ \par
44
+ \vspace{\baselineskip}
45
+ {\bf Another place I have been} \hspace*{\fill} City, ST
46
+ \par
47
+ {\em Title goes here} \hfill {\em September 2008 - July 2009}
48
+ \par
49
+ Did a bunch of stuff. Host: D.\ D.\ Dummy
50
+
51
+ % The vbox command makes sure this doesn't get broken between pages
52
+ \vbox{
53
+ \section*{PROFESSIONAL MEMBERSHIPS}
54
+ American Society of Mechanical Engineers (ASME) \\
55
+ American Society of Engineering Education (ASEE) \\
56
+ }
57
+
58
+ %\vbox{
59
+ %\section*{CONSULTING}
60
+ %Verian Semiconductor Equipment Associates, silicon wafer manufacturing 2010- \\
61
+ %Optiwind, wind turbine design 2011-2013 \\
62
+ %TAM Ceramics, thermoelectric modeling, 2014- \\
63
+ %Zeropoint Clean Tech, fluids simulation of gasifier, 2009 \\
64
+ }
65
+
66
+ \input{cv_tables.tex}
67
+
68
+ \end{document}
69
+
files/CV/cv_header.tex ADDED
@@ -0,0 +1,116 @@
1
+ \documentclass[10pt]{article}
2
+ \pagestyle{empty} % no page numbers, thanks.
3
+ \usepackage{hyperref}
4
+ \usepackage{ltablex}
5
+ \usepackage{ifthen}
6
+ \usepackage[tiny]{titlesec}
7
+ \usepackage[backend=biber,style=numeric-comp,sorting=none,giveninits=true,maxnames=20]{biblatex}
8
+
9
+ % Add bib file to make bibliography information
10
+ \addbibresource{../Scholarship/scholarship.bib}
11
+
12
+
13
+ % Set page size
14
+ \textwidth = 6.5 in
15
+ \textheight = 9 in
16
+ \oddsidemargin = 0.0 in
17
+ \evensidemargin = 0.0 in
18
+ \topmargin = 0.0 in
19
+ \headheight = 0.0 in
20
+ \headsep = 0.0 in
21
+ \parindent= 0 in
22
+
23
+ % Make sure tables always span the page width
24
+ \keepXColumns
25
+ % Remove annoying line space before table
26
+ \setlength\LTpre{0in}
27
+ % This puts a little extra space in the tables
28
+ \setlength{\extrarowheight}{2.5pt}
29
+ % Add counter for rows of tables
30
+ \newcounter{rowcnt}
31
+ \newcommand\rownum{\ifnumequal{\value{rowcnt}}{0}{\#}{\therowcnt.}\stepcounter{rowcnt}}
32
+ \AtEndEnvironment{tabularx}{\setcounter{rowcnt}{0}}
33
+
34
+ % Allow text to be rough at the bottom for better page splits
35
+ \raggedbottom
36
+
37
+ % Change the section spacing for better headings
38
+ %\titlespacing*{⟨command ⟩}{⟨left ⟩}{⟨before-sep ⟩}{⟨after-sep ⟩}
39
+ \titlespacing*{\section}{0cm}{*2.5}{*0.5}
40
+
41
+ % Commands to label graduate and undergraduate students
42
+ \providecommand{\us}{\textsuperscript{*}}
43
+ \providecommand{\gs}{\textsuperscript{+}}
44
+
45
+
46
+ % Remove some fields from journal articles
47
+ \AtEveryCitekey{\ifentrytype{article}{\clearfield{url}\clearfield{issn}\clearfield{review}\clearfield{series}\clearfield{eprint}}{}}
48
+ \AtEveryCitekey{\ifentrytype{misc}{\clearfield{url}\clearfield{issn}\clearfield{review}\clearfield{series}\clearfield{eprint}}{}}
49
+
50
+ % This adds the field citations to the bibliography data so I can add the number of citaitons
51
+ \begin{filecontents}{biblatex-dm.cfg}
52
+ \DeclareDatamodelFields[type=field, datatype=integer, nullok=true]{citations}
53
+ \DeclareDatamodelEntryfields{citations}
54
+ \end{filecontents}
55
+
56
+ % Remove the "In" from journal citations
57
+ \renewbibmacro*{in:}{%
58
+ \setunit{\addcomma\space}%
59
+ \ifentrytype{article}
60
+ {}
61
+ {\printtext{%
62
+ \bibstring{in}\intitlepunct}}}
63
+
64
+ % Change volume, number format
65
+ \renewbibmacro*{volume+number+eid}{%
66
+ \printfield{volume}%
67
+ \setunit*{\addcomma\addspace}%
68
+ \iffieldundef{number}{}{%
69
+ \printtext{no\adddot\addspace}%
70
+ }%
71
+ \printfield{number}%
72
+ \setunit{\addcomma\space}%
73
+ \printfield{eid}}
74
+
75
+ % This adds the number of citations in brackets
76
+ \renewbibmacro*{finentry}{
77
+ \printfield{citations}%
78
+ \finentry}
79
+ \DeclareFieldFormat{citations}{\mkbibbrackets{#1}}
80
+
81
+ \newboolean{Journal}
82
+ \newboolean{Refereed}
83
+ \newboolean{Book}
84
+ \newboolean{Conference}
85
+ \newboolean{Patent}
86
+ \newboolean{Invited}
87
+ \newboolean{PersonalAwards}
88
+ \newboolean{StudentAwards}
89
+ \newboolean{Service}
90
+ \newboolean{Reviews}
91
+ \newboolean{GradAdvisees}
92
+ \newboolean{UndergradResearch}
93
+ \newboolean{Teaching}
94
+ \newboolean{Grants}
95
+ \newboolean{Proposals}
96
+
97
+ \setboolean{Journal}{true}
98
+ \setboolean{Refereed}{true}
99
+ \setboolean{Book}{true}
100
+ \setboolean{Conference}{true}
101
+ \setboolean{Patent}{true}
102
+ \setboolean{Invited}{true}
103
+ \setboolean{PersonalAwards}{true}
104
+ \setboolean{StudentAwards}{true}
105
+ \setboolean{Service}{true}
106
+ \setboolean{Reviews}{true}
107
+ \setboolean{GradAdvisees}{true}
108
+ \setboolean{UndergradResearch}{true}
109
+ \setboolean{Teaching}{true}
110
+ \setboolean{Grants}{true}
111
+ \setboolean{Proposals}{true}
112
+
113
+ \IfFileExists{exclusions.tex} {
114
+ \input{exclusions.tex}
115
+ }
116
+
files/CV/cv_tables.tex ADDED
@@ -0,0 +1,94 @@
1
+
2
+ In the following a + indicates a graduate advisee, and a * indicates an undergraduate advisee. The number in brackets is the number of citations as reported by Google Scholar.
3
+ \ifthenelse{\boolean{Journal}}{
4
+ \IfFileExists{Tables/journal.tex} {
5
+ \section*{JOURNAL ARTICLES}
6
+ \input{Tables/journal.tex}
7
+ }}{}
8
+
9
+ \ifthenelse{\boolean{Refereed}}{
10
+ \IfFileExists{Tables/refereed.tex} {
11
+ \section*{REFEREED CONFERENCE PAPERS}
12
+ \input{Tables/refereed.tex}
13
+ }}{}
14
+
15
+ \ifthenelse{\boolean{Book}}{
16
+ \IfFileExists{Tables/book.tex} {
17
+ \section*{BOOK CHAPTERS}
18
+ \input{Tables/book.tex}
19
+ }}{}
20
+
21
+ \ifthenelse{\boolean{Conference}}{
22
+ \IfFileExists{Tables/conference.tex} {
23
+ \section*{CONFERENCES}
24
+ \input{Tables/conference.tex}
25
+ }}{}
26
+
27
+ \ifthenelse{\boolean{Patent}}{
28
+ \IfFileExists{Tables/patent.tex} {
29
+ \section*{PATENTS}
30
+ \input{Tables/patent.tex}
31
+ }}{}
32
+
33
+ \ifthenelse{\boolean{Invited}}{
34
+ \IfFileExists{Tables/invited.tex} {
35
+ \section*{INVITED TALKS}
36
+ \input{Tables/invited.tex}
37
+ }}{}
38
+
39
+
40
+ \ifthenelse{\boolean{PersonalAwards}}{
41
+ \IfFileExists{Tables/personal_awards.tex} {
42
+ \section*{PERSONAL AWARDS}
43
+ \input{Tables/personal_awards.tex}
44
+ }}{}
45
+
46
+ \ifthenelse{\boolean{StudentAwards}}{
47
+ \IfFileExists{Tables/student_awards.tex} {
48
+ \section*{STUDENT AWARDS}
49
+ \input{Tables/student_awards.tex}
50
+ }}{}
51
+
52
+ \ifthenelse{\boolean{Service}}{
53
+ \IfFileExists{Tables/service.tex} {
54
+ \section*{SERVICE}
55
+ \input{Tables/service.tex}
56
+ }}{}
57
+
58
+ \ifthenelse{\boolean{Reviews}}{
59
+ \IfFileExists{Tables/reviews.tex} {
60
+ \section*{REVIEWING}
61
+ \input{Tables/reviews.tex}
62
+ }}{}
63
+
64
+ \ifthenelse{\boolean{GradAdvisees}}{
65
+ \IfFileExists{Tables/thesis.tex} {
66
+ \section*{GRADUATE ADVISEES}
67
+ \input{Tables/thesis.tex}
68
+ }}{}
69
+
70
+ \ifthenelse{\boolean{UndergradResearch}}{
71
+ \IfFileExists{Tables/undergraduate_research.tex} {
72
+ \section*{UNDERGRADUATE RESEARCH}
73
+ \input{Tables/undergraduate_research.tex}
74
+ }}{}
75
+
76
+ \ifthenelse{\boolean{Teaching}}{
77
+ \IfFileExists{Tables/teaching.tex} {
78
+ \section*{Teaching}
79
+ This table includes all classes taught that had reported teaching evaluations. Question 19 is ``Overall, how would you rate this instructor?'' Question 20 is ``Overall, how would you rate this course?''. The scores are out of 5 and the University average evaluation is approximately 4.1.
80
+ \input{Tables/teaching.tex}
81
+ }}{}
82
+
83
+ \ifthenelse{\boolean{Grants}}{
84
+ \IfFileExists{Tables/grants.tex} {
85
+ \section*{GRANTS}
86
+ \input{Tables/grants.tex}
87
+ }}{}
88
+
89
+ \ifthenelse{\boolean{Proposals}}{
90
+ \IfFileExists{Tables/proposals.tex} {
91
+ \section*{PROPOSALS}
92
+ \input{Tables/proposals.tex}
93
+ }}{}
94
+
files/CV/far.tex ADDED
@@ -0,0 +1,163 @@
1
+ \documentclass[10pt]{article}
2
+ \pagestyle{empty} % no page numbers, thanks.
3
+ \usepackage{hyperref}
4
+ \usepackage{ltablex}
5
+ \usepackage{ifthen}
6
+ \usepackage[tiny]{titlesec}
7
+ \usepackage[backend=biber,style=numeric-comp,sorting=none,giveninits=true,maxnames=20]{biblatex}
8
+
9
+ % Add bib file to make bibliography information
10
+ \addbibresource{../Scholarship/scholarship.bib}
11
+
12
+ % Set page size
13
+ \textwidth = 6.5 in
14
+ \textheight = 9 in
15
+ \oddsidemargin = 0.0 in
16
+ \evensidemargin = 0.0 in
17
+ \topmargin = 0.0 in
18
+ \headheight = 0.0 in
19
+ \headsep = 0.0 in
20
+ \parindent= 0 in
21
+
22
+ % Make sure tables always span the page width
23
+ \keepXColumns
24
+ % Remove annoying line space before table
25
+ \setlength\LTpre{0in}
26
+ % This puts a little extra space in the tables
27
+ \setlength{\extrarowheight}{2.5pt}
28
+ % Add counter for rows of tables
29
+ \newcounter{rowcnt}
30
+ \newcommand\rownum{\ifnumequal{\value{rowcnt}}{0}{\#}{\therowcnt.}\stepcounter{rowcnt}}
31
+ \AtEndEnvironment{tabularx}{\setcounter{rowcnt}{0}}
32
+
33
+ % Allow text to be rough at the bottom for better page splits
34
+ \raggedbottom
35
+
36
+ % Change the section spacing for better headings
37
+ %\titlespacing*{⟨command ⟩}{⟨left ⟩}{⟨before-sep ⟩}{⟨after-sep ⟩}
38
+ \titlespacing*{\section}{0cm}{*2.5}{*0.5}
39
+
40
+ % Commands to label graduate and undergraduate students
41
+ \providecommand{\us}{\textsuperscript{*}}
42
+ \providecommand{\gs}{\textsuperscript{+}}
43
+
44
+
45
+ % Remove some fields from journal articles
46
+ \AtEveryCitekey{\ifentrytype{article}{\clearfield{url}\clearfield{issn}\clearfield{review}\clearfield{series}\clearfield{eprint}}{}}
47
+ \AtEveryCitekey{\ifentrytype{misc}{\clearfield{url}\clearfield{issn}\clearfield{review}\clearfield{series}\clearfield{eprint}}{}}
48
+
49
+ % This adds the field citations to the bibliography data so I can add the number of citaitons
50
+ \begin{filecontents}{biblatex-dm.cfg}
51
+ \DeclareDatamodelFields[type=field, datatype=integer, nullok=true]{citations}
52
+ \DeclareDatamodelEntryfields{citations}
53
+ \end{filecontents}
54
+
55
+ % Remove the "In" from journal citations
56
+ \renewbibmacro*{in:}{%
57
+ \setunit{\addcomma\space}%
58
+ \ifentrytype{article}
59
+ {}
60
+ {\printtext{%
61
+ \bibstring{in}\intitlepunct}}}
62
+
63
+ % Change volume, number format
64
+ \renewbibmacro*{volume+number+eid}{%
65
+ \printfield{volume}%
66
+ \setunit*{\addcomma\addspace}%
67
+ \iffieldundef{number}{}{%
68
+ \printtext{no\adddot\addspace}%
69
+ }%
70
+ \printfield{number}%
71
+ \setunit{\addcomma\space}%
72
+ \printfield{eid}}
73
+
74
+ % This adds the number of citations in brackets
75
+ \renewbibmacro*{finentry}{
76
+ \printfield{citations}%
77
+ \finentry}
78
+ \DeclareFieldFormat{citations}{\mkbibbrackets{#1}}
79
+
80
+ \title{Faculty Activity Report}
81
+ \author{}
82
+
83
+ \begin{document}
84
+ \maketitle
85
+ \tableofcontents
86
+
87
+ \IfFileExists{Tables/journal_far.tex} {
88
+ \section{JOURNAL ARTICLES}
89
+ \input{Tables/journal_far.tex}
90
+ }
91
+
92
+ \IfFileExists{Tables/refereed_far.tex} {
93
+ \section{REFEREED CONFERENCE\\ PAPERS}
94
+ \input{Tables/refereed_far.tex}
95
+ }
96
+
97
+ \IfFileExists{Tables/book_far.tex} {
98
+ \section{BOOK CHAPTERS}
99
+ \input{Tables/book_far.tex}
100
+ }
101
+
102
+ \IfFileExists{Tables/conference_far.tex} {
103
+ \section{CONFERENCES}
104
+ \input{Tables/conference_far.tex}
105
+ }
106
+
107
+ \IfFileExists{Tables/patent_far.tex} {
108
+ \section{PATENTS}
109
+ \input{Tables/patent_far.tex}
110
+ }
111
+
112
+ \IfFileExists{Tables/invited_far.tex} {
113
+ \section{INVITED TALKS}
114
+ \input{Tables/invited_far.tex}
115
+ }
116
+
117
+ \IfFileExists{Tables/personal_awards_far.tex} {
118
+ \section{PERSONAL AWARDS}
119
+ \input{Tables/personal_awards_far.tex}
120
+ }
121
+
122
+ \IfFileExists{Tables/student_awards_far.tex} {
123
+ \section{STUDENT AWARDS}
124
+ \input{Tables/student_awards_far.tex}
125
+ }
126
+
127
+ \IfFileExists{Tables/service_far.tex} {
128
+ \section{SERVICE}
129
+ \input{Tables/service_far.tex}
130
+ }
131
+
132
+ \IfFileExists{Tables/reviews_far.tex} {
133
+ \section{REVIEWING}
134
+ \input{Tables/reviews_far.tex}
135
+ }
136
+
137
+ \IfFileExists{Tables/thesis_far.tex} {
138
+ \section{GRADUATE\\ ADVISEES}
139
+ \input{Tables/thesis_far.tex}
140
+ }
141
+
142
+ \IfFileExists{Tables/undergraduate_research_far.tex} {
143
+ \section{UNDERGRAD RESEARCH}
144
+ \input{Tables/undergraduate_research_far.tex}
145
+ }
146
+
147
+ \IfFileExists{Tables/teaching_far.tex} {
148
+ \section{TEACHING}
149
+ \input{Tables/teaching_far.tex}
150
+ }
151
+
152
+ \IfFileExists{Tables/grants_far.tex} {
153
+ \section{GRANTS}
154
+ \input{Tables/grants_far.tex}
155
+ }
156
+
157
+ \IfFileExists{Tables/proposals_far.tex} {
158
+ \section{PROPOSALS}
159
+ \input{Tables/proposals_far.tex}
160
+ }
161
+
162
+ \end{document}
163
+
@@ -0,0 +1,17 @@
1
+ @Comment{jabref-meta: grouping:
2
+ 0 AllEntriesGroup:;
3
+ 1 AutomaticKeywordGroup:Category\;0\;keywords\;\\\;\;>\;1\;\;\;\;;
4
+ }
5
+
6
+ @Comment{jabref-meta: grouping:
7
+ 0 AllEntriesGroup:;
8
+ 1 KeywordGroup:conference\;0\;keywords\;conference\;0\;0\;1\;0x8a8a8aff\;\;conference papers\;;
9
+ 1 KeywordGroup:journal\;0\;keywords\;journal\;0\;0\;1\;0x8a8a8aff\;\;journal articles\;;
10
+ 1 KeywordGroup:arXiv\;0\;keywords\;arXiv\;0\;0\;1\;0x8a8a8aff\;\;arXiv articles\;;
11
+ 1 KeywordGroup:invited\;0\;keywords\;invited\;0\;0\;1\;0x8a8a8aff\;\;invited talks\;;
12
+ 1 KeywordGroup:book\;0\;keywords\;book\;0\;0\;1\;0x8a8a8aff\;\;books and chapters\;;
13
+ 1 KeywordGroup:techreport\;0\;keywords\;techreport\;0\;0\;1\;0x8a8a8aff\;\;technical reports\;;
14
+ 1 KeywordGroup:refereed\;0\;keywords\;refereed\;0\;0\;1\;0x8a8a8aff\;\;refereed conference papers\;;
15
+ 1 KeywordGroup:patent\;0\;keywords\;patent\;0\;0\;1\;0x8a8a8aff\;\;patents\;;
16
+ 1 KeywordGroup:ignore\;0\;keywords\;patent\;0\;0\;1\;0x8a8a8aff\;\;ignore\;;
17
+ }
Binary file
Binary file
Binary file
make_cv/UR2latex.py ADDED
@@ -0,0 +1,67 @@
1
+ #! /usr/bin/env python3
2
+
3
+ # Python code to create latex form of Undergraduate Research Data
4
+
5
+ # import modules
6
+ import datetime
7
+ import pandas as pd
8
+ import os
9
+ import sys
10
+
11
+ from .stringprotect import str2latex
12
+ from .stringprotect import abbreviate_name_list
13
+
14
+ def UR2latex(f,years,inputfile):
15
+ source = inputfile # file to read
16
+ try:
17
+ df = pd.read_excel(source,sheet_name="Data")
18
+ except OSError:
19
+ print("Could not open/read file: " + source)
20
+ return
21
+
22
+ df.fillna('',inplace=True)
23
+ if (years > 0):
24
+ today = date.today()
25
+ year = today.year
26
+ begin_year = year - years
27
+
28
+ df = df[(df['Calendar Year'] >= begin_year)]
29
+ df.sort_values(by=['Calendar Year','Term'], inplace=True, ascending = [False,True])
30
+ df.reset_index(inplace=True)
31
+
32
+ nrows = df.shape[0]
33
+ if (nrows > 0):
34
+ #table = pd.pivot_table(df, values=['Calendar Year','Term'], index=['Students', 'Title', 'Program Type'], aggfunc={'Calendar Year': ('min','max'), 'Term': 'count'},observed=True)
35
+ table = pd.pivot_table(df, values=['Calendar Year','Term'], index=['Students', 'Title', 'Program Type'], aggfunc={'Calendar Year': ('min'), 'Term': 'count'},observed=True)
36
+ df = table.reset_index()
37
+ #print(df.columns)
38
+ nrows = df.shape[0]
39
+ #df.sort_values(by=[('Calendar Year', 'max')], inplace=True, ascending = [False])
40
+ df.sort_values(by=['Calendar Year'], inplace=True, ascending = [False])
41
+ df = df.reset_index()
42
+ #print(df)
43
+
44
+ f.write("\\begin{tabularx}{\\linewidth}{>{\\rownum}rXll}\n & Name: Title & Program & Date(Semesters) \\\\\n\\hline\n")
45
+ count = 0
46
+ while count < nrows:
47
+ f.write(" & " +abbreviate_name_list(df.loc[count,"Students"])+": " +str2latex(df.loc[count,"Title"]) + " & " +str2latex(df.loc[count,"Program Type"]) + " & " +str2latex(df.loc[count,"Calendar Year"]) +"("+str2latex(df.loc[count,"Term"]) +")\\\\\n")
48
+ count += 1
49
+
50
+ f.write("\\end{tabularx}\n")
51
+
52
+ return(nrows)
53
+
54
+ if __name__ == "__main__":
55
+ parser = argparse.ArgumentParser(description='This script outputs undergraduate research data to a latex table')
56
+ parser.add_argument('-y', '--years',default="0",type=int,help='the number of years to output, default is all')
57
+ parser.add_argument('-a', '--append', action='store_const',const="a",default="w")
58
+ parser.add_argument('inputfile',help='the input excel file name')
59
+ parser.add_argument('outputfile',help='the output latex table name')
60
+ args = parser.parse_args()
61
+
62
+ f = open(args.outputfile, args.append) # file to write
63
+ nrows = UR2latex(f,args.years,args.inputfile)
64
+ f.close()
65
+
66
+ if (nrows == 0):
67
+ os.remove(args.outputfile)
@@ -0,0 +1,62 @@
1
+ #! /usr/bin/env python3
2
+
3
+ # Python code to create latex form of Undergraduate Research Data - for the three most recent 3 years
4
+ # First argument is excel file to read (including path), and second argument is what you want to name output file, as .tex
5
+
6
+ # import modules
7
+ from datetime import date
8
+ import pandas as pd
9
+ import os
10
+ import sys
11
+ import argparse
12
+
13
+ from .stringprotect import str2latex
14
+ from .stringprotect import abbreviate_name_list
15
+
16
+ def UR2latex_far(f,years,inputfile):
17
+ source = inputfile # file to read
18
+ try:
19
+ df = pd.read_excel(source,sheet_name="Data")
20
+ except OSError:
21
+ print("Could not open/read file: " + source)
22
+ return
23
+
24
+ df.fillna('',inplace=True)
25
+ #df['Calendar Year'] = pd.to_datetime(df['Calendar Year'],format = "%Y",exact=True)
26
+
27
+ if years > 0:
28
+ today = date.today()
29
+ year = today.year
30
+ begin_year = year - years
31
+ df = df[(df['Calendar Year'] >= begin_year)]
32
+
33
+ df.sort_values(by=['Calendar Year','Term'], inplace=True, ascending = [False,True])
34
+ df.reset_index(inplace=True)
35
+
36
+ nrows = df.shape[0]
37
+
38
+ if (nrows > 0):
39
+ f.write("\\begin{tabularx}{\linewidth}{Xll}\nName: Title & Program & Term \\\\\n\\hline\n")
40
+ count = 0
41
+ while count < nrows:
42
+ f.write(abbreviate_name_list(df.loc[count,"Students"])+": " +str2latex(df.loc[count,"Title"]) + " & " +df.loc[count,"Program Type"] + " & " +df.loc[count,"Term"] +" " +str(df.loc[count,"Calendar Year"])+"\\\\\n")
43
+ count += 1
44
+
45
+ f.write("\\end{tabularx}\n")
46
+
47
+ return(nrows)
48
+
49
+ if __name__ == "__main__":
50
+ parser = argparse.ArgumentParser(description='This script outputs undergraduate research data to a latex table that shows the last [YEARS] years')
51
+ parser.add_argument('-y', '--years',default="3",type=int,help='the number of years to output')
52
+ parser.add_argument('-a', '--append', action='store_const',const="a",default="w")
53
+ parser.add_argument('inputfile',help='the input excel file name')
54
+ parser.add_argument('outputfile',help='the output latex table name')
55
+ args = parser.parse_args()
56
+
57
+ f = open(args.outputfile, args.append) # file to write
58
+ nrows = UR2latex_far(f,args.years,args.inputfile)
59
+ f.close()
60
+
61
+ if (nrows == 0):
62
+ os.remove(args.outputfile)
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+
4
+ # writes latex files for creating bibliography
5
+ # Usually run from CV/Tables folder like this
6
+ # pubs2latex_far.py ../../Scholarship/scholarship.bib
7
+
8
+ import os, sys
9
+ import bibtexparser
10
+ from bibtexparser.bwriter import BibTexWriter
11
+ from bibtexparser.bibdatabase import BibDatabase
12
+ from bibtexparser.customization import convert_to_unicode
13
+ from bibtexparser.bparser import BibTexParser
14
+ from datetime import date
15
+ import argparse
16
+ import numpy as np
17
+
18
+ categories = ["journal","conference","patent","book","invited","refereed"]
19
+
20
+ def getyear(paperbibentry):
21
+ if "year" in paperbibentry.keys():
22
+ return(int(paperbibentry["year"]))
23
+ if "date" in paperbibentry.keys():
24
+ return(int(paperbibentry["date"][:4]))
25
+ return(0)
26
+
27
+ def bib2latex_far(f,years,inputfile):
28
+
29
+ nrecord = np.zeros(len(categories))
30
+
31
+ # homogenize_fields: Sanitize BibTeX field names, for example change `url` to `link` etc.
32
+ tbparser = BibTexParser(common_strings=True)
33
+ tbparser.homogenize_fields = False # no dice
34
+ tbparser.alt_dict['url'] = 'url' # this finally prevents change 'url' to 'link'
35
+
36
+ try:
37
+ bibtex_file = open(inputfile)
38
+ bibtex_str = bibtex_file.read()
39
+ bib_database = bibtexparser.loads(bibtex_str, tbparser)
40
+ bib_database.entries = sorted(bib_database.entries, key=lambda k: getyear(k), reverse=True)
41
+ except OSError:
42
+ print("Could not open/read file: " +inputfile)
43
+ return(nrecord)
44
+
45
+ if years > 0:
46
+ today = date.today()
47
+ year = today.year
48
+ begin_year = year - years
49
+ else:
50
+ begin_year = 0
51
+
52
+ for count,etype in enumerate(categories):
53
+ f[count].write("\\begin{enumerate}\n")
54
+
55
+ for icpbe, paperbibentry in enumerate(bib_database.entries):
56
+ year = getyear(paperbibentry)
57
+ if not(year >= begin_year):
58
+ continue
59
+
60
+ if "keywords" in paperbibentry.keys():
61
+ kword = str(paperbibentry["keywords"])
62
+ for count,etype in enumerate(categories):
63
+ if kword.find(etype) > -1:
64
+ f[count].write("\\item\n\\fullcite{"+paperbibentry["ID"]+"}\n")
65
+ nrecord[count] += 1
66
+
67
+ for count,etype in enumerate(categories):
68
+ f[count].write("\\end{enumerate}\n")
69
+
70
+ return(nrecord)
71
+
72
+ if __name__ == "__main__":
73
+ parser = argparse.ArgumentParser(description='This script outputs bibliographic latex citations to a latex table for (journals,refereed conferences,conferences,patents,books,invited talks) received in the last [YEARS] years')
74
+ parser.add_argument('-y', '--years',default="0",type=int,help='the number of years to output, default is all')
75
+ parser.add_argument('-a', '--append', action='store_const',const="a",default="w")
76
+ parser.add_argument('-e', '--ending',default="_far",type=str,help='ending to append to filenames')
77
+ parser.add_argument('inputfile',help='the input bibliography file name')
78
+ parser.add_argument('outputpath',help='the input bibliography file name')
79
+ args = parser.parse_args()
80
+
81
+ f = [open(args.outputpath +os.sep +etype+args.ending+".tex", args.append) for count,etype in enumerate(categories)]
82
+ necord = bib2latex_far(f,args.years,args.inputfile)
83
+
84
+ for count,etype in enumerate(categories):
85
+ f[count].close()
86
+ if (necord[count] == 0):
87
+ os.remove(args.outputpath +os.sep +etype+args.ending+".tex")