该包doi
呈现\doi{10.1000/182}
为doi:10.1000/182
,其中10.1000/182
是带框或彩色的超链接。
超链接是否也可以包含doi:
部分?省略该部分与从常规超链接中省略一样奇怪http://
。这也违反了DOI 标准,这意味着URI 表示的标准 IETF 指南申请。
\documentclass{article}
\usepackage{doi}
\begin{document}
\bibliographystyle{IEEEtran}
\begin{thebibliography}{99}
\bibitem{bogus} Smith, J. ``Title,'' in J. Bogosity 42(7). \doi{10.1000/182}
\end{thebibliography}
\end{document}
我在 Ubuntu 14 (pdfTeX 3.1415926-2.5-1.40.14) 上使用 pdflatex,并使用 Ubuntu 软件包 texlive-latex-extra 中的 doi.sty 2007/07/24。该文件 doi.sty 很短,因此可以期待修改该文件的答案。
答案1
虽然您可以使用\doitext
来修改 doi 之前显示的内容,但它永远不会在超链接内。要模拟doi.sty
(不使用它),您可以执行以下操作:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand{\doitext}{doi:}
\newcommand*{\doi}{%
\begingroup
\lccode`\~=`\#\relax
\lowercase{\def~{\#}}%
\lccode`\~=`\_\relax
\lowercase{\def~{\_}}%
\lccode`\~=`\<\relax
\lowercase{\def~{\textless}}%
\lccode`\~=`\>\relax
\lowercase{\def~{\textgreater}}%
\lccode`\~=0\relax
\catcode`\#=\active
\catcode`\_=\active
\catcode`\<=\active
\catcode`\>=\active
\@doi
}
%% this is the actual command which processes the argument, with the catcodes
%% set in the previous command
%% it closes the group, and spits out the url.
\def\@doi#1{%
\let\#\relax
\let\_\relax
\let\textless\relax
\let\textgreater\relax
\edef\x{\toks0={{#1}}}%
\x
\edef\#{\@percentchar23}%
\edef\_{_}%
\edef\textless{\@percentchar3C}% instead of {\string<} for Apple
\edef\textgreater{\@percentchar3E}% instead of {\sting>} for Apple
\edef\x{\toks1={\noexpand\href{http://dx.doi.org/#1}}}%
\x
\edef\x{\endgroup\the\toks1 {\doitext\the\toks0}}%
\x
}
\makeatother
\begin{document}
\doi{test}
\end{document}
我唯一改变的是使用 进行分组\doitext
。前面的\the\toks0
宏包含命令,然后该命令应用于整个组。\the\toks1
\href
您可能需要联系其中一位维护人员,请他们在 的未来版本中将此作为选项doi.sty
。
答案2
您可以使用\doitext
命令来修改显示的内容。您可能需要使用类似以下内容的命令:\renewcommand*{\doitext}[1]{doi: #1}
请参阅http://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/contrib/doipubmed/doc/doipubmed.pdf更多细节。