\href 内的 \input

\href 内的 \input

我有许多论文,论文封面上都有我的电子邮件,需要\input使用 找到我的电子邮件地址的解决方案\href。这样,我就可以编辑我的电子邮件一次,然后每次编译文件时都可以在我所有的论文中获得最新的电子邮件地址。

可以做这样的事吗?

\href{mailto:{\input{/Path/to/my/file/with/my/email/address.txt}\unskip}}{{\input{/Path/to/my/file/with/my/email/address.txt}\unskip}}

多谢你们。

答案1

该解决方案使用纯 TeX I/O 命令。

\begin{filecontents}{address.txt}
[email protected]
\end{filecontents}
%
\documentclass{article}
\usepackage{hyperref}

\newread\fid

\newcommand{\readfile}[1]% #1 = filename
{\bgroup
  \endlinechar=-1
  \openin\fid=#1
  \read\fid to\filetext
  \loop\ifx\empty\filetext\relax% skip over comments
    \read\fid to\filetext
  \repeat
  \closein\fid
  \global\let\filetext=\filetext
\egroup}

\begin{document}
\readfile{address.txt}
\href{mailto:\filetext}{\filetext}
\end{document}

答案2

通过包将邮件地址从文件提取到宏的解决方案catchfile

\begin{filecontents}{address.txt}
[email protected]
\end{filecontents}

\documentclass{article}
\usepackage{catchfile}
\usepackage[colorlinks]{hyperref}

\CatchFileDef\TheMailAddress{address.txt}{\endlinechar=-1}
% \endlinechar=-1 suppresses spaces by line ends

\begin{document}
\href{mailto:\TheMailAddress}{John Doe $\langle$\TheMailAddress$\rangle$}
\end{document}

结果

相关内容