Configuración de comando personalizado para nombre y correos electrónicos

Configuración de comando personalizado para nombre y correos electrónicos

Me gusta configurar y optimizar los comandos de manera que se obtenga el mismo resultado del siguiente MWE sin usar comandos separados para insertar el nombre y el correo electrónico del profesor.

\documentclass{report}
\usepackage{xparse}
\usepackage{hyperref}

\newcommand{\profname}[1]{ \newcommand{\profnameloc}{#1} }
\newcommand{\profemail}[1]{ \newcommand{\profemailloc}{#1} }

\NewDocumentCommand\printprofemail{O{}O{}}{
            \texttt{\href{mailto:\profemailloc}{\profemailloc}}
}

\NewDocumentCommand{\prof}{mO{}}{\newcommand\profloc{\textbf{\href{mailto:#2}{#1}}}}


\begin{document}

\title{Custom Command}
\prof{Dr. X}[[email protected]]
\profname{Dr. X}
\profemail{[email protected]}

\maketitle

The course is taught by \profloc. His name is \profnameloc and his email is \printprofemail.

\end{document}

Quiero decir, mi entrada deseada:

\documentclass{report}

% [necessary packages and commands]

\begin{document}

\title{Custom Command}
\prof{Dr. X}[[email protected]]

\maketitle

The course is taught by \profloc. His name is \profnameloc and his email is \profemailloc.

\end{document}

Mi resultado deseado es como:

The course is taught by (Dr. X)[textbf and hyperlinked]. His name is Dr. X and his email is ([email protected])[texttt and hyperlinked].

Quiero usar el correo electrónico del profesor como argumento opcional en el comando \profde modo que no genere un hipervínculo en blanco si solo uso el comando \prof{Dr. X}. Además, me gusta optimizarlo \profmaillocpara imprimir igual que \printprofmailmi MWE. Quiero decir, si el correo electrónico se inserta como , entonces debería mostrar la dirección de correo electrónico con un hipervínculo y si no se proporciona el correo electrónico, el\prof{Dr. X}[[email protected]]\profemailloc\profemailloc no debería imprimir nada.

Mi resultado deseado si \prof{Dr. X}se usa en lugar de :\prof{Dr. X}[[email protected]]

The course is taught by (Dr. X)[textbf but not hyperlinked]. His name is Dr. X and his email is .

También cabe señalar que mi MWE actual genera problemas de espacios en blanco después de los comandos, estos también deberían solucionarse.

información relacionada