This commit is contained in:
Andreas Gammelgaard Damsbo 2024-03-13 15:33:20 +01:00
parent 1dc0d357f8
commit c3267e5c54
16 changed files with 1108 additions and 175 deletions

5
.gitignore vendored
View File

@ -6,4 +6,7 @@
.Rprofile
*.bib
*.bib
*.jpg
*JKM*
*.ttf

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 Carmine Spagnuolo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,4 +1,4 @@
orcid_pubs <- function(orcid, path="publications.bib"){
orcid_pubs <- function(orcid, path="bib-files/publications.bib"){
dois <- Reduce(c,lapply(orcid,function(o){
works <- rorcid::orcid_works(orcid)[[1]]
@ -13,5 +13,5 @@ orcid_pubs <- function(orcid, path="publications.bib"){
})
)) |> na.omit() |> unique()
}))
RefManageR::GetBibEntryWithDOI(dois) |> rbibutils::writeBib(path)}

756
awesome-cv-old.cls Normal file
View File

@ -0,0 +1,756 @@
%% Start of file `awesome-cv.cls'.
% Awesome CV Class File
%
% This class has been downloaded from:
% https://github.com/posquit0/Awesome-CV
%
% Author:
% Claud D. Park <posquit0.bj@gmail.com>
% http://www.posquit0.com
%
% Notes:
% 1) This class file defines the structure and layout of the template file (cv.tex, resume.tex).
% 2) It has been written in such a way that under most circumstances you
% should not need to edit it.
%
% Class license:
% LPPL v1.3c (http://www.latex-project.org/lppl)
%
%-------------------------------------------------------------------------------
% Identification
%-------------------------------------------------------------------------------
\ProvidesClass{awesome-cv}[2017/02/05 v1.6.1 Awesome Curriculum Vitae Class]
\NeedsTeXFormat{LaTeX2e}
%-------------------------------------------------------------------------------
% Class options
%
% (need to be done before the external package loading, for example because
% we need \paperwidth, \paperheight and \@ptsize to be defined before loading
% geometry and fancyhdr)
%-------------------------------------------------------------------------------
% Options for draft or final
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
% Inherit options of article
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{article}
}
\ProcessOptions\relax
\LoadClass{article}
%-------------------------------------------------------------------------------
% 3rd party packages
%-------------------------------------------------------------------------------
% Needed to make fixed length table
\RequirePackage{array}
% Needed to handle list environment
\RequirePackage{enumitem}
% Needed to handle text alignment
\RequirePackage{ragged2e}
% Needed to configure page layout
\RequirePackage{geometry}
% Needed to make header & footer effeciently
\RequirePackage{fancyhdr}
% Needed to manage colors
\RequirePackage{xcolor}
% Needed to use \ifxetex-\else-\fi statement
\RequirePackage{ifxetex}
% Needed to use \if-\then-\else statement
\RequirePackage{xifthen}
% Needed to use a toolbox of programming tools
\RequirePackage{etoolbox}
% Needed to change line spacing in specific environment
\RequirePackage{setspace}
% Needed to manage fonts
\RequirePackage[quiet]{fontspec}
% To support LaTeX quoting style
\defaultfontfeatures{Ligatures=TeX}
% Needed to manage math fonts
\RequirePackage{unicode-math}
% Needed to use icons from font-awesome
% (https://github.com/posquit0/latex-fontawesome)
\defaultfontfeatures{Extension = .otf}
\RequirePackage{fontawesome}
% Add support of academia icons
\usepackage{academicons}
\RequirePackage[default,opentype]{sourcesanspro}
% Needed for the photo ID
\RequirePackage[skins]{tcolorbox}
% Needed to deal a paragraphs
\RequirePackage{parskip}
% Needed to deal hyperlink
\RequirePackage[hidelinks,unicode]{hyperref}
\hypersetup{%
pdftitle={},
pdfauthor={},
pdfsubject={},
pdfkeywords={}
}
%-------------------------------------------------------------------------------
% Configuration for directory locations
%-------------------------------------------------------------------------------
% Configure a directory location for fonts(default: 'fonts/')
\newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}}
\fontdir
%-------------------------------------------------------------------------------
% Configuration for layout
%-------------------------------------------------------------------------------
%% Page Layout
% Configure page margins with geometry
\geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm}
%% Header & Footer
% Set offset to each header and footer
\fancyhfoffset{0em}
% Remove head rule
\renewcommand{\headrulewidth}{0pt}
% Clear all header & footer fields
\fancyhf{}
% Enable if you want to make header or footer using fancyhdr
\pagestyle{fancy}
%-------------------------------------------------------------------------------
% Configuration for colors
%-------------------------------------------------------------------------------
% Gray-scale colors
\definecolor{white}{HTML}{FFFFFF}
\definecolor{black}{HTML}{000000}
\definecolor{darkgray}{HTML}{333333}
\definecolor{gray}{HTML}{5D5D5D}
\definecolor{lightgray}{HTML}{999999}
% Basic colors
\definecolor{green}{HTML}{C2E15F}
\definecolor{orange}{HTML}{FDA333}
\definecolor{purple}{HTML}{D3A4F9}
\definecolor{red}{HTML}{FB4485}
\definecolor{blue}{HTML}{6CE0F1}
% Text colors
\definecolor{darktext}{HTML}{414141}
\colorlet{text}{darkgray}
\colorlet{graytext}{gray}
\colorlet{lighttext}{lightgray}
% Awesome colors
\definecolor{awesome-emerald}{HTML}{00A388}
\definecolor{awesome-skyblue}{HTML}{0395DE}
\definecolor{awesome-red}{HTML}{DC3522}
\definecolor{awesome-pink}{HTML}{EF4089}
\definecolor{awesome-orange}{HTML}{FF6138}
\definecolor{awesome-nephritis}{HTML}{27AE60}
\definecolor{awesome-concrete}{HTML}{95A5A6}
\definecolor{awesome-darknight}{HTML}{131A28}
\colorlet{awesome}{awesome-red}
% Boolean value to switch section color highlighting
\newbool{acvSectionColorHighlight}
\setbool{acvSectionColorHighlight}{true}
% Awesome section color
\def\@sectioncolor#1#2#3{%
\ifbool{acvSectionColorHighlight}{{\color{awesome}#1#2#3}}{#1#2#3}%
}
%-------------------------------------------------------------------------------
% Configuration for fonts
%-------------------------------------------------------------------------------
% Set the FontAwesome font to be up-to-date.
%\newfontfamily\FA[Path=\@fontdir]{FontAwesome}
% Set font for header (default is Roboto)
\newfontfamily\headerfont[
Path=\@fontdir,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]{Roboto}
\newfontfamily\headerfontlight[
Path=\@fontdir,
UprightFont=*-Thin,
ItalicFont=*-ThinItalic,
BoldFont=*-Medium,
BoldItalicFont=*-MediumItalic,
]{Roboto}
\newcommand*{\footerfont}{\sourcesanspro}
\newcommand*{\bodyfont}{\sourcesanspro}
\newcommand*{\bodyfontlight}{\sourcesansprolight}
%-------------------------------------------------------------------------------
% Configuration for styles
%-------------------------------------------------------------------------------
% Configure styles for each CV elements
% For fundamental structures
\newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfontlight\color{graytext} #1}}
\newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}}
\newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}}
\newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}}
\newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}}
\newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}}
\newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}}
\newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
\newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}}
\newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text}}
% For elements of entry
\newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
\newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}}
\newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
\newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
\newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}}
% For elements of subentry
\newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}}
\newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}}
\newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
\newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
\newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}}
% For elements of honor
\newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}}
\newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
\newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}}
\newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
% For elements of skill
\newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
\newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}}
% For elements of the cover letter
\newcommand*{\lettersectionstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
\newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}}
\newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
\newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}}
\newcommand*{\letterdatestyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
\newcommand*{\lettertextstyle}{\fontsize{10pt}{1.4em}\bodyfontlight\upshape\color{graytext}}
\newcommand*{\letternamestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
\newcommand*{\letterenclosurestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\slshape\color{lighttext} #1}}
%-------------------------------------------------------------------------------
% Commands for personal information
%-------------------------------------------------------------------------------
% Define photo ID
% Usage: \photo[circle|rectangle,edge|noedge,left|right]{<path-to-image>}
\newcommand{\photo}[2][rectangle,noedge,left]{%
\def\@photo{#2}
\@for\tmp:=#1\do{%
\ifthenelse{\equal{\tmp}{circle} \or \equal{\tmp}{rectangle}}%
{\let\@photoshape\tmp}{}%
\ifthenelse{\equal{\tmp}{edge} \or \equal{\tmp}{noedge}}%
{\let\@photoedge\tmp}{}%
\ifthenelse{\equal{\tmp}{left} \or \equal{\tmp}{right}}%
{\let\@photoalign\tmp}{}%
}%
}
\def\@photoshape{circle}
\def\@photoedge{edge}
\def\@photoalign{left}
% Define writer's name
% Usage: \name{<firstname>}{<lastname>}
% Usage: \firstname{<firstname>}
% Usage: \lastname{<lastname>}
% Usage: \familyname{<familyname>}
\newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}}
\newcommand*{\firstname}[1]{\def\@firstname{#1}}
\newcommand*{\lastname}[1]{\def\@lastname{#1}}
\newcommand*{\familyname}[1]{\def\@lastname{#1}}
\def\@familyname{\@lastname}
% Define writer's address
% Usage: \address{<address>}
\newcommand*{\address}[1]{\def\@address{#1}}
% Define writer's position
% Usage: \name{<position>}
\newcommand*{\position}[1]{\def\@position{#1}}
% Defines writer's pronouns (optional)
% Usage: \pronouns{<pronouns>}
\newcommand*{\pronouns}[1]{\def\@pronouns{#1}}
% Defines writer's mobile (optional)
% Usage: \mobile{<mobile number>}
\newcommand*{\mobile}[1]{\def\@mobile{#1}}
% Defines writer's email (optional)
% Usage: \email{<email adress>}
\newcommand*{\email}[1]{\def\@email{#1}}
% Defines writer's homepage (optional)
% Usage: \homepage{<url>}
\newcommand*{\homepage}[1]{\def\@homepage{#1}}
% Defines writer's orcid (optional)
% Usage: \orcid{<orcid>}
\newcommand*{\orcid}[1]{\def\@orcid{#1}}
% Defines writer's Publons account (optional)
% Usage: \publons{<publons>}
\newcommand*{\publons}[1]{\def\@publons{#1}}
% Defines writer's googlescholar account (optional)
% Usage: \googlescholar{<googlescholar-user-id>}
\newcommand*{\googlescholar}[1]{\def\@googlescholar{#1}}
% Defines writer's scobus account (optional)
% Usage: \researchgate{<researchgate-name>}
\newcommand*{\researchgate}[1]{\def\@researchgate{#1}}
% Defines writer's github (optional)
% Usage: \github{<github-nick>}
\newcommand*{\github}[1]{\def\@github{#1}}
% Defines writer's gitlab (optional)
% Usage: \gitlab{<gitlab-nick>}
\newcommand*{\gitlab}[1]{\def\@gitlab{#1}}
% Defines writer's stackoverflow profile (optional)
% Usage: \stackoverflow{<so userid>}{<so username>}
% e.g.https://stackoverflow.com/users/123456/sam-smith
% would be \stackoverflow{123456}{sam-smith}
\newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}}
% Defines writer's linked-in (optional)
% Usage: \linkedin{<linked-in-nick>}
\newcommand*{\linkedin}[1]{\def\@linkedin{#1}}
% Usage: \twitter{<twitter handle>}
\newcommand*{\twitter}[1]{\def\@twitter{#1}}
% Defines writer's skype (optional)
% Usage: \skype{<skype account>}
\newcommand*{\skype}[1]{\def\@skype{#1}}
% Defines writer's reddit (optional)
% Usage: \reddit{<reddit account>}
\newcommand*{\reddit}[1]{\def\@reddit{#1}}
% Defines writer's xing (optional)
% Usage: \xing{<xing name>}
\newcommand*{\xing}[1]{\def\@xing{#1}}
% Defines writer's twitter (optional)
% Defines writer's extra informations (optional)
% Usage: \extrainfo{<extra informations>}
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
% Defines writer's quote (optional)
% Usage: \quote{<quote>}
\renewcommand*{\quote}[1]{\def\@quote{#1}}
% Defines recipient's information (cover letter only)
% Usage: \recipient{<recipient name>}{<recipient address>}
% Usage: \recipientname{<recipient name>}
% Usage: \recipientaddress{<recipient address>}
\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
\newcommand*{\recipientname}[1]{\def\@recipientname{#1}}
\newcommand*{\recipientaddress}[1]{\def\@recipientaddress{#1}}
% Defines the title for letter (cover letter only, optional)
% Usage: \lettertitle{<title>}
\newcommand*{\lettertitle}[1]{\def\@lettertitle{#1}}
% Defines the date for letter (cover letter only)
% Usage: \letterdate{<date>}
\newcommand*{\letterdate}[1]{\def\@letterdate{#1}}
% Defines a message of opening for letter (cover letter only)
% Usage: \letteropening{<message>}
\newcommand*{\letteropening}[1]{\def\@letteropening{#1}}
% Defines a message of closing for letter (cover letter only)
% Usage: \letterclosing{<message>}
\newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}}
% Defines an enclosure for letter (cover letter only, optional)
% Usage: \letterenclosure[<enclosure name>]{<enclosure>}
\newcommand*{\letterenclname}[1][Enclosure]{\def\@letterenclname{#1}}
\newcommand*{\letterenclosure}[2][]{%
% if an optional argument is provided, use it to redefine \enclname
\ifthenelse{\equal{#1}{}}{}{\def\@letterenclname{#1}}
\def\@letterenclosure{#2}
}
%-------------------------------------------------------------------------------
% Commands for extra
%-------------------------------------------------------------------------------
%% Define helper macros a user can change easily
% Header
\newcommand{\acvHeaderNameDelim}{\space}
\newcommand{\acvHeaderAfterNameSkip}{.4mm}
\newcommand{\acvHeaderAfterPositionSkip}{.4mm}
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
\newcommand{\acvHeaderIconSep}{\space}
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
\newcommand{\acvHeaderAfterSocialSkip}{6mm}
\newcommand{\acvHeaderAfterQuoteSkip}{5mm}
% Others
\newcommand{\acvSectionTopSkip}{3mm}
\newcommand{\acvSectionContentTopSkip}{2.5mm}
%-------------------------------------------------------------------------------
% Commands for utilities
%-------------------------------------------------------------------------------
% Use to align an element of tabular table
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
% Use to draw horizontal line with specific thickness
\def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@}
% Use to execute conditional statements by checking empty string
\newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}}
%-------------------------------------------------------------------------------
% Commands for elements of CV structure
%-------------------------------------------------------------------------------
% Define a header for CV
% Usage: \makecvheader
\newcommand*{\makecvheader}[1][C]{%
\newcommand*{\drawphoto}{%
\ifthenelse{\isundefined{\@photo}}{}{%
\newlength{\photodim}
\ifthenelse{\equal{\@photoshape}{circle}}%
{\setlength{\photodim}{1.3cm}}%
{\setlength{\photodim}{1.8cm}}%
\ifthenelse{\equal{\@photoedge}{edge}}%
{\def\@photoborder{darkgray}}%
{\def\@photoborder{none}}%
\begin{tikzpicture}%
\node[\@photoshape, draw=\@photoborder, line width=0.3mm, inner sep=\photodim, fill overzoom image=\@photo] () {};
\end{tikzpicture}
}%
}
\newlength{\headertextwidth}
\newlength{\headerphotowidth}
\ifthenelse{\isundefined{\@photo}}{
\setlength{\headertextwidth}{\textwidth}
\setlength{\headerphotowidth}{0cm}
}{%
\setlength{\headertextwidth}{0.76\textwidth}
\setlength{\headerphotowidth}{0.24\textwidth}
}%
\begin{minipage}[c]{\headerphotowidth}%
\ifthenelse{\equal{\@photoalign}{left}}{\raggedright\drawphoto}{}
\end{minipage}
\begin{minipage}[c]{\headertextwidth}
\ifthenelse{\equal{#1}{L}}{\raggedright}{\ifthenelse{\equal{#1}{R}}{\raggedleft}{\centering}}
\headerfirstnamestyle{\@firstname}\headerlastnamestyle{{}\acvHeaderNameDelim\@lastname}%
\\[\acvHeaderAfterNameSkip]%
\ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\[\acvHeaderAfterPositionSkip]}}%
\ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\[\acvHeaderAfterAddressSkip]}}%
\headersocialstyle{%
\newbool{isstart}%
\setbool{isstart}{true}%
\ifthenelse{\isundefined{\@pronouns}}%
{}%
{%
\faComment\acvHeaderIconSep\@pronouns%
\setbool{isstart}{false}%
}%
\ifthenelse{\isundefined{\@mobile}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\faMobile\acvHeaderIconSep\@mobile%
}%
\ifthenelse{\isundefined{\@email}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\faEnvelope\acvHeaderIconSep\@email%
}%
\ifthenelse{\isundefined{\@homepage}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{http://\@homepage}{\faHome\acvHeaderIconSep\@homepage}%
}%
\ifthenelse{\isundefined{\@orcid}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://orcid.org/\@orcid}{\aiOrcidSquare\acvHeaderIconSep\@orcid}%
}%
\ifthenelse{\isundefined{\@publons}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://publons.com/researcher/\@publons}{\aiPublonsSquare\acvHeaderIconSep\@publons}%
}%
\ifthenelse{\isundefined{\@googlescholar}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://scholar.google.com/citations?user=\@googlescholar}{\aiGoogleScholarSquare\acvHeaderIconSep\@googlescholar}%
}%
\ifthenelse{\isundefined{\@researchgate}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.researchgate.net/profile/\@researchgate}{\aiResearchGateSquare\acvHeaderIconSep\@researchgate}%
}%
\ifthenelse{\isundefined{\@github}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://github.com/\@github}{\faGithubSquare\acvHeaderIconSep\@github}%
}%
\ifthenelse{\isundefined{\@gitlab}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}%
}%
\ifthenelse{\isundefined{\@stackoverflowid}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}%
}%
\ifthenelse{\isundefined{\@linkedin}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\acvHeaderIconSep\@linkedin}%
}%
\ifthenelse{\isundefined{\@twitter}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}%
}%
\ifthenelse{\isundefined{\@skype}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\faSkype\acvHeaderIconSep\@skype%
}%
\ifthenelse{\isundefined{\@reddit}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}%
}%
\ifthenelse{\isundefined{\@xing}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.xing.com/profile/\@xing}{\faXingSquare\acvHeaderIconSep\@xing}
}%
\ifthenelse{\isundefined{\@extrainfo}}%
{}%
{%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\@extrainfo%
}%
} \\[\acvHeaderAfterSocialSkip]%
\ifthenelse{\isundefined{\@quote}}%
{}%
{\headerquotestyle{\@quote\\}\vspace{\acvHeaderAfterQuoteSkip}}%
\end{minipage}%
\begin{minipage}[c]{\headerphotowidth}%
\ifthenelse{\equal{\@photoalign}{right}}{\raggedleft\drawphoto}{}
\end{minipage}
}
% Define a footer for CV
% Usage: \makecvfooter{<left>}{<center>}{<right>}
\newcommand*{\makecvfooter}[3]{%
\fancyfoot{}
\fancyfoot[L]{\footerstyle{#1}}
\fancyfoot[C]{\footerstyle{#2}}
\fancyfoot[R]{\footerstyle{#3}}
}
% Define a section for CV
% Usage: \cvsection{<section-title>}
\renewcommand{\section}[1]{%
\vspace{\acvSectionTopSkip}
\sectionstyle{#1}
\phantomsection
\color{gray}\vhrulefill{0.9pt}
}
% Define a subsection for CV
% Usage: \cvsubsection{<subsection-title>}
\renewcommand{\subsection}[1]{%
\vspace{\acvSectionContentTopSkip}
\vspace{-3mm}
\subsectionstyle{#1}
\phantomsection
}
% Define a paragraph for CV
\newenvironment{cvparagraph}{%
\vspace{\acvSectionContentTopSkip}
\vspace{-3mm}
\paragraphstyle
}{%
\par
\vspace{2mm}
}
% Define an environment for cventry
\newenvironment{cventries}{%
\vspace{\acvSectionContentTopSkip}
\begin{center}
}{%
\end{center}
}
% Define an entry of cv information
% Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>}
\newcommand*{\cventry}[5]{
% \vspace{-2.0mm}
\setlength\tabcolsep{0pt}%
\setlength{\extrarowheight}{0pt}%
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}%
\ifempty{#2#3}{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}%
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\%
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}%
\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}%
\end{tabular*}%
}
% Define an environment for cvsubentry
\newenvironment{cvsubentries}{%
\begin{center}
}{%
\end{center}
}
% Define a subentry of cv information
% Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>}
\newcommand*{\cvsubentry}[4]{%
\setlength\tabcolsep{0pt}
\setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
\setlength\leftskip{0.2cm}
\subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
{\subentrydatestyle{#3}}{}
\ifthenelse{\equal{#1}{}}
{}
{\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\}
\ifthenelse{\equal{#4}{}}
{}
{\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\}
\end{tabular*}
}
% Define an environment for cvhonor
\newenvironment{cvhonors}{%
\vspace{\acvSectionContentTopSkip}
\vspace{-2mm}
\begin{center}
\setlength\tabcolsep{0pt}
\setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{\textwidth - 4.0cm} R{2.5cm}}
}{%
\end{tabular*}
\end{center}
}
% Define a line of cv information(honor, award or something else)
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
\newcommand*{\cvhonor}[4]{%
\honordatestyle{#4} & \honorpositionstyle{#1}\honortitlestyle{#2} & \honorlocationstyle{#3} \\
}
% Define an environment for cvskill
\newenvironment{cvskills}{%
\vspace{\acvSectionContentTopSkip}
\vspace{-2.0mm}
\begin{center}
\setlength\tabcolsep{1ex}
\setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}}
}{%
\end{tabular*}
\end{center}
}
% Define a line of cv information(skill)
% Usage: \cvskill{<type>}{<skillset>}
\newcommand*{\cvskill}[2]{%
\skilltypestyle{#1} & \skillsetstyle{#2} \\
}
% Define an environment for cvitems(for cventry)
\newenvironment{cvitems}{%
\vspace{-4.0mm}
\begin{justify}
\begin{itemize}[leftmargin=2ex, nosep, noitemsep]
\setlength{\parskip}{0pt}
\renewcommand{\labelitemi}{\bullet}
}{%
\end{itemize}
\end{justify}
\vspace{-4.0mm}
}
%-------------------------------------------------------------------------------
% Commands for elements of Cover Letter
%-------------------------------------------------------------------------------
% Define an environment for cvletter
\newenvironment{cvletter}{%
\lettertextstyle
}{%
}
% Define a section for the cover letter
% Usage: \lettersection{<section-title>}
\newcommand{\lettersection}[1]{%
\par\addvspace{2.5ex}
\phantomsection{}
\lettersectionstyle{#1}
\color{gray}\vhrulefill{0.9pt}
\par\nobreak\addvspace{0.4ex}
}
% Define a title of the cover letter
% Usage: \makelettertitle
\newcommand*{\makelettertitle}{%
\vspace{8.4mm}
\setlength\tabcolsep{0pt}
\setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
\recipienttitlestyle{\@recipientname} & \letterdatestyle{\@letterdate}
\end{tabular*}
\begin{singlespace}
\recipientaddressstyle{\@recipientaddress} \\\\
\end{singlespace}
\ifthenelse{\isundefined{\@lettertitle}}
{}
{\lettertitlestyle{\@lettertitle} \\}
\lettertextstyle{\@letteropening}
}
% Define a closing of the cover letter
% Usage: \makeletterclosing
\newcommand*{\makeletterclosing}{%
\vspace{3.4mm}
\lettertextstyle{\@letterclosing} \\\\
\letternamestyle{\@firstname\ \@lastname}
\ifthenelse{\isundefined{\@letterenclosure}}
{\\}
{%
\\\\\\
\letterenclosurestyle{\@letterenclname: \@letterenclosure} \\
}
}

View File

@ -168,19 +168,19 @@
% Set font for header (default is Roboto)
\newfontfamily\headerfont[
Path=\@fontdir,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]{Roboto}
UprightFont=*-400-Book,
ItalicFont=*-400-BookItalic,
BoldFont=*-700-Bold,
BoldItalicFont=*-700-BoldItalic,
]{Jost}
\newfontfamily\headerfontlight[
Path=\@fontdir,
UprightFont=*-Thin,
ItalicFont=*-ThinItalic,
BoldFont=*-Medium,
BoldItalicFont=*-MediumItalic,
]{Roboto}
UprightFont=*-200-Thin,
ItalicFont=*-200-ThinItalic,
BoldFont=*-600-Semi,
BoldItalicFont=*-600-SemiItalic,
]{Jost}
\newcommand*{\footerfont}{\sourcesanspro}
\newcommand*{\bodyfont}{\sourcesanspro}
@ -242,7 +242,7 @@
%-------------------------------------------------------------------------------
% Define photo ID
% Usage: \photo[circle|rectangle,edge|noedge,left|right]{<path-to-image>}
\newcommand{\photo}[2][circle,edge,left]{%
\newcommand{\photo}[2][rectangle,edge,right]{%
\def\@photo{#2}
\@for\tmp:=#1\do{%
\ifthenelse{\equal{\tmp}{circle} \or \equal{\tmp}{rectangle}}%

112
cv.Rmd
View File

@ -1,15 +1,23 @@
---
name: Andreas
surname: Gammelgaard Damsbo
position: "MD, PhD-student"
position: "MD, PhD student"
profilepic: portraitsq.jpg
pronouns: he/him
address: "Danish Stroke Centre, Neurology, Aarhus University Hospital, Denmark"
phone: "+45 2490 3612"
www: "andreas.gdamsbo.dk"
email: "andrlr@rm.dk"
address: "Danish Stroke Centre, Neurology, Aarhus University Hospital"
# phone: +45 2490 3612
www: andreas.gdamsbo.dk
email: andrlr@rm.dk
orcid: 0000-0002-7559-1154
# googlescholar: Y80Xqc4AAAAJ
# researchgate: Andreas-Damsbo
github: agdamsbo
date: "`r format(Sys.time(), '%B %Y')`"
docname: cv
knit: (function(inputFile, encoding) {
out_dir <- "docs";
rmarkdown::render(inputFile,
encoding=encoding,
output_dir=file.path(dirname(inputFile), out_dir))})
output:
vitae::awesomecv:
page_total: true
@ -33,36 +41,88 @@ get_new_pub_list <- FALSE
- I am a medical doctor and PhD-student
- I have a special interest in the relation between clinical focus on patients and data driven research
- I am a very happy *R*-user, educator and developer
# Education
# Lægefaglig erfaring
```{r}
## Education
```{r Education}
library(tibble)
tribble(
~ Degree, ~ Year, ~ Institution, ~ Where,
"cand.med", "2011-2018", "Aarhus University", "Aarhus, Denmark"
) %>%
detailed_entries(Degree, Year, Institution, Where)
~ what, ~ when, ~ who, ~ where,
"cand.med", "2018", "Aarhus University", "Aarhus, Denmark",
"Advanced R (PhD Course)", "2022", "Aarhus University", "Aarhus, Denmark",
"Reproducible Research in R - Advanced", "2023","Aarhus University", "Aarhus, Denmark",
) %>% arrange(desc(when)) |>
detailed_entries(what, when, who, where)
# ?tibble::tribble
```
## Employment
```{r Employment}
library(tibble)
tribble(
~ what, ~ when, ~ who, ~ where,
"Research Year Student", "2016-2017", "Neurology", "Aarhus Universitety Hospital, Denmark",
"Residency (KBU)", "2018-2019", "Hospital Unit West", "Central Region Denmark, Denmark",
"Research Assistant (14 months full time)", "2018, 2019, 2021", "Neurology", "Aarhus Universitety Hospital, Denmark",
"First year of specialty training in Neurology", "2020", "Aarhus Universitety Hospital", "Aarhus, Denmark",
"Visiting professor", "2023", "University of British Columbia, Vancouver", "BC, Canada",
) %>% arrange(desc(when)) |>
detailed_entries(who, when, what, where)
# ?tibble::tribble
```
# Publications
```{r}
# library(scholar)
# scholar_id <- "Y80Xqc4AAAAJ"
# l <- get_profile(scholar_id)
# scholar::get_publications(scholar_id) |> writeLines("publications.bib")
# bibliography_entries("publications.bib") %>%
# arrange(desc(author$family), issued)
```
## Main author
```{r}
if (get_new_pub_list | !file.exists("publications.bib")) {
source("orcid_pubs.R")
orcid_pubs(orc_id)
```{r Publications}
if (get_new_pub_list | !file.exists("bib-files/publications.bib")) {
source(here::here("R/functions.R"))
suppressWarnings(orcid_pubs(orc_id))
}
## 13032024: I've resorted to manually update publications on non-journal publications as they are not correctly retrieved.
bibliography_entries("publications.bib") %>%
arrange(desc(issued))
articles <- bibliography_entries("bib-files/publications.bib") %>% filter(type == "article-journal")
main_author <- do.call(c,lapply(articles$author,function(i,j){
do.call(c,i)[[1]]=="Damsbo"
}))
articles |> filter(main_author) |> arrange(desc(issued))
# bibliography_entries(here::here("bib-files/agd-main.bib"))|> arrange(desc(issued))
```
\newpage
## Co-author
```{r Coauthor}
articles |> filter(!main_author) |> arrange(desc(issued))
# bibliography_entries(here::here("bib-files/agd-coauth.bib"))|> arrange(desc(issued))
```
## Other publications and projects
```{r Others}
bibliography_entries(here::here("bib-files/agd-other.bib")) |> arrange(desc(issued))
```
# Financing
```{r Funding}
library(tibble)
tribble(
~ why, ~ when, ~ what, ~ who,
"Research FUnding", "2022", "DKK 100.000", "Lægeforeningens Forskningsfond",
"Forskningsbevilling", "2016", "DKK 20.000","Selskab for Neurologisk Forskning",
"Research Year Fellowship", "2015", "DKK 140.000", "Dansk Neurologisk Selskab"
) %>% arrange(desc(when)) |>
detailed_entries(what, when, who, why)
# ?tibble::tribble
```

BIN
cv.pdf

Binary file not shown.

154
cv_da.Rmd Normal file
View File

@ -0,0 +1,154 @@
---
name: Andreas
surname: Gammelgaard Damsbo
position: "Læge og PhD-studerende"
profilepic: portraitsq.jpg
# pronouns: he/him
address: "Dansk Stroke Center, Neurologi, Aarhus Universitshospital"
phone: +45 2490 3612
www: andreas.gdamsbo.dk
email: andrlr@rm.dk
orcid: 0000-0002-7559-1154
# googlescholar: Y80Xqc4AAAAJ
# researchgate: Andreas-Damsbo
github: agdamsbo
date: "`r format(Sys.time(), '%B %Y')`"
knit: (function(inputFile, encoding) {
out_dir <- "docs";
rmarkdown::render(inputFile,
encoding=encoding,
output_dir=file.path(dirname(inputFile), out_dir))})
output:
vitae::awesomecv:
page_total: true
includes:
in_header: header.txt
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
library(vitae)
library(dplyr)
library(tibble)
library(rorcid)
# library(icons)
orc_id <- "0000-0002-7559-1154"
get_new_pub_list <- FALSE
# Notes
# https://stackoverflow.com/questions/63067088/syntax-for-publication-list-with-full-authors
```
# Introduktion
- Jeg er læge, PhD-studerende, far til Ebba og Anne på 1 og 3 år, og gift med Caroline.
- I mit forskningsarbejde er jeg drevet af at holde øjnene på mennesket bag sygdommen og på hvordan livstil og sygdom påvirker hinanden.
# Lægefaglig erfaring
## Uddannelse
```{r Education}
library(tibble)
tribble(
~ what, ~ when, ~ who, ~ where,
"cand.med", "2018", "Aarhus Universitet", "Aarhus",
"Første år af hoveduddannelsen i Neurologi", "2020", "Aarhus Universitetshospital", "Aarhus"
) %>% arrange(desc(when)) |>
detailed_entries(what, when, who, where)
# ?tibble::tribble
```
## Ansættelser
```{r Employment}
library(tibble)
tribble(
~ what, ~ when, ~ who, ~ where,
"Forskningsårsstuderende", "2016-2017", "Neurologi", "Aarhus Universitetshospital",
"Klinisk basisuddannelse (KBU)", "2018-2019", "Hospitalsenheden Vest", "Region Midt",
"Forskningsassistent (samlet 14 måneder)", "2018, 2019, 2021", "Neurologi", "Aarhus Universitetshospital",
"Introduktionsstilling", "2020", "Neurologi", "Aarhus Universitetshospital",
) %>% arrange(desc(when)) |>
detailed_entries(who, when, what, where)
# ?tibble::tribble
```
<!-- # Forskningserfaring -->
<!-- ## Konferencedeltagelse -->
<!-- ```{r Conferences} -->
<!-- library(tibble) -->
<!-- tribble( -->
<!-- ~ what, ~ when, ~ who, ~ where, -->
<!-- "ESOC", "2017", "European Stroke Organisation", "Prag, Tjekkiet", -->
<!-- "ESOC", "2023", "European Stroke Organisation", "München, Tyskland" -->
<!-- ) %>% -->
<!-- detailed_entries(what, when, who, where) -->
<!-- # ?tibble::tribble -->
<!-- ``` -->
# Publikationer
## Førsteforfatter
```{r Publications}
if (get_new_pub_list | !file.exists("bib-files/publications.bib")) {
source("orcid_pubs.R")
orcid_pubs(orc_id)
}
articles <- bibliography_entries("bib-files/publications.bib") %>% filter(type == "article-journal")
main_author <- do.call(c,lapply(articles$author,function(i,j){
do.call(c,i)[[1]]=="Damsbo"
}))
articles |> filter(main_author) |> arrange(desc(issued))
```
## Medforfatter
```{r Coauthor}
articles |> filter(!main_author) |> arrange(desc(issued))
```
<!-- \newpage -->
## Øvrige udgivelser
```{r Others}
bibliography_entries("bib-files/publications.bib") %>% filter(type != "article-journal") |> arrange(desc(issued))
```
## Financiering
```{r Funding}
library(tibble)
tribble(
~ why, ~ when, ~ what, ~ who,
"Forskningsbevilling", "2022", "DKK 100.000", "Lægeforeningens Forskningsfond",
"Forskningsbevilling", "2016", "DKK 20.000","Selskab for Neurologisk Forskning",
"Forskningsårsstipendium", "2015", "DKK 140.000", "Dansk Neurologisk Selskab"
) %>% arrange(desc(when)) |>
detailed_entries(what, when, who, why)
# ?tibble::tribble
```
# Kommunikation og samarbejde
Jeg har gennem forskelligt organisationsarbejde fået erfaring med projektledelse på både store og mindre projekter. Det er gode erfaringer jeg hverdag har glæde af i mit prefessionelle arbejdsliv.
```{r Communication}
library(tibble)
tribble(
~ what, ~ when, ~ who, ~ where,
"Formand for internationalt projekt", "2014-2018", "FDF og KFUM&KFUK", "Danmark/Myanmar",
"Bestyrelsesmedlem", "2018-2021", "Danmission", "Danmark",
"Kursus: Personligt Lederskab (to dage)", "2018", "Dansk Ungdoms Fællesråd (DUF)", "Haslev",
"Kursus: International Work and Study Camp Dialogue and Conflict Resolution (10 dage)", "2010", "Danmission", "Libanon",
"Leder og instruktør", "2006-", "FDF", "Aalborg, Hjortshøj og Bryrup"
) %>%arrange(desc(when)) |>
detailed_entries(who, when, what, where)
# ?tibble::tribble
```

BIN
docs/cv.pdf Normal file

Binary file not shown.

BIN
docs/cv_da.pdf Normal file

Binary file not shown.

BIN
docs/pubs.pdf Normal file

Binary file not shown.

6
header.txt Normal file
View File

@ -0,0 +1,6 @@
\usepackage{float}
\usepackage{multicol}
\usepackage{colortbl}
\arrayrulecolor{white}
\usepackage{hhline}
\definecolor{light-gray}{gray}{0.95}

View File

@ -1,16 +0,0 @@
@Manual{R-tibble,
title = {tibble: Simple Data Frames},
author = {Kirill Müller and Hadley Wickham},
year = {2022},
note = {R package version 3.1.8},
url = {https://CRAN.R-project.org/package=tibble},
}
@Manual{R-vitae,
title = {vitae: Curriculum Vitae for R Markdown},
author = {Mitchell O'Hara-Wild and Rob Hyndman},
year = {2023},
note = {R package version 0.5.3},
url = {https://CRAN.R-project.org/package=vitae},
}

View File

@ -1,17 +1,24 @@
---
name: Andreas
surname: Gammelgaard Damsbo
position: "MD, PhD-student"
position: "MD, PhD student"
# profilepic: portraitsq.jpg
pronouns: he/him
address: "Danish Stroke Centre, Neurology, Aarhus University Hospital"
phone: "+45 2490 3612"
www: "andreas.gdamsbo.dk"
email: "andrlr@rm.dk"
phone: +45 2490 3612
www: andreas.gdamsbo.dk
email: andrlr@rm.dk
orcid: 0000-0002-7559-1154
github: agdamsbo
date: "`r format(Sys.time(), '%B %Y')`"
docname: publications
knit: (function(inputFile, encoding) {
out_dir <- "docs";
rmarkdown::render(inputFile,
encoding=encoding,
output_dir=file.path(dirname(inputFile), out_dir))})
output:
vitae::awesomecv:
vitae::awesomecv:
page_total: true
---
@ -24,6 +31,36 @@ library(rorcid)
orc_id <- "0000-0002-7559-1154"
scholar_id <- "Y80Xqc4AAAAJ"
get_new_pub_list = TRUE
```
```{r}
# Getting references
if (get_new_pub_list | !file.exists("bib-files/publications.bib")) {
source("orcid_pubs.R")
orcid_pubs(orc_id)
}
```
```{r}
# Splitting in seperate files
refs <- read.bib("bib-files/publications.bib", encoding = "unknown", srcfile)
names <- do.call(c,lapply(seq_along(refs),function(i){
names(refs[[i]][[1]][1])
}))
main <- grepl("^[Dd]amsbo*.",names)
other <- grepl("^[Hh]ttps*.",names)
coauth <- !main&!other
library(bibtex)
library(RefManageR)
WriteBib(bib = as.BibEntry(refs[[main]]), file = "bib-files/agd-main.bib")
WriteBib(bib = as.BibEntry(refs[[other]]), file = "bib-files/agd-other.bib")
WriteBib(bib = as.BibEntry(refs[[coauth]]), file = "bib-files/agd-coauth.bib")
```
# Publications
@ -31,17 +68,34 @@ scholar_id <- "Y80Xqc4AAAAJ"
```{r}
# library(scholar)
# l <- get_profile(scholar_id)
# scholar::get_publications(scholar_id) |> writeLines("publications.bib")
# bibliography_entries("publications.bib") %>%
# scholar::get_publications(scholar_id)
# bibliography_entries() %>%
# arrange(desc(author$family), issued)
```
```{r}
if (get_new_pub_list | !file.exists("publications.bib")) {
source("orcid_pubs.R")
orcid_pubs(orc_id)
}
## Main author
bibliography_entries("publications.bib") %>%
arrange(desc(issued))
```{r Publications}
articles <- bibliography_entries("bib-files/publications.bib") %>% filter(type == "article-journal")
main_author <- do.call(c,lapply(articles$author,function(i,j){
do.call(c,i)[[1]]=="Damsbo"
}))
mains <- articles |> filter(main_author) |> arrange(desc(issued))
mains
```
## Co-author
```{r Coauthor}
articles |> filter(!main_author) |> arrange(desc(issued))
```
<!-- \newpage -->
## Other publications
```{r Others}
bibliography_entries("bib-files/publications.bib") %>% filter(type != "article-journal") |> arrange(desc(issued))
```

105
pubs.bib
View File

@ -1,105 +0,0 @@
@article{behrndtzTooRiskyToo2022,
title = {Too Risky, Too Large, Too Late, or Too Mild\textemdash{{Reasons}} for Not Treating Ischemic Stroke Patients and the Related Outcomes},
author = {Behrndtz, Anne Brink and Damsbo, Andreas Gammelgaard and Blauenfeldt, Rolf Ankerlund and Andersen, Grethe and Speiser, Lasse Ole and Simonsen, Claus Ziegler},
year = {2022},
month = dec,
journal = {Frontiers in Neurology},
volume = {13},
pages = {1098779},
issn = {1664-2295},
doi = {10.3389/fneur.2022.1098779},
urldate = {2023-02-01},
abstract = {Background Despite effective treatments, many patients are still not offered reperfusion therapy for acute ischemic stroke. Methods We present a single-center observational study on acute ischemic stroke patients, who presented as candidates for reperfusion therapy but were deemed ineligible after work-up. Reasons for non-treatment were obtained by studying patient files and subsequently grouped into ``too risky'' (e.g., anticoagulant use, comorbidities), ``too large'' (large infarct), ``too late'' (late presentation of stroke and wake-up strokes), or ``too mild'' (clinically mild/remitting symptoms). Modified Rankin scale (mRS) score was prospectively collected in all patients by a structured telephone interview. All non-treated patients with a National Institute of Health Stroke Scale (NIHSS) score of 0\textendash 5 were compared with a similar cohort that was treated. Results Of 529 patients with acute ischemic stroke arriving as reperfusion therapy candidates, 198 (37.4\%) were not treated. The majority (42\%) were not treated due to admission outside the treatment window (too late) and 24\% had absolute contraindications (too risky). Only 8\% was excluded because their infarct was too large [median Alberta Stroke Program Early CT score 3 (2\textendash 4)]. In the ``too mild'' group (14\%) the percentage of patients not being independent at 90 days was 30\%. The adjusted odds ratio for a better outcome (lower mRS) among treated patients with NIHSS 0\textendash 5 compared with non-treated was 1.93 (95\% confidence interval 1.15\textendash 3.23). Conclusion Presenting outside the treatment window is still the most common reason for not receiving therapy. Our study suggests a benefit of thrombolysis for patients with mild symptoms.},
copyright = {All rights reserved},
file = {/Users/au301842/Zotero/storage/84GVKSUF/Behrndtz et al. - 2022 - Too risky, too large, too late, or too mild—Reason.pdf}
}
@article{Damsbo2020,
title = {Predictors for Wellbeing and Characteristics of Mental Health after Stroke},
author = {Damsbo, Andreas Gammelgaard and Kraglund, Kristian Lundsgaard and Buttensch{\o}n, Henriette N{\o}rm{\o}lle and Johnsen, S{\o}ren Paaske and Andersen, Grethe and Mortensen, Janne Kaergaard},
year = {2020},
month = mar,
journal = {Journal of Affective Disorders},
volume = {264},
number = {December 2019},
pages = {358--364},
publisher = {{Elsevier B.V.}},
issn = {01650327},
doi = {10.1016/j.jad.2019.12.032},
abstract = {Background: Poor mental health after stroke is common and complex. We aimed to identify predictors of poor wellbeing and to examine the overlap of poor wellbeing, fatigue, and depression. Method: Consecutive first-ever ischemic stroke-patients filled in questionnaires on wellbeing, fatigue, and depression at baseline and at one and six months. The World Health Organization 5-Item Wellbeing-Index (WHO-5), the Major Depression Inventory, and the Multidimensional Fatigue Inventory were used. Patients were genotyped according to serotonin-transporter gene polymorphisms. Multivariable logistic regression was used to identify potential predictors of poor wellbeing (WHO-5 score {$<$}50). Overlap between wellbeing, fatigue, and depression was examined using an Euler diagram. Results: We included 919 patients. The prevalence of poor wellbeing was 279 (30.4\%) six months after stroke. Living alone at stroke onset was the strongest predictor of poor wellbeing with a mutually adjusted odds ratio of 1.53 (95\% confidence interval (CI): 1.03 to 2.28) at one month and 1.77 (CI: 1.13 to 2.76) at six months. Severe stroke at admission also predicted poor wellbeing at six months. Abnormal fatigue occurred in half and incorporated almost all patients with poor wellbeing. Less than 5\% fulfilled the criteria for depression at any point and almost all of these patients had poor wellbeing and abnormal fatigue. Antidepressants were used by 292 (31.8\%) during follow-up. Limitations: Cognitive impairment was not measured and could interact with wellbeing post-stroke. Conclusion: Living alone strongly predicted poor wellbeing after stroke. Satisfactory mental health-recovery seems to require psychosocial interventions when indicated in combination with antidepressant treatment.},
copyright = {All rights reserved},
keywords = {5-HTT-linked polymorphic region,Fatigue,Ischemic stroke,Post-stroke depression,Wellbeing,World Health Organization 5-Item Wellbeing Index},
file = {/Users/au301842/Zotero/storage/JVS5B2KH/Damsbo et al._2020_Journal of A ff ective Disorders Predictors for wellbeing and characteristics of mental health after stroke.pdf}
}
@article{Damsbo2020a,
title = {Prestroke {{Physical Activity}} and {{Poststroke Cognitive Performance}}},
author = {Damsbo, Andreas Gammelgaard and Mortensen, Janne Kaergaard and Kraglund, Kristian Lundsgaard and Johnsen, S{\o}ren Paaske and Andersen, Grethe and Blauenfeldt, Rolf Ankerlund},
year = {2020},
journal = {Cerebrovascular Diseases},
pages = {632--638},
issn = {14219786},
doi = {10.1159/000511490},
abstract = {Introduction: Physical activity (PA) is associated with a lower risk of stroke and stroke mortality as well as a favorable stroke outcome. PA may also prevent general cognitive decline. Poststroke cognitive impairment is both common and disabling, and focusing on all possible preventive measures is important. Studies on the effect of PA on poststroke cognitive performance are sparse, however. We therefore aimed to examine the association between prestroke PA and poststroke cognitive performance. Methods: We studied the correlation between prestroke PA and poststroke cognitive performance in a prespecified analysis in The Efficacy of Citalopram Treatment in Acute Ischemic Stroke (TALOS) trial. We used the Physical Activity Scale for the Elderly (PASE) to collect information on PA during the 7-day period before stroke. PA was quantified, and patients were stratified into quartiles based on their PASE score. Cognitive performance was measured using the Symbol Digit Modalities Test (SDMT) at 1 and 6 months and the Mini-Mental State Examination (MMSE) at 6 months. The functional outcome was assessed using the modified Rankin Scale (mRS). Results: In total, 625 of 642 patients (97\%) completed the PASE questionnaire. The median age was 69 (interquartile range [IQR]: 60-77), and the median PASE score was 137 (82-205). Higher prestroke PASE quartiles (2nd, 3rd, and 4th, each compared to the 1st) were independently associated with a higher SDMT score at 1 month in the both the univariable and multivariable analyses (2nd: 3.99 points, 95\% confidence interval [CI]: 1.01-6.97; 3rd: 3.6, CI: 0.6-6.61; 4th: 4.1, CI: 0.95-7.24). This association remained at 6 months. PA was not statistically associated with the MMSE score or mRS. Conclusion: Higher prestroke PA was associated with a better cognitive performance as measured by the SDMT at 1 and 6 months poststroke. We found no significant association between prestroke PA and functional outcome. Our results are encouraging and support further investigations of PA as a protective measure against poststroke cognitive impairment.},
copyright = {All rights reserved},
pmid = {33176308},
keywords = {Acute ischemic stroke,Physical Activity Scale for the Elderly,Poststroke cognitive impairment,Prestroke physical activity,Symbol Digit Modalities Test},
file = {/Users/au301842/Zotero/storage/4B2ISELJ/Damsbo et al._2020_Prestroke Physical Activity and Poststroke Cognitive Performance.pdf;/Users/au301842/Zotero/storage/PUSG5ADP/Damsbo et al._2020_Prestroke Physical Activity and Poststroke Cognitive Performance.pdf}
}
@misc{damsboandreasgStRokePackage2023,
title = {{{stRoke R}} Package},
author = {Damsbo, Andreas G},
year = {2023},
month = jan,
doi = {10.5281/ZENODO.7572023},
urldate = {2023-04-26},
abstract = {This is an R-toolbox of custom functions for convenient data management and analysis in clinical health research and teaching. The package is mainly collected for personal use, but any use beyond that is encouraged. This package has migrated functions from 'agdamsbo/daDoctoR', and new functions has been added. Version follows months and year. See NEWS/Changelog for release notes. This package includes sampled data from the TALOS trial (Kraglund et al (2018) \&lt;doi:10.1161/STROKEAHA.117.020067\&gt;). The win\_prob() function is based on work by Zou et al (2022) \&lt;doi:10.1161/STROKEAHA.121.037744\&gt;. The age\_calc() function is based on work by Becker (2020) \&lt;doi:10.18637/jss.v093.i02\&gt;.},
copyright = {Creative Commons Attribution 4.0 International, Open Access},
keywords = {R}
}
@article{damsboSerotonergicRegulationCognition2019,
title = {Serotonergic {{Regulation}} and {{Cognition}} after {{Stroke}}: {{The Role}} of {{Antidepressant Treatment}} and {{Genetic Variation}}},
author = {Damsbo, Andreas Gammelgaard and Kraglund, Kristian Lundsgaard and Buttensch{\o}n, Henriette N{\o}rm{\o}lle and Johnsen, S{\o}ren Paaske and Andersen, Grethe and Mortensen, Janne Kaergaard},
year = {2019},
journal = {Cerebrovascular Diseases},
volume = {47},
number = {1-2},
pages = {72--79},
issn = {14219786},
doi = {10.1159/000498911},
abstract = {Introduction: Serotonin affects several brain functions including cognition. The serotonin transporter (SERT) regulates brain serotonin levels through reuptake into neurons. The gene encoding this transporter, the SERT gene, has several functional polymorphisms affecting the number of transporters and thereby the serotonin levels. SERT gene expression may be important for cognition and selective serotonin reuptake inhibitors (SSRI) may improve cognition post stroke. We therefore examined the association between SERT genotypes, cognitive function and early treatment with the SSRI citalopram among non-depressed Caucasian stroke patients. Patients and Methods: SERT gene polymorphisms in 270 non-depressed first-ever acute ischemic stroke patients randomized to citalopram, n = 130, or placebo, n = 140, were investigated. Patients were genotyped for a length polymorphism (L = long and S = short allele) and a single nucleotide polymorphism (A/G substitution) dividing the L-allele into LA and LG. According to these genotypes, patients were further grouped according to low (S/S, LG/S and LG/LG), medium (S/LA and LG/LA), or high functional gene expression (LALA). Cognition was measured by the Symbol Digit Modalities Test (SDMT) at 1 and 6 months. Mean SDMT scores according to genotype and randomization groups were compared using multiple logistic regression adjusting for age, stroke severity, premorbid functional status, and vascular risk factors including smoking, hypertension, and diabetes. Results: Stratified by genotype groups, there were no statistically significant differences in SDMT scores between randomization groups. Placebo-treated patients with low SERT expression genotypes, however, tended to have lower mean SDMT scores (at 1 month: 30.2, SD 10.8) compared to citalopram-treated patients (33.6, SD 13.7). Within the placebo group, the low genotype expression patients had significantly lower adjusted mean SDMT scores at 1 month compared to the high genotype expression patients (adjusted mean difference of \textendash 6 points, CI \textendash 12.0 to \textendash 0.05). We found similar results at 6 months, although not statistically significant. The genotype expression was not associated with SDMT scores among citalopram-treated patients. Conclusion: There was no difference in cognition between citalopram and placebo-treated patients according to the genotype group. Our results indicate, however, that low expression SERT genotype may contribute to reduced cognitive function post stroke as placebo-treated patients with low SERT expression tended to score lower on the SDMT. The significant difference in SDMT scores between low and high expression patients was present only in the placebo-treated group, thereby warranting further exploration of the potential effect of early citalopram treatment on cognitive functioning. Our results are preliminary and need replication in larger-scale studies.},
copyright = {All rights reserved},
keywords = {5-htt-linked,5-HTT-linked polymorphic region,acute ischemic stroke,Acute ischemic stroke,cognition,Cognition,inhibitor,polymorphic region,rehabilitation,Rehabilitation,rs25531,selective serotonin reuptake,Selective serotonin reuptake inhibitor,symbol digit modalities test,Symbol Digit Modalities Test},
file = {/Users/au301842/Zotero/storage/ZRLPFHBT/Damsbo et al._2019_Serotonergic Regulation and Cognition after Stroke The Role of Antidepressant Treatment and Genetic Variation.pdf}
}
@article{kraglundNeuroregenerationVascularProtection2018,
title = {Neuroregeneration and {{Vascular Protection}} by {{Citalopram}} in {{Acute Ischemic Stroke}} ({{TALOS}})},
author = {Kraglund, Kristian Lundsgaard and Mortensen, Janne Kaergaard and Damsbo, Andreas Gammelgaard and Modrau, Boris and Simonsen, Sofie Amalie and Iversen, Helle Klingenberg and Madsen, Morten and Grove, Erik Lerkevang and Johnsen, S{\o}ren Paaske and Andersen, Grethe},
year = {2018},
month = nov,
journal = {Stroke},
volume = {49},
number = {11},
pages = {2568--2576},
publisher = {{Am Heart Assoc}},
issn = {0039-2499},
doi = {10.1161/STROKEAHA.117.020067},
abstract = {Background and Purpose- Recent studies indicate a possible beneficial effect on neuroregeneration and vascular protection of selective serotonin reuptake inhibitors after stroke. We conducted a national multicentre study to explore these effects. Methods- The TALOS study (The Efficacy of Citalopram Treatment in Acute Stroke) is a Danish placebo-controlled, randomized, double-blind study of citalopram started within 7 days after symptom onset to detect improvement in functional outcomes and cardiovascular protection in nondepressed, first-ever ischemic stroke. Study medication was given as add-on to standard medical care and treatment duration and follow-up was 6 months. There were 2 coprimary outcomes: changes in functional disability from 1 to 6 months on the modified Rankin Scale, and a composite vascular end point of transient ischemic attack/stroke, myocardial infarction, or vascular mortality during the first 6 months. Results- We enrolled 642 patients randomized to either citalopram (n=319) or placebo (n=323). Median National Institutes of Health Stroke Scale was 5.3 (range, 0-27) versus 4.8 (range, 0-28) at admission. Improvement in functional recovery from 1 to 6 months occurred in 160 (50\%) patients on citalopram and 136 (42\%) on placebo (odds ratio, 1.27; 95\% CI, 0.92-1.74; P=0.057). When dropouts before 31 days were excluded (n=90), the analysis population showed an odds ratio of 1.37 (95\% CI, 0.97-1.91; P=0.07). During a median follow-up of 150 days, 23 (7\%) patients in the citalopram group and 26 (8\%) patients in the placebo group had a primary, vascular end point (hazard ratio, 0.89; 95\% CI, 0.50-1.60; P=0.24). A total of 28 patients (4\%) died (16 versus 12; P=0.42) during the study. Conclusions- Early citalopram treatment did not improve functional recovery in nondepressed ischemic stroke patients within the first 6 months, although a borderline statistical significant effect was observed in the analysis population. The risk of cardiovascular events was similar between treatment groups, and citalopram treatment was well tolerated. Clinical Trial Registration- URL: https://www.clinicaltrials.gov . Unique identifier: NCT01937182. URL: https://www.clinicaltrialsregister.eu/ . EudraCT number: 2013-002253-30.},
copyright = {All rights reserved},
keywords = {a stroke will result,after,but this also occurs,citalopram,deficits and need for,drug effects,in devastating impair-,ments not only limited,myocardial infarction,neurological,or many patients,rehabilitation,serotonin,stroke,to patients with severe},
file = {/Users/au301842/Zotero/storage/DKFHKSN9/Kraglund et al._2018_Neuroregeneration and Vascular Protection by Citalopram in Acute Ischemic Stroke (TALOS).pdf;/Users/au301842/Zotero/storage/QP9LQMKX/str_stroke-2017-020067_supp2.pdf}
}
@article{vestergaardImpactPrestrokePhysical2023,
title = {Impact of Prestroke Physical Activity and Citalopram Treatment on Poststroke Depressive Symptoms: A Secondary Analysis of Data from the {{TALOS}} Randomised Controlled Trial in {{Denmark}}},
author = {Vestergaard, Sigrid Breinholt and Damsbo, Andreas Gammelgaard and Blauenfeldt, Rolf Ankerlund and Johnsen, S{\o}ren Paaske and Andersen, Grethe and Mortensen, Janne Kaergaard},
year = {2023},
journal = {BMJ Open},
abstract = {Objectives\hspace{0.6em} To investigate the association between prestroke physical activity and depressive symptoms up to 6\,months after stroke and examine if citalopram treatment modified the association. Design\hspace{0.6em} A secondary analysis of data from the multicentre randomised controlled trial The Efficacy of Citalopram Treatment in Acute Ischemic Stroke (TALOS). Setting and participants\hspace{0.6em} TALOS was conducted at multiple stroke centres in Denmark from 2013 to 2016. It enrolled 642 non-\-depressed patients with first-\-ever acute ischaemic stroke. Patients were eligible for this study if a prestroke physical activity level was assessed by the Physical Activity Scale for the Elderly (PASE). Interventions\hspace{0.6em} All patients were randomised to citalopram or placebo for 6\,months. Outcomes\hspace{0.6em} Depressive symptoms 1 and 6\,months after stroke measured on the Major Depression Inventory (MDI) ranging from 0 to 50. Results\hspace{0.6em} A total of 625 patients were included. Median (IQR) age was 69 (60\textendash 77) years, 410 (65.6\%) were men, 309 (49.4 \%) received citalopram and median (IQR) prestroke PASE score was 132.5 (76\textendash 197). Higher prestroke PASE quartile, compared with the lowest PASE quartile, was associated with fewer depressive symptoms both after 1\,month (mean difference third quartile -2.3 (-4.2, \textendash 0.5), p=0.013, mean difference fourth quartile -2.4 (-4.3, \textendash 0.5), p=0.015) and 6\,months after stroke (mean difference third quartile -3.3 (-5.5, \textendash 1.2), p=0.002, mean difference fourth quartile -2.8 (-5.2, \textendash 0.3), p=0.027). There was no interaction between citalopram treatment and prestroke PASE score on poststroke MDI scores (p=0.86). Conclusions\hspace{0.6em} A higher prestroke physical activity level was associated with fewer depressive symptoms 1 and 6\,months after stroke. Citalopram treatment did not seem to modify this association. Trial registration numbers\hspace{0.6em} NCT01937182 (ClinicalTrials. gov) and 2013-\-002253-\-30 (EUDRACT).},
copyright = {Creative Commons Attribution-NonCommercial 4.0 International Licence (CC-BY-NC)},
langid = {english},
file = {/Users/au301842/Zotero/storage/DVW3LZ5R/Vestergaard et al. - Impact of prestroke physical activity and citalopr.pdf}
}

BIN
pubs.pdf

Binary file not shown.