From f047bbc150f2630371051216b0837de35a779fb2 Mon Sep 17 00:00:00 2001 From: adin Date: Wed, 31 Aug 2016 00:09:27 -0300 Subject: [PATCH] First version of the academic style for moderncv --- README.md | 0 course.bbx | 42 ++++++ course.dbx | 44 ++++++ cv.bbx | 177 ++++++++++++++++++++++ cvmisc.bbx | 38 +++++ cvmisc.dbx | 38 +++++ example/cvdata.bib | 107 ++++++++++++++ example/example.tex | 108 ++++++++++++++ moderncvbodyxlii.sty | 50 +++++++ moderncvcolordarkgrey.sty | 23 +++ moderncvheadxlii.sty | 49 ++++++ moderncviconsfa-academic.sty | 44 ++++++ moderncvstyleacademic.sty | 278 +++++++++++++++++++++++++++++++++++ position.bbx | 52 +++++++ position.dbx | 51 +++++++ positions.bib | 40 +++++ project.bbx | 101 +++++++++++++ project.dbx | 53 +++++++ study.bbx | 52 +++++++ study.dbx | 50 +++++++ thesis.bbx | 75 ++++++++++ thesis.dbx | 47 ++++++ 22 files changed, 1519 insertions(+) create mode 100644 README.md create mode 100755 course.bbx create mode 100755 course.dbx create mode 100755 cv.bbx create mode 100755 cvmisc.bbx create mode 100755 cvmisc.dbx create mode 100755 example/cvdata.bib create mode 100755 example/example.tex create mode 100755 moderncvbodyxlii.sty create mode 100755 moderncvcolordarkgrey.sty create mode 100755 moderncvheadxlii.sty create mode 100755 moderncviconsfa-academic.sty create mode 100755 moderncvstyleacademic.sty create mode 100755 position.bbx create mode 100755 position.dbx create mode 100755 positions.bib create mode 100755 project.bbx create mode 100755 project.dbx create mode 100755 study.bbx create mode 100755 study.dbx create mode 100755 thesis.bbx create mode 100755 thesis.dbx diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/course.bbx b/course.bbx new file mode 100755 index 0000000..79463d8 --- /dev/null +++ b/course.bbx @@ -0,0 +1,42 @@ +\ProvidesFile{course.bbx}[biblatex bibliography style for courses in CV entries] + +\RequireBibliographyStyle{cv} + + +% Formats +\DeclareFieldFormat[course]{title}{\mkbibbold{#1}} +\DeclareFieldFormat[course]{organization}{\mkbibemph {#1}} + +% Driver + +\DeclareBibliographyDriver{course}{% + \usebibmacro{begentry}% + \usebibmacro{cvitem}{\usebibmacro{range-date}}{% + \printmlfield{title}% + \newunit% + \usebibmacro{organization}% + \newunit% + \usebibmacro{description}% + \ifmlfieldundef{description}{\addperiod}{}% + }% + \usebibmacro{cvfinentry}% +} + + +% Small syntactic sugar +\NewBibliographyString{courses} +\DefineBibliographyStrings{english}{% + courses = {Courses}, +} +\DefineBibliographyStrings{spanish}{% + courses = {Cursos}, +} + +\newcommand{\printcourses}[1][]{% + % Temporaly set the names + \letcs\refname{\abx@str @courses} + \letcs\bibname{\abx@str @courses} + \printbibliography[env=nobibenv, type=course, #1] + \letcs\refname{\abx@str @references} + \letcs\bibname{\abx@str @bibliography} +} \ No newline at end of file diff --git a/course.dbx b/course.dbx new file mode 100755 index 0000000..4d28684 --- /dev/null +++ b/course.dbx @@ -0,0 +1,44 @@ +\ProvidesFile{course.dbx} + +% Position data model +\DeclareDatamodelEntrytypes{course} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + organization,% + title,% + description,% + % + organization-es,% + title-es,% + description-es,% + % + organization-en,% + title-en,% + description-en% +} + +\DeclareDatamodelFields[type=field, datatype=datepart]{ + year,% + endyear,% + month,% + endmonth% +} + +\DeclareDatamodelFields[type=field,datatype=date]{ + date% +} + +\DeclareDatamodelEntryfields[course]{% + date,% + organization,% + title,% + description,% + % + organization-es,% + title-es,% + description-es,% + % + organization-en,% + title-en,% + description-en% +} diff --git a/cv.bbx b/cv.bbx new file mode 100755 index 0000000..14993f4 --- /dev/null +++ b/cv.bbx @@ -0,0 +1,177 @@ +\ProvidesFile{cv.bbx}[biblatex bibliography style for CV entries] + +\ifdef{\biblatexmultipledm@bibstyle} +{\RequireBibliographyStyle{\biblatexmultipledm@bibstyle}} +{\RequireBibliographyStyle{numeric-comp}} + +% Create short names for languages +\RequirePackage{pgfkeys} + + +\pgfkeys{ + /shortlan/.is family, /shortlan, + .unknown/.code = { + \expandafter\edef\csname @cv@short@#1\endcsname{\pgfkeyscurrentname} +% \expandafter\edef\expandafter\csname @cv@long@\pgfkeyscurrentname\endcsname{#1} + } +} +% handler to create the keys +\def\babelshortnames#1{\pgfkeys{/shortlan, #1}} +% directly obtain the short name +\def\shortlanguagename{\csname @cv@short@\languagename\endcsname} +%\def\longlanguagename[1]{\csname @cv@long@#1\endcsname} + +% declare default languages +\babelshortnames{en=english, es=spanish} + +% Bibliography strings +\NewBibliographyString{ + duration,years,year, + pi,ai,professor,researcher, + assisprofessor, assocprofessor, + present,presentabbr} + +\DefineBibliographyStrings{english}{% + duration = {time frame}, + years = {years}, + year = {year}, + pi = {Principal Investigator}, + ai = {Alternating Investigator}, + professor = {Professor}, + assisprofessor = {Assistant Professor}, + assocprofessor = {Associate Professor}, + researcher = {Researcher}, + % + present = {present}, + presentabbr = {pres\adddot}, +} +\DefineBibliographyStrings{spanish}{% + duration = {duraci\'on}, + years = {a\~nos}, + year = {a\~no}, + pi = {Investigador Principal}, + ai = {Investigador Alterno}, + professor = {Profesor}, + assisprofessor = {Profesor Asistente}, + assocprofessor = {Profesor Asociado}, + researcher = {Investigador}, + % + present = {presente}, + presentabbr = {pres\adddot}, +} + +% Extra definitions for languages +\newcommand*{\datesep}{~} +% taken from biblatex/lbx/.lbx +\protected\def\mkbibcvdateshort#1#2#3{% + \iffieldundef{#3} + {} + {\mkdatezeros{\thefield{#3}}% + \iffieldundef{#2}{}{\datesep}}% + \iffieldundef{#2} + {} + {\mkdatezeros{\thefield{#2}}% + \iffieldundef{#1}{}{\datesep}}% + \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\mkdatezeros{\thefield{#1}}}}% + +\DefineBibliographyExtras{english}{% +% \renewcommand*{\datesep}{\space}% +} +\DefineBibliographyExtras{spanish}{% + \renewcommand*{\bibrangedash}{--} + \renewcommand*{\bibdatedash}{--} +% \renewcommand*{\datesep}{\space} +} + +% Multi language macros +\newbibmacro*{langfield}[1]{% +\expandafter\iffieldundef\expandafter{#1-\shortlanguagename}{\printfield{#1}}{\expandafter\printfield\expandafter{#1-\shortlanguagename}}% +} + +\newcommand{\mlfield}[1]{% +\expandafter\iffieldundef\expandafter{#1-\shortlanguagename}{#1}{#1-\shortlanguagename}% +} + +\newcommand{\ifmlfieldundef}[3]{% +\iffieldundef{\mlfield{#1}}{#2}{#3}% +} + +\newcommand{\themlfield}[1]{\thefield{\mlfield{#1}}} + +\newcommand{\printmlfield}[1]{\printtext[#1]{\themlfield{#1}}} + +\DeclareFieldFormat{details}{\ifdetails#1\fi} + +% CV format macros +\newbibmacro{cvitem}[3][0.25em]{\cvitem{#2}{#3}\par\addvspace{#1}} + +% make finentry to do nothing +\newbibmacro*{cvfinentry}{} + +\DeclareFieldFormat{parens}{\mkbibparens{#1}} + + +% New environment withouth the list indent +\defbibenvironment{nobibenv}{% + \list{}{% + \setlength{\leftmargin}{\bibhang}% + \setlength{\itemindent}{-\leftmargin+10pt}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + }% +}% +{\endlist} +{\item} + + +% Common formats +\newbibmacro*{range-date}{% + \iffieldundef{year} + {} + {\printtext{% + % If the item is in the same year, + \iffieldsequal{year}{endyear}% + % compress + {\mkbibcvdateshort{}{month}{}}% + % else, print the date + {\mkbibcvdateshort{year}{month}{}}% + \iffieldundef{endyear}% + {}% + {% check if we have a single year + \ifthenelse{ \( + \iffieldsequal{year}{endyear} \and + \iffieldundef{month} + \) }% + {}% + {\bibdatedash}% + % if a range is given but blank, + \iffieldequalstr{endyear}{}% + % default to "present" + {\ifdetails% print long version (we may have room, unless there is no description) + \ifmlfieldundef{description}{\bibstring{presentabbr}}{\bibstring{present}}% + \else% print short version + \bibstring{presentabbr}% + \fi% + }% + % else, print a range + {\mkbibcvdateshort{endyear}{endmonth}{}}% + }% + }% + }% +} + + +\newbibmacro*{organization}{\printmlfield{organization}} + +\newbibmacro*{country}{\printmlfield{country}} + +\newbibmacro{description}{% + \printtext[details]{% + \ifmlfieldundef{description}% + {\clearfield{\mlfield{description}}}% + {% + \ifblank{\thefield{description}}{}{\newline{}\begin{minipage}[t]{\linewidth}\printmlfield{description}\end{minipage}}% + }% + }% +} + diff --git a/cvmisc.bbx b/cvmisc.bbx new file mode 100755 index 0000000..88a1335 --- /dev/null +++ b/cvmisc.bbx @@ -0,0 +1,38 @@ +\ProvidesFile{cvmisc.bbx}[biblatex bibliography style for cvmiscs in CV entries] + +\RequireBibliographyStyle{cv} + + +% Formats +\DeclareFieldFormat[cvmisc]{title}{#1} + +% Driver + +\DeclareBibliographyDriver{cvmisc}{% + \usebibmacro{begentry}% + \usebibmacro{cvitem}{\usebibmacro{range-date}}{% + \printmlfield{title}% + \newunit% + \usebibmacro{description}% + \ifmlfieldundef{description}{\addperiod}{}% + }% + \usebibmacro{cvfinentry}% +} + +% Small syntactic sugar +\NewBibliographyString{cvmiscs} +\DefineBibliographyStrings{english}{% + cvmiscs = {Miscelaneous}, +} +\DefineBibliographyStrings{spanish}{% + cvmiscs = {Miscelanea}, +} + +\newcommand{\printcvmiscs}[1][]{% + % Temporaly set the names + \letcs\refname{\abx@str @cvmiscs} + \letcs\bibname{\abx@str @cvmiscs} + \printbibliography[env=nobibenv, type=cvmisc, #1] + \letcs\refname{\abx@str @references} + \letcs\bibname{\abx@str @bibliography} +} \ No newline at end of file diff --git a/cvmisc.dbx b/cvmisc.dbx new file mode 100755 index 0000000..221ddba --- /dev/null +++ b/cvmisc.dbx @@ -0,0 +1,38 @@ +\ProvidesFile{cvmisc.dbx} + +% Position data model +\DeclareDatamodelEntrytypes{cvmisc} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + title,% + description,% + % + title-es,% + description-es,% + % + title-en,% + description-en% +} + +\DeclareDatamodelFields[type=field, datatype=datepart]{ + year,% + endyear,% + month,% + endmonth% +} + +\DeclareDatamodelFields[type=field,datatype=date]{ + date% +} + +\DeclareDatamodelEntryfields[cvmisc]{% + date,% + title,% + description,% + % + title-es,% + description-es,% + % + title-en,% + description-en% +} diff --git a/example/cvdata.bib b/example/cvdata.bib new file mode 100755 index 0000000..82ab407 --- /dev/null +++ b/example/cvdata.bib @@ -0,0 +1,107 @@ + +% Studies + +@Study{phd, + date={2000/2010}, + title-en = {Ph.D. in Foo}, + title-es = {Doctorado en Foo}, + organization-en={Univeristy of Bar}, + organization-es={Universidad de Bar}, + country = {Fakeland}, + description-es = {Hice descubrimientos novedosos sobre Bar.}, + description-en = {Did novel discoveries about Bar.}, + keywords = {degrees} +} + +@Study{tech-a, + date={1990/1995}, + title-en = {Deep studies on A+}, + title-es = {Estudios profundos de A+}, + organization={Kx Systems}, + country = {Canada}, + description-es = {Aprendí A+ estudiando con Arthur Whitney.}, + description-en = {Learned A+ by studing with Arthur Whitney.}, + keywords = {tech} +} + +% Positions + +@Position{res2010, + date={2010/}, + title = {researcher}, + organization-en={Univeristy of Bar}, + organization-es={Universidad de Bar}, + country = {Fakeland}, + Description-es = {Apoyaba como investigador en experimentos relacionados con dilataci\'on y contracci\'on espacio-temporal.}, + Description-en = {I work as researcher in experiments related to spatio-temporal dilations and contractions.} +} + +@Position{res1900, + date={1900/1920}, + title = {researcher}, + organization-en={Univeristy of Bar}, + organization-es={Universidad de Bar}, + country = {Fakeland}, + Description-es = {Apoyaba como investigador en experimentos relacionados con dilataci\'on y contracci\'on espacio-temporal.}, + Description-en = {I worked as researcher in experiments related to spatio-temporal dilations and contractions.} +} + +% Courses taught + +@Course{qf101, + date={2010/}, + title-es = {F\'isica Cu\'antica}, + title-en = {Quantum Physics}, + organization-en={Univeristy of Bar}, + organization-es={Universidad de Bar}, + Description-en = {Taught physics 101.}, + Description-es = {Ense\~n\'e a los principios b\'asicos de la f\'isica.} +} + +@Thesis{doe2010, + author = {John Doe}, + date={2010}, + title-en = {On time traveling and paradoxes}, + title-es = {Sobre viajes en el tiempo y paradojas}, + organization-en={Univeristy of Bar}, + organization-es={Universidad de Bar}, level = {doctor}, + note = {Co guided with myself.} +} + +% Projects + +@Project{g2050, + title = {Spatio-temporal dilations and contractions}, + author = {John Doe}, + Month = oct, + rol = {pi}, + funding = {TT Foundation}, + Year = {2050} +} + +@Project{g2015, + title = {Foundations for spatio-temporal dilations and contractions}, + author = {John Doe}, + Month = oct, + funding = {University of Bar}, + Year = {2015} +} + +% Articles + +@Article{doe2005, + title = {Can we time travel?}, + Author = {Doe, J.}, + Journal = {Universal Journal of Bar}, + Year = {2005}, + Month = feb +} + +% Memberships + +@cvmisc{mtt, + title-en={TT Member}, + title-es={Miembro TT}, + date={1920/}, + keywords = {membership} +} diff --git a/example/example.tex b/example/example.tex new file mode 100755 index 0000000..c5e99f1 --- /dev/null +++ b/example/example.tex @@ -0,0 +1,108 @@ +% !BIB program = biber +\documentclass[12pt,a4paper]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') + +\usepackage[utf8]{inputenc} +\usepackage[english, spanish.lcroman.tabla.noquoting.noshorthands]{babel} +% \usepackage[spanish.lcroman.tabla.noquoting.noshorthands]{babel} +\usepackage[spanish=mexican]{csquotes} + +% moderncv themes +\moderncvstyle{academic} % style options are 'casual' (default), 'classic', 'oldstyle' and 'banking' +\moderncvcolor{grey} % color options 'blue' (default), 'orange', 'green', 'red', 'purple', 'grey' and 'black' +%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name +%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page + + +% For paper portrait +\usepackage[misc]{ifsym} + +\newgeometry{margin=2.5cm} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% personal data +\firstname{John} +\familyname{Doe} +\title{Curriculum Vit\ae} % optional, remove / comment the line if not wanted + +\address{Fake Street 42}{}{Fakeland, FKL} + +\email{johndoe@fake.com} +\mobile{(+1) 234 5678 } % optional, remove / comment the line if not wanted +%\phone{+2~(345)~678~901} % optional, remove / comment the line if not wanted +%\fax{+3~(456)~789~012} % optional, remove / comment the line if not wanted + +\homepage{johndoe.com} % optional, remove / comment the line if not wanted +\social[scholar]{ABC123} +%\photo[64pt][0.4pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file +%\quote{Some quote} % optional, remove / comment the line if not wanted + + +\addbibresource{cvdata.bib} + +% If you want to make your name bold in the publications or other entries where you are an author +% Lastname Name Abbrev. +\boldname{Doe}{John}{J.} + +% We can set the details (by default is false) +\detailstrue + + +%---------------------------------------------------------------------------------- +% headers +%---------------------------------------------------------------------------------- +% We can define the headers in multiple languages and then using the macro +% These definitions can be inside the body too +\newmlcommand[english=Education, spanish=Educación]{\education} +\newmlcommand[english=Degrees, spanish={Grados Académicos}]{\degrees} +\newmlcommand[english=Technical, spanish={Estudios Técnicos}]{\technical} +\newmlcommand[english={Employment History}, spanish={Historial de Empleo}]{\employment} +\newmlcommand[english={Academic}, spanish={Académia}]{\academic} +\newmlcommand[english={Teaching Experience}, spanish={Experiencia Docente}]{\teaching} +\newmlcommand[english={Courses Taught}, spanish={Cursos Impartidos}]{\courses} +\newmlcommand[english={Guided Theses}, spanish={Tésis Guiadas}]{\theses} +\newmlcommand[english={Funding}, spanish={Proyectos de Investigación}]{\funding} +\newmlcommand[english={Grants}, spanish={Fondos de Investigación}]{\grants} +\newmlcommand[english={Publications}, spanish={Publicaciones}]{\publications} +\newmlcommand[english={Journals}, spanish={Revistas}]{\journals} +\newmlcommand[english={Other Appointments}, spanish={Otros Cargos}]{\appointments} +\newmlcommand[english={Memberships}, spanish={Membresias}]{\memberships} + +%---------------------------------------------------------------------------------- +% content +%---------------------------------------------------------------------------------- +\begin{document} +%\selectlanguage{spanish} +\selectlanguage{english} + +% Print the header +\makecvtitle + +\section{\education} +\printstudies[heading=subbibliography, title={\degrees}, keyword=degrees] + +\printstudies[heading=subbibliography, title={\technical}, keyword=tech] + +\section{\employment} +\printpositions[heading=subbibliography, title={\academic}] + +\section{\teaching} +\printcourses[heading=subbibliography, title={\courses}] + +\printtheses[heading=subbibliography, title={\theses}] + +\section{\funding} +% We can hook \newrefcontext to pass options to the individual print. +\newrefcontext[labelprefix=A] +\printprojects[heading=subbibliography, title={\grants}, resetnumbers=true] +% However note that we need to reset the context +% Test by commenting the next macro and see what happens to the Publications entries +\newrefcontext[] + +\section{\publications} +% Notice that you can apply other parameters, like resetnumbers to the printblibliography and other statements +\printbibliography[type=article, heading=subbibliography,title={\journals}, resetnumbers=true] + +\section{\appointments} +\printcvmiscs[heading=subbibliography, title={\memberships}, keyword=membership] + +\end{document} diff --git a/moderncvbodyxlii.sty b/moderncvbodyxlii.sty new file mode 100755 index 0000000..3467f98 --- /dev/null +++ b/moderncvbodyxlii.sty @@ -0,0 +1,50 @@ +%% start of file `moderncvbodyxlii.sty'. + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvbodyxlii}[2016/08/28 v2.0.0 modern curriculum vitae and letter body variant: 42] + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +\moderncvbody{1} + + +%------------------------------------------------------------------------------- +% overall body definition +%------------------------------------------------------------------------------- +% fonts +% fix style for sections +\renewcommand*{\sectionfont}{\Large\mdseries\upshape\bfseries} +\renewcommand*{\subsectionfont}{\large\mdseries\upshape\bfseries} + + +%------------------------------------------------------------------------------- +% resume body definition +%------------------------------------------------------------------------------- +% lengths +% used by \cvitem (and all children command) +% if you want to change the width of the column with the dates +\setlength{\hintscolumnwidth}{0.18\textwidth} + +% for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks... +%\setlength{\makecvtitlenamewidth}{10cm} + + +%------------------------------------------------------------------------------- +% letter style definition +%------------------------------------------------------------------------------- +% remove identation to the closure of the letter +\patchcmd{\makeletterclosing}% +{\vfill}% +{\vfill\noindent}% +{}{} + + +\endinput + + +%% end of file `moderncvbodyxlii.sty'. diff --git a/moderncvcolordarkgrey.sty b/moderncvcolordarkgrey.sty new file mode 100755 index 0000000..0477d10 --- /dev/null +++ b/moderncvcolordarkgrey.sty @@ -0,0 +1,23 @@ +%% start of file `moderncvcolordarkgrey.sty'. +%% Adin Ramirez +% + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvcolordarkgrey}[2016/08/28 v1.0.0 modern curriculum vitae and letter color scheme: darkgrey] + + +%------------------------------------------------------------------------------- +% color scheme definition +%------------------------------------------------------------------------------- +\definecolor{color0}{rgb}{0,0,0}% black +\colorlet{color1}{black!75}% darker grey (adornos y demás) +\colorlet{color2}{black!75}% darker grey + + +\endinput + + +%% end of file `moderncvcolordarkgrey.sty'. diff --git a/moderncvheadxlii.sty b/moderncvheadxlii.sty new file mode 100755 index 0000000..a20d6da --- /dev/null +++ b/moderncvheadxlii.sty @@ -0,0 +1,49 @@ +%% start of file `moderncvheadxlii.sty'. + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvheadxlii}[2016/08/28 v1.0.0 modern curriculum vitae and letter header variant: 42] + +% head section alignment options: "left" (default) or "right" +\@initializecommand{\moderncvstyleheadoptions}{} +\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} +\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{left} +\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +\moderncvhead[\moderncvstyleheadoptions]{1} +%------------------------------------------------------------------------------- +% resume head definition +%------------------------------------------------------------------------------- +% fix space between names +\newcommand*{\mynamestyle}[2]{{\namefont\textcolor{color0!70}{#1}\\[5pt]\textcolor{color0}{#2}}} +\patchcmd{\makecvhead}% +{\namestyle{\@firstname\ \@lastname}}% +{\mynamestyle{\@firstname}{\@lastname}}% +{}{} + + +%------------------------------------------------------------------------------- +% letter head definition +%------------------------------------------------------------------------------- +% justify letter +\patchcmd{\makelettertitle}% +{\raggedright \@opening}% +{\@opening}% +{}{}% + + + + +\endinput + + +%% end of file `moderncvheadxlii.sty'. diff --git a/moderncviconsfa-academic.sty b/moderncviconsfa-academic.sty new file mode 100755 index 0000000..ab8cc0f --- /dev/null +++ b/moderncviconsfa-academic.sty @@ -0,0 +1,44 @@ +%% start of file `moderncviconsfa-academic.sty'. +%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncviconsfa-academic}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: fa-academic] + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +% Font Awesome font +\RequirePackage{fontawesome} + + +%------------------------------------------------------------------------------- +% symbols definition +%------------------------------------------------------------------------------- +\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\tiny\faCircleO}} +%\renewcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}} % no change from default in moderncv.cls +%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls +%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls + +\renewcommand*{\addresssymbol} {} +\renewcommand*{\mobilephonesymbol} {{\Large\faMobile}~} +\renewcommand*{\fixedphonesymbol} {\faPhone~} +\renewcommand*{\faxphonesymbol} {{\small\faFax}~} % alternative: \faPrint +\renewcommand*{\emailsymbol} {{\small\faEnvelopeO}~} % alternative: \faInbox +\renewcommand*{\homepagesymbol} {{\small\faGlobe}~} % alternative: \faHome +\renewcommand*{\linkedinsocialsymbol}{{\small\faLinkedin}~} % alternative: \faLinkedinSquare +\renewcommand*{\twittersocialsymbol} {{\small\faTwitter}~} % alternative: \faTwitterSquare +\renewcommand*{\githubsocialsymbol} {{\small\faGithub}~} % alternative: \faGithubSquare, \faGithubSquare +\newcommand*{\scholarsocialsymbol} {{\small\faGraduationCap}~} + +\endinput + + +%% end of file `moderncviconsfa-academic.sty'. diff --git a/moderncvstyleacademic.sty b/moderncvstyleacademic.sty new file mode 100755 index 0000000..692dfe3 --- /dev/null +++ b/moderncvstyleacademic.sty @@ -0,0 +1,278 @@ +%% start of file `moderncvstyleacademic.sty'. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvstyleacademic}[2016/08/28 v1.0.0 modern curriculum vitae and letter style scheme: academic] + +% head section alignment options: "left" (default) or "right" +\@initializecommand{\moderncvstyleheadoptions}{} +\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} +\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{left} +\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package + +%------------------------------------------------------------------------------- +% fonts & icons +%------------------------------------------------------------------------------- +% Latin Modern fonts +%\ifxetexorluatex +% \setmainfont{Latin Modern Roman} +% \setsansfont{Latin Modern Sans} +% \setmathfont{Latin Modern Math} +%\else + \IfFileExists{lmodern.sty}% + {\RequirePackage{lmodern}}% + {} +%\fi + +% symbols +\moderncvicons{fa-academic} + + +%------------------------------------------------------------------------------- +% header, body & footer +%------------------------------------------------------------------------------- +\moderncvhead[\moderncvstyleheadoptions]{42} +\moderncvbody{42} + + +%------------------------------------------------------------------------------- +% Definitions +%------------------------------------------------------------------------------- + +%switches for information +\newif\ifdetails\detailsfalse +\RequirePackage{etoolbox} +\RequirePackage{enumitem} +% adjust the page margins +\RequirePackage[margin=2cm]{geometry} +\RequirePackage{url} + +%------------------------------------------------------------------------------- +% Patch the rest of moderncv +%------------------------------------------------------------------------------- + +% fix identation for letters +\setlength{\parindent}{10\p@} + + +% patch \cventry +% http://tex.stackexchange.com/a/247329/7561 +\renewcommand*{\cventry}[7][.25em]{% + \cvitem[#1]{#2}{% + {\bfseries#3}% + \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}% + \ifthenelse{\equal{#5}{}}{}{, #5}% + \ifthenelse{\equal{#6}{}}{}{, #6}% + .\strut% + \ifdetails% + \ifblank{#7}{}{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}% + \fi% + } +} + + +% use for special titles +\newcommand{\makespecialtitle}[1]{\title{#1}\makecvtitle} +% use for emails in the body, +\newcommand{\mail}[1]{\ttfamily\href{mailto:#1}{#1}} + +\RenewDocumentCommand{\social}{O{}O{}m}{% + \ifthenelse{\equal{#2}{}}% + {% + \ifthenelse{\equal{#1}{linkedin}}{\collectionadd[linkedin]{socials}{\protect\httplink[#3]{www.linkedin.com/in/#3}}}{}% + \ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httplink[#3]{www.twitter.com/#3}}} {}% + \ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httplink[#3]{www.github.com/#3}}} {}% + \ifthenelse{\equal{#1}{scholar}} {\collectionadd[scholar]{socials} {\protect\httplink[Google Scholar]{http://scholar.google.com/citations?user=#3}}} {}% + } + {\collectionadd[#1]{socials}{\protect\httplink[#3]{#2}}}} + + +%------------------------------------------------------------------------------- +% Multilanguage support +%------------------------------------------------------------------------------- +\RequirePackage{pgfkeys} +% http://tex.stackexchange.com/a/42791/7561 +\newcommand{\newlcommand}[1]{% + \newcommand#1{% + \@ifundefined{\string#1\languagename} + {``No def of \texttt{\string#1} for \languagename''} + {\@nameuse{\string#1\languagename}}% + }% +} +\newcommand{\addtolanguagecommand}[3]{% + \@namedef{\string#1#2}{#3}} + +\pgfkeys{ + /mlcommands/.is family, /mlcommands, + command/.code={\def\langcmd{#1}}, + .unknown/.code = {% + \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\addtolanguagecommand\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter + {\expandafter\expandafter\expandafter\langcmd\expandafter\expandafter\expandafter}% + \expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentname\expandafter}\expandafter + {#1} + }% +} + +\newcommand{\newmlcommand}[2][]{% + \newlcommand#2% + \pgfkeys{/mlcommands, command=#2, #1}% +} + +% How to use +%\newlanguagecommand{\uno} +%\addtolanguagecommand{\uno}{english}{one} +%\addtolanguagecommand{\uno}{french}{une} +% or +% \newmlcommand[english=one, french=une]{\uno} + +% Create long names for languages, this reuses the code from cv.bbx +% fixme: merge both definitions (here and cv.bbx) +\pgfkeys{ + /shortlan/.is family, /shortlan, + .unknown/.code = { +% \expandafter\edef\csname @cv@short@#1\endcsname{\pgfkeyscurrentname} + \expandafter\expandafter\expandafter\edef\expandafter\csname @cv@long@\pgfkeyscurrentname\endcsname{#1} + } +} +% handler to create the keys +\def\babelshortnames#1{\pgfkeys{/shortlan, #1}} +% directly obtain the short name +%\def\shortlanguagename{\csname @cv@short@\languagename\endcsname} +\newcommand{\longlanguagename}[1]{\csname @cv@long@#1\endcsname} + +% declare default languages +\babelshortnames{en=english, es=spanish} + +%------------------------------------------------------------------------------- +% Academic drivers and sorting to use with this style +%------------------------------------------------------------------------------- + +\RequirePackage[tools={study, position, course, thesis, project, cvmisc}, bibstyle=numeric-comp]{biblatex-multiple-dm} +% bibliography with mutiple entries +\RequirePackage[backend=biber, citestyle=numeric-comp, bibstyle=multiple-dm, sorting=ymdtn, maxbibnames=99, defernumbers=true, firstinits=true, sortcites]{biblatex} + +% Patch endyears that are not declared +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=year] + \step[fieldset=endyear, origfieldval] + } + } +} + +% Custom sort to include month and endyear +\DeclareSortingScheme{ymdtn}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort[direction=descending]{ + \field{sortyear} + \field{endyear} + \literal{9999} + } + \sort[direction=descending]{ + \field{sortyear} +% \field{endyear} + \field{year} + \literal{9999} + } + \sort[direction=descending]{ + \field[padside=left,padwidth=2,padchar=0]{month} + \literal{99} + } + \sort[direction=descending]{ + \field[padside=left,padwidth=2,padchar=0]{day} + \literal{99} + } + \sort{ + \field{sorttitle} + } + \sort[direction=descending]{ + \field[padside=left,padwidth=4,padchar=0]{volume} + \literal{9999} + } + \sort{ + \name{sortname} + \name{author} + \name{editor} + \name{translator} + \field{sorttitle} + \field{title} + } +} + +% patch for bold name in bibliography +\def\makenamesetup{% + \def\bibnamedelima{~}% + \def\bibnamedelimb{ }% + \def\bibnamedelimc{ }% + \def\bibnamedelimd{ }% + \def\bibnamedelimi{ }% + \def\bibinitperiod{.}% + \def\bibinitdelim{~}% + \def\bibinithyphendelim{.-}} +\newcommand*{\makename}[2]{\begingroup\makenamesetup\xdef#1{#2}\endgroup} + +\renewcommand{\mkbibnamegiven}[1]{% + \makename{\currname}{#1}% + \makename{\findname}{\bld@firstname}% + \makename{\findinit}{\bld@firstinit}% + \ifboolexpr{ test {\ifdefequal{\currname}{\findname}}% + or test {\ifdefequal{\currname}{\findinit}} }% + {\mkbibbold{#1}}{#1}% +} + +\renewcommand{\mkbibnamefamily}[1]{% + \makename{\currname}{#1}% + \makename{\findname}{\bld@lastname}% + \ifboolexpr{ test {\ifdefequal{\currname}{\findname}} }% + {\mkbibbold{#1}}{#1}% +} + +\newcommand*{\boldname}[3]{% + \def\bld@lastname{#1}% + \def\bld@firstname{#2}% + \def\bld@firstinit{#3}} + +\boldname{}{}{} + +% We need to tell biblatex to check for all entries +\nocite{*} + + +% Patch the bibliography + +% lets remove the brackets +\DeclareFieldFormat{labelnumberwidth}{#1.} + +% http://tex.stackexchange.com/a/123809/7561 +\defbibenvironment{bibliography} +{\list + {\printtext[labelnumberwidth]{% label format from numeric.bbx + \printfield{labelprefix}% + \printfield{labelnumber}}} + {\setlength{\topsep}{0pt}% layout parameters from moderncvstyleclassic.sty + \setlength{\labelwidth}{\hintscolumnwidth}% + \setlength{\labelsep}{\separatorcolumnwidth}% + \leftmargin\labelwidth% + \advance\leftmargin10pt% + \advance\leftmargin\labelsep}% + \sloppy\clubpenalty4000\widowpenalty4000} +{\endlist} +{\item} + + +\endinput + + +%% end of file `moderncvstyleacademic.sty'. diff --git a/position.bbx b/position.bbx new file mode 100755 index 0000000..7f2475a --- /dev/null +++ b/position.bbx @@ -0,0 +1,52 @@ +\ProvidesFile{position.bbx}[biblatex bibliography style for positions in CV entries] + +\RequireBibliographyStyle{cv} + + +% Formats +\DeclareFieldFormat[position]{title}{#1} +\DeclareFieldFormat[position]{bold}{\mkbibbold{#1}} +\DeclareFieldFormat[position]{organization}{{#1}} + +\newbibmacro{postitle}{% + \printtext[bold]{% + \ifbibxstring{\themlfield{title}}% + {\bibxstring{\themlfield{title}}}% + {\printmlfield{title}} + }% +} + +% Driver + +\DeclareBibliographyDriver{position}{% + \usebibmacro{begentry}% + \usebibmacro{cvitem}{\usebibmacro{range-date}}{% + \usebibmacro{postitle}% + \newunit% + \usebibmacro{organization}% + \setunit*{\addcomma\space}% + \usebibmacro{country}% + \newunit% + \usebibmacro{description}% + \ifmlfieldundef{description}{\addperiod}{}% + }% + \usebibmacro{cvfinentry}% +} + +% Small syntactic sugar +\NewBibliographyString{positions} +\DefineBibliographyStrings{english}{% + positions = {Positions}, +} +\DefineBibliographyStrings{spanish}{% + positions = {Posiciones}, +} + +\newcommand{\printpositions}[1][]{% + % Temporaly set the names + \letcs\refname{\abx@str @positions} + \letcs\bibname{\abx@str @positions} + \printbibliography[env=nobibenv, type=position, #1] + \letcs\refname{\abx@str @references} + \letcs\bibname{\abx@str @bibliography} +} \ No newline at end of file diff --git a/position.dbx b/position.dbx new file mode 100755 index 0000000..82c3cec --- /dev/null +++ b/position.dbx @@ -0,0 +1,51 @@ +\ProvidesFile{position.dbx} + +% Position data model +\DeclareDatamodelEntrytypes{position} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + organization,% + title,% + country,% + description,% + % + organization-es,% + title-es,% + country-es,% + description-es,% + % + organization-en,% + title-en,% + country-en,% + description-en% +} + +\DeclareDatamodelFields[type=field, datatype=datepart]{ + year,% + endyear,% + month,% + endmonth% +} + + +\DeclareDatamodelFields[type=field,datatype=date]{ + date% +} + +\DeclareDatamodelEntryfields[position]{% + date,% + organization,% + title,% + country,% + description,% + % + organization-es,% + title-es,% + country-es,% + description-es,% + % + organization-en,% + title-en,% + country-en,% + description-en% +} diff --git a/positions.bib b/positions.bib new file mode 100755 index 0000000..0790d3b --- /dev/null +++ b/positions.bib @@ -0,0 +1,40 @@ + + +@Position{khu2009, + date={2009/2013}, + title = {researcher}, + organization-en={Image Processing Lab, Kyung Hee University}, + organization-es={Laboratorio de Procesamiento de Imágenes, Kyung Hee University}, + country = {South Korea}, + Description-es = {Realicé investigación independiente, y colaboré con otros investigadores y estudiantes en el laboratorio. Simultáneamente, estuve a cargo de los servidores del laboratorio y del desarrollo de soluciones para mejorar la productividad de la investigación de nuestro equipo. Además, yo fui el líder del laboratorio, guié, supervisé, y ayudé a otros a alcanzar sus metas así como las del grupo de investigación.}, + Description-en = {I did independent research, and collaborated with other researchers and students at the laboratory. Simultaneously, I was in charge of our servers and developed solutions to boost the research productivity of our team. Moreover, I was a leader in the laboratory and I guided, supervised, and helped others to achieve their goals as well as the goals of our research group.} +} + +@Position{udp2013, + date ={2013-10/2013-12}, + Title = {Some new strange pos}, + Organization = {Universidad Diego Portales}, + Country = {Chile}, + Description-es = {Soy profesor asistente e investigador en la Escuela de Informática y Telecomunicaciones. Me dedico a dictar cursos del área de informática, y de mi área de investigación: Visión por Computador y Reconocimiento de Patrones. He dictado los cursos de Programación, Programación Avanzada, Proyectos en TIC's 1, y Reconocimiento de Patrones. Además soy el investigador responsable de un proyecto FONDECYT de Iniciación.}, + Description-en = {I'm an assistant professor and researcher at Universidad Diego Portales. I work on pattern recognition, computer vision and image processing topics.}, +} + +@Position{khu2010, + date={2009/2017}, + title = {researcher}, + organization={Image Processing Lab, Kyung Hee University}, + Description = {Default text in one language only. This will be at least two sentences long. Or not.} +} + +@Position{khu2011, + date={2009/}, + title = {researcher}, + organization={Image Processing Lab, Kyung Hee University}, + Description = {Default text in one.} +} + +@Position{khu2015, + date={2008/2014}, + title = {researcher}, + country={No-org-1landia} +} diff --git a/project.bbx b/project.bbx new file mode 100755 index 0000000..9d77f4f --- /dev/null +++ b/project.bbx @@ -0,0 +1,101 @@ +\ProvidesFile{project.bbx}[biblatex bibliography style for projects in CV entries] + +\RequireBibliographyStyle{cv} + +\ifdef{\biblatexmultipledm@bibstyle} +{\RequireBibliographyStyle{\biblatexmultipledm@bibstyle}} +{\RequireBibliographyStyle{numeric-comp}} + +\DeclareFieldFormat[project]{period}{% + \mkbibparens{% + % convert period into dimension to make float comparisons + \newdimen\dummyDim% + \dummyDim = #1 pt% + \bibstring{duration}\addcolon\addspace #1\addnbspace% + \ifdim\dummyDim > 1pt% + \bibstring{years}% + \else% + \bibstring{year}% + \fi% + } +} + +\DeclareListFormat[project]{number}{% + \ifnumequal{\value{listcount}}{1}{% + \ifnumgreater{\value{liststop}}{1}% + {Nos.}{No.}% + }{} + \usebibmacro{list:delim}{#1}% + #1\isdot + \usebibmacro{list:andothers}% +} + +% Bibliography macros +\newbibmacro{rol}{% + \ifmlfieldundef{rol}% + {}% + {% + \printtext[]{% + \ifbibxstring{\themlfield{rol}}% + {\bibxstring{\themlfield{rol}}}% + {\printmlfield{rol}}% + }% + }% +} + +\newbibmacro*{funding-project}{% + \ifmlfieldundef{funding}% + {}% + {\printmlfield{funding}}% + \setunit*{\space}% + \iflistundef{number}% + {}% + {% + \printlist[number]{number}% + }% +} + +\newbibmacro*{period}{% + \iffieldundef{period}% + {}% + {\printmlfield{period}}% +} + +\newbibmacro*{projdate}{% + \mkbibdatelong{year}{month}{} +} + +% New bibliography drivers, using the required order of fields. These +% are mainly copied from standard.bbx then modified. +\DeclareBibliographyDriver{project}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{rol}% + \newunit% + \printmlfield{title}% + \newunit% + \usebibmacro{funding-project}% + \setunit*{\addspace}% + \usebibmacro{period}% + \newunit% + \usebibmacro{projdate}% + \usebibmacro{finentry}% +} + +% Small syntactic sugar +\NewBibliographyString{projects} +\DefineBibliographyStrings{english}{% + projects = {Projects}, +} +\DefineBibliographyStrings{spanish}{% + projects = {Proyectos}, +} + +\newcommand{\printprojects}[1][]{% + % Temporaly set the names + \letcs\refname{\abx@str @projects} + \letcs\bibname{\abx@str @projects} + \printbibliography[type=project, resetnumbers=true, #1] + \letcs\refname{\abx@str @references} + \letcs\bibname{\abx@str @bibliography} +} \ No newline at end of file diff --git a/project.dbx b/project.dbx new file mode 100755 index 0000000..e507e67 --- /dev/null +++ b/project.dbx @@ -0,0 +1,53 @@ +\ProvidesFile{project.dbx} + +% Project data model +\DeclareDatamodelEntrytypes{project} + +\DeclareDatamodelFields[type=field,datatype=literal]{ + funding, + rol, + % + funding-en, + rol-en, + % + funding-es,% + rol-es,% + period% +} + +\DeclareDatamodelFields[type=list, datatype=literal]{number} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + title, + title-es, + title-en% +} + +\DeclareDatamodelFields[type=field, datatype=datepart]{ + year,% + endyear,% + month,% + endmonth% +} + +\DeclareDatamodelEntryfields[type=field, datatype=date, label=true]{date} + +\DeclareDatamodelEntryfields[project]{ + number, + title, + funding, + rol, + % + title-en + funding-en, + rol-en, + % + title-es, + funding-es, + rol-es, + % + number, + period, + month, + year% +} \ No newline at end of file diff --git a/study.bbx b/study.bbx new file mode 100755 index 0000000..96fbd9c --- /dev/null +++ b/study.bbx @@ -0,0 +1,52 @@ +\ProvidesFile{study.bbx}[biblatex bibliography style for studies in CV entries] + +\RequireBibliographyStyle{cv} + + +% Formats +\DeclareFieldFormat[study]{title}{#1} +\DeclareFieldFormat[study]{bold}{\mkbibbold{#1}} +\DeclareFieldFormat[study]{organization}{{#1}} + +\newbibmacro{stdtitle}{% + \printtext[bold]{% + \ifbibxstring{\themlfield{title}}% + {\bibxstring{\themlfield{title}}}% + {\printmlfield{title}} + }% +} + +% Driver + +\DeclareBibliographyDriver{study}{% + \usebibmacro{begentry}% + \usebibmacro{cvitem}{\usebibmacro{range-date}}{% + \usebibmacro{stdtitle}% + \newunit% + \usebibmacro{organization}% + \setunit*{\addcomma\space}% + \usebibmacro{country}% + \newunit% + \usebibmacro{description}% + \ifmlfieldundef{description}{\addperiod}{}% + }% + \usebibmacro{cvfinentry}% +} + +% Small syntactic sugar +\NewBibliographyString{studies} +\DefineBibliographyStrings{english}{% + studies = {Education}, +} +\DefineBibliographyStrings{spanish}{% + studies = {Educaci\'on}, +} + +\newcommand{\printstudies}[1][]{% + % Temporaly set the names + \letcs\refname{\abx@str @studies} + \letcs\bibname{\abx@str @studies} + \printbibliography[env=nobibenv, type=study, #1] + \letcs\refname{\abx@str @references} + \letcs\bibname{\abx@str @bibliography} +} \ No newline at end of file diff --git a/study.dbx b/study.dbx new file mode 100755 index 0000000..1fa55c3 --- /dev/null +++ b/study.dbx @@ -0,0 +1,50 @@ +\ProvidesFile{study.dbx} + +% Position data model +\DeclareDatamodelEntrytypes{study} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + organization,% + title,% + country,% + description,% + % + organization-es,% + title-es,% + country-es,% + description-es,% + % + organization-en,% + title-en,% + country-en,% + description-en% +} + +\DeclareDatamodelFields[type=field, datatype=datepart]{ + year,% + endyear,% + month,% + endmonth% +} + +\DeclareDatamodelFields[type=field,datatype=date]{ + date% +} + +\DeclareDatamodelEntryfields[study]{% + date,% + organization,% + title,% + country,% + description,% + % + organization-es,% + title-es,% + country-es,% + description-es,% + % + organization-en,% + title-en,% + country-en,% + description-en% +} diff --git a/thesis.bbx b/thesis.bbx new file mode 100755 index 0000000..f9af12d --- /dev/null +++ b/thesis.bbx @@ -0,0 +1,75 @@ +\ProvidesFile{thesis.bbx}[biblatex bibliography style for thesiss in CV entries] + +\RequireBibliographyStyle{cv} + + +% Formats +\DeclareFieldFormat[thesis]{organization}{#1} + +\newbibmacro{level}{% + \ifmlfieldundef{level}% + {}% + {% + \printtext{% + \bibstring{degree} + \ifbibxstring{\themlfield{level}}% + {\bibxstring{\themlfield{level}}}% + {\printmlfield{level}}% + }% + } +} + +\newbibmacro{note}{% + \ifmlfieldundef{note}% + {}% + {% + \printtext[parens]{% + \mkbibemph{\printmlfield{note}}% + }% + } +} + +% Driver +\DeclareBibliographyDriver{thesis}{% + \usebibmacro{begentry}% + \usebibmacro{cvitem}{\usebibmacro{range-date}}{% + \usebibmacro{author}% + \newunit + \mkbibemph{\printmlfield{title}}% + \newunit% + \usebibmacro{organization}% + \newunit% + \usebibmacro{level}% + \newunitpunct% + \usebibmacro{note}% + \ifmlfieldundef{note}{\addperiod}{} + }% + \usebibmacro{cvfinentry}% +} + + +% Small syntactic sugar +\NewBibliographyString{theses, undergrad, master, doctor, degree} +\DefineBibliographyStrings{english}{% + theses = {Theses}, + degree = {Degree}, + undergrad = {Undergraduate}, + master = {Master}, + doctor = {Ph\adddot D\adddot}, +} +\DefineBibliographyStrings{spanish}{% + theses = {Tesis}, + degree = {Grado}, + undergrad = {Licenciatura}, + master = {Maestr\'ia}, + doctor = {Doctoral}, +} + +\newcommand{\printtheses}[1][]{% + % Temporaly set the names + \letcs\refname{\abx@str @theses} + \letcs\bibname{\abx@str @theses} + \printbibliography[env=nobibenv, type=thesis, #1] + \letcs\refname{\abx@str @references} + \letcs\bibname{\abx@str @bibliography} +} \ No newline at end of file diff --git a/thesis.dbx b/thesis.dbx new file mode 100755 index 0000000..e773aef --- /dev/null +++ b/thesis.dbx @@ -0,0 +1,47 @@ +\ProvidesFile{thesis.dbx} + +% Position data model +\DeclareDatamodelEntrytypes{thesis} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + organization,% + title,% + note,% + level,% + % + organization-es,% + title-es,% + note-es,% + % + organization-en,% + title-en,% + note-en% +} + +\DeclareDatamodelFields[type=field, datatype=datepart]{ + year,% + endyear,% + month,% + endmonth% +} + +\DeclareDatamodelFields[type=field,datatype=date]{ + date% +} + +\DeclareDatamodelEntryfields[thesis]{% + author,% + date,% + organization,% + title,% + note,% + level,% + % + organization-es,% + title-es,% + note-es,% + % + organization-en,% + title-en,% + note-en% +} -- 2.50.1