# Author biographies in elsarticle

Some Elsevier journals such as Ad Hoc Networks require author biographies at the end of the manuscript. From the guide for authors:

Vitae Include in the manuscript a short (maximum 100 words) biography of each author, along with a passport-type photograph accompanying the other figures.

Does the elsarticle document class define any specific environment for the author's to use for this (double column FWIW), similar to the way that IEEE journals have an IEEEbiography environment?

I came across the blog post Alternative LaTeX Format for Author Biography For a Journal Submission, though it's from 2009 and I'm hoping Elsevier has a standardized way of achieving the same result now without adding more packages.

• elsarticle doesn't provide that. You are on your own. – user11232 Nov 30 '14 at 0:08

Edit: See improved version below

This is a (preliminary) solution, defining a command for specifing an image, using wrapfig package and some of it's features and the author name as well as some information on the author.

The information is written to a file, which is included automatically at the end.

It misses some more features of course and some configuration possibilities at the moment.

Description of the parameters, see for special values the code and the the calling.

1. Optional argument: Specify the options
2. Image file name
3. Author name
4. Author information

\documentclass{elsarticle}
\usepackage{xparse}%

\usepackage{blindtext}

\usepackage{morewrites}

\usepackage{wrapfig}
\usepackage{xkeyval}%

\newwrite\authorbibfile%

\AtBeginDocument{%
\immediate\openout\authorbibfile=\jobname.aub%
}%

\AtEndDocument{%
\immediate\closeout\authorbibfile
\InputIfFileExists{\jobname.aub}{}{}
}%

\makeatletter

\define@key{authorbib}{scale}[1]{%
\def\AuthorbibKVMacroScale{#1}%
}

\define@key{authorbib}{wraplines}[10]{%
\def\AuthorbibKVMacroWraplines{#1}%
}

\define@key{authorbib}{imagewidth}[4cm]{%
\def\AuthorbibKVMacroImagewidth{#1}%
}

\define@key{authorbib}{overhang}[10pt]{%
\def\AuthorbibKVMacroOverhang{#1}%
}

\define@key{authorbib}{imagepos}[l]{%
\def\AuthorbibKVMacroImagepos{#1}%
}

\makeatother

\presetkeys{authorbib}{imagepos=l,imagewidth=4cm,wraplines=15,overhang=20pt}{}

\newlength{\AuthorbibTopSkip}
\newlength{\AuthorbibBottomSkip}
\setlength{\AuthorbibTopSkip}{\baselineskip}
\setlength{\AuthorbibBottomSkip}{\baselineskip}

\NewDocumentCommand{\authorbibliography}{+o+m+m+m}{%
\IfNoValueTF{#1}{%
}{%
\setkeys{authorbib}{#1}%
\immediate\write\authorbibfile{%
\string\begin{wrapfigure}[\AuthorbibKVMacroWraplines]{\AuthorbibKVMacroImagepos}[\AuthorbibKVMacroOverhang]{\AuthorbibKVMacroImagewidth}^^J
\string\includegraphics[scale=\AuthorbibKVMacroScale]{#2}^^J
\string\end{wrapfigure}^^J
}%
}%
\IfNoValueTF{#3}{%
\typeout{Warning: No author name}%
}{%
\immediate\write\authorbibfile{%
\unexpanded{\vspace{\AuthorbibTopSkip}}^^J
\string\noindent\relax
\unexpanded{\textbf{#3}\par}^^J
\string\noindent\relax
\unexpanded{#4}^^J%
\unexpanded{\vspace{\AuthorbibBottomSkip}}^^J
}%
}%
}%

\begin{document}

\blindtext

\authorbibliography[scale=0.3,wraplines=10,overhang=40pt,imagewidth=4cm,imagepos=r]{bild_erwin_schroedinger}{Erwin Schr\"odinger}{\blindtext}

\authorbibliography[scale=0.4,imagewidth=5cm,wraplines=13,overhang=-50pt]{bild_erwin_schroedinger}{Erwin Schr\"odinger}{\blindtext}

\authorbibliography[scale=0.3,wraplines=10,overhang=40pt,imagewidth=4cm,imagepos=r]{bild_erwin_schroedinger}{Erwin Schr\"odinger}{\blindtext}

\end{document}


## Improved version : authorbiography.sty

\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{authorbiography}%

\usepackage{graphicx}%
\usepackage{xparse}%
\usepackage{textcomp}%

\usepackage{tocloft}

\usepackage{morewrites}%
\usepackage{wrapfig}%
\usepackage{xkeyval}%
\usepackage{etoolbox}%

\usepackage{tcolorbox}%

\newwrite\authorbibfile%

\AtBeginDocument{%
\immediate\openout\authorbibfile=\jobname.aub%
}%

\newlength{\AuthorbioTopSkip}%
\newlength{\AuthorbioBottomSkip}%
\setlength{\AuthorbioTopSkip}{\baselineskip}%
\setlength{\AuthorbioBottomSkip}{\baselineskip}%

\define@key{authorbio}{wraplines}[10]{%
\def\AuthorbioKVMacroWraplines{#1}%
}

\define@key{authorbio}{imagewidth}[4cm]{%
\def\AuthorbioKVMacroImagewidth{#1}%
}

\define@key{authorbio}{overhang}[10pt]{%
\def\AuthorbioKVMacroOverhang{#1}%
}

\define@key{authorbio}{imagepos}[l]{%
\def\AuthorbioKVMacroImagepos{#1}%
}

\define@key{authorbio}{yearofbirth}[]{
\def\AuthorbioKVMacroYearofbirth{#1}%
}%

\define@key{authorbio}{yearofdeath}[]{
\def\AuthorbioKVMacroYearofdeath{#1}%
}%

\define@key{authorbio}{BiographyName}[1]{%
\def\AuthorbioKVMacroBiographyName{#1}%
}%

\newtoggle{AuthorBiographyInTOC}%
\settoggle{AuthorBiographyInTOC}{false}%

\define@boolkey{authorbio}{totoc}[false]{%
\ifKV@authorbio@totoc
\toggletrue{AuthorBiographyInTOC}
\else
\togglefalse{AuthorBiographyInTOC}
\fi
}%

\newcommand{\listofauthorbiographiesname}{List of Author Biographies}

\newlistof{authorbiographies}{bio}{\listofauthorbiographiesname}

\presetkeys{authorbio}{imagepos=l,imagewidth=4cm,wraplines=15,overhang=20pt,totoc=false}{}%

\newcommand*{\authorbiography@@singlename}{Biography of author}%
\newcommand*{\authorbiography@@name}{Biographies of authors}%

\DeclareExpandableDocumentCommand{\authorbiographyname}{+m}{%
\IfNoValueTF{#1}{%
\authorbiography@@name%
}{%
\ifnumgreater{#1}{1}{%
\authorbiography@@name}{%
\ifnumequal{#1}{1}{%
\authorbiography@@singlename%
}{}%
}%
}%
}%

\NewDocumentCommand{\Authorbiography}{+o}
{%
\immediate\closeout\authorbibfile%
\csundef{AuthorbioKVMacroBiographyName}%
\clearpage
\ifnumgreater{\value{authorbiographies}}{0}{% Only add a page/entries if the authorbiographies counter is greater than 0
\IfValueTF{#1}{%
\setkeys*{authorbio}{#1}%
\iftoggle{AuthorBiographyInTOC}{%
\ifcsdef{AuthorbioKVMacroBiographyName}{%
\ifcsdef{chapter}{%
\chapter*{\AuthorbioKVMacroBiographyName}% %Check for KOMA addchap etc later on.
\markboth{\AuthorbioKVMacroBiographyName}{\AuthorbioKVMacroBiographyName}%
}{%
\section*{\AuthorbioKVMacroBiographyName}%
\markboth{\AuthorbioKVMacroBiographyName}{\AuthorbioKVMacroBiographyName}
}%
}{%
\ifcsdef{chapter}{%
\chapter*{\authorbiographyname{\number\value{authorbiographies}}}%
}{% Assume that \section* exists ;-)
\section*{\authorbiographyname{\number\value{authorbiographies}}}%
}%
\markboth{\authorbiographyname{\number\value{authorbiographies}}}{\authorbiographyname{\number\value{authorbiographies}}}%
}%
}{}%
}{% No further ado, just add a (chapter) header to the page
\ifcsdef{chapter}{%
\chapter*{\authorbiographyname{\number\value{authorbiographies}}}%
}{% Assume that \section* exists ;-)
\section*{\authorbiographyname{\number\value{authorbiographies}}}%
}%
\markboth{\authorbiographyname{\number\value{authorbiographies}}}{\authorbiographyname{\number\value{authorbiographies}}}%
}%
\InputIfFileExists{\jobname.aub}{\typeout{authorbiographies: Inputting file successfully}}{\typeout{Error: File \jobname.aub does not exist}}%
}% End of \ifnumgreater...
}%

\NewDocumentCommand{\authorbiographyyearofdeathstyle}{+o}{%
\textbf{\textdied #1)}%
}%

\NewDocumentCommand{\authorbiographyyearofbirthstyle}{+o}{%
\textbf{(\textborn #1}%
}%

\NewDocumentCommand{\writeauthorlifeinfo}{+o}{%
\global\undef\AuthorbioKVMacroYearofbirth%
\global\undef\AuthorbioKVMacroYearofdeath%
\IfValueTF{#1}{%
\setkeys*{authorbio}{#1}%
\ifcsdef{AuthorbioKVMacroYearofbirth}{%
\authorbiographyyearofbirthstyle[\AuthorbioKVMacroYearofbirth]%
\ifcsdef{AuthorbioKVMacroYearofdeath}{%
, \authorbiographyyearofdeathstyle[\AuthorbioKVMacroYearofdeath]%
}{%
\textbf{)} % No year of death given ...unknown or still alive
}%
}{% No year of birth give, but perhaps a year of death?
\ifcsdef{AuthorbioKVMacroYearofdeath}{%
(\textborn ? , \authorbiographyyearofdeathstyle[\AuthorbioKVMacroYearofdeath]%
}{%
% Do nothing
}%
}%
}{% No argument given, do nothing
}%
}%

\NewDocumentCommand{\authorbiography}{+o+m+m+m}{%
\csundef{AuthorbioKVMacroWraplines}%
\setkeys*{authorbio}{#1}%
\IfNoValueTF{#3}{%
\typeout{Warning: No author name}%  Needs improvement
}{%
\refstepcounter{authorbiographies}%
\addcontentsline{bio}{section}{\protect{#3}}% Should be improved!
\immediate\write\authorbibfile{%
\string\begin{tcolorbox}[floatplacement=htp,float,boxrule=0pt,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,arc=0mm,auto outer arc,width=\textwidth]%
%      \string\vskip\AuthorbioTopSkip%
\string\begin{wrapfigure}[\AuthorbioKVMacroWraplines]{\AuthorbioKVMacroImagepos}[\AuthorbioKVMacroOverhang]{\AuthorbioKVMacroImagewidth}%
\string\centering%
\string\includegraphics\expandafter[\XKV@rm]{#2}% Use the \XKV@rm macro for possible remaining macros designed only for \includegraphics
\string\end{wrapfigure}%
\unexpanded{\noindent}%
\unexpanded{\textbf{#3}}%
\writeauthorlifeinfo[#1]%
\string\par^^J
\string\noindent^^J%
\unexpanded{#4}%
%     \string\vskip\AuthorbioBottomSkip%
\string\end{tcolorbox}%
}%
}%
}%

\endinput%


## driver file

\documentclass{scrbook}

\usepackage{authorbiography}%

\usepackage{hyperref}%
\usepackage{blindtext}%

\begin{document}%

\tableofcontents
\clearpage
\listofauthorbiographies
\section{Normal Content}
\blindtext

\authorbiography[scale=0.3,overhang=0pt,wraplines=9,imagewidth=3cm,imagepos=l,yearofbirth={1887},yearofdeath={1961}]{bild_erwin_schroedinger}{Erwin Schr\"odinger}{\blindtext}%

\authorbiography[scale=0.3,wraplines=10,overhang=0pt,imagewidth=5cm,imagepos=r,yearofbirth={1564},yearofdeath={1616}]{CHANDOS3}{William Shakespeare}{\blindtext}%

\authorbiography[scale=0.2,width={4cm},imagewidth=6cm,wraplines=15,imagepos=l,overhang=0pt,yearofbirth={1879},yearofdeath={1955}]{einstein.jpg}{Albert Einstein}{\blindtext}%

\authorbiography[scale=0.1,imagewidth=3cm,wraplines=10,imagepos=r,overhang=0pt,yearofbirth={1879},yearofdeath={1955}]{einstein.jpg}{Albert Einstein}{\blindtext}%

\authorbiography[scale=0.1,imagewidth=3cm,wraplines=10,imagepos=r,overhang=0pt,yearofbirth={1879}]{einstein.jpg}{Albert Einstein}{\blindtext}%

\Authorbiography% Standard behaviour

\Authorbiography[totoc=true,BiographyName={Authors}] % Use some more configurability

\end{document}


Some notes on this 'package'...

It requires still some manual tweaking about the wrapfig parameters, this is not automatically done, the floating works nice, but the last one is not at the top, so this is ... well, bad.

There are many improvements and ideas possible, I will come back to it.

• I haven't tried your code though this looks like a workable solution in lieu of Elsevier providing any biography environment. Perhaps you can comment on the pros/cons of this method versus using the picins package, cited in the blog post linked in the question. – Bryce Thomas Nov 30 '14 at 19:12
• @BryceThomas: I will explain tomorrow (it's too late right now) and I have improved my solution, but's not ready to post it. – user31729 Nov 30 '14 at 20:45
• @BryceThomas: picins is a latex209 package, so outdated and should not be used, in my point of view, regarding the awake of LaTeX3 and other features. – user31729 Dec 1 '14 at 21:27

My springer biography worked with this code after using picins package

add in the preamble

\usepackage{picins}


and at the end of document add these code repetidely for different authors

\par\noindent
\parbox[t]{\linewidth}{
\noindent\parpic{\includegraphics[height=1.5in,width=1in,clip,keepaspectratio]{biography/bio_prg.jpg}}
\noindent {\bf Prateek Raj Gautam}\
received M.Tech. degree in Electronics and Communication Engineering from
Harcourt Butler Technological Institute Kanpur, India in 2011. He is currently pursuing Ph.D.
degree with Motilal Nehru National Institute of Technology Allahabad, Allahabad, India. His
research interest include energy-efficient scheme for wireless sensor network, Image Processing,
CDMA, IDMA, and Brain wave mapping.}
\vspace{4\baselineskip}


give result as

or simply

\par\noindent
\parbox[t]{\linewidth}{
\noindent\parpic{\includegraphics[height=1.5in,width=1in,clip,keepaspectratio]{IMAGE.jpg}}
\noindent {\bf AUTHOR_NAME}\
BIO_TEXT.}
\vspace{4\baselineskip}


I found (as of Jun 2020) a solution included on the cas-dc and cas-sc template/classes. Found example here. You simple add at the end, before \end{document}

\bio{}
Author biography without author photo.
Author biography. Author biography. Author biography.
\endbio

\bio{figs/pic1}
Author biography with author photo.
Author biography. Author biography. Author biography.
\endbio


It works for me in the cas-dc (double column) document template.

Regards!

EDIT: As mentioned in the comments, elsevier class is distinct from the newer cas-dc or cas-sc classes I refer to. A workaround is to add the \bio{..} and \endbio commands from the newer classes into the older elsevier template, they are defined in the file cas-common.sty

Not that straightforward, need to test it. But at least these three new commands need to be copy pasted: \bio, \enbio, and \WrapFigure.

• Welcome to TeX.SE! – Mensch Jun 17 '20 at 9:26
• Note: unfortunately, this is not part of the general elsarticle class, just of this specific template. – oulenz Jun 30 '20 at 12:44
• HI, thanks @Mensch! Thanks also @oulenz! was not aware of the older classe elsevier being distinct. I added a workaround. Greetz – renzoe Jul 1 '20 at 13:53