在 \cite 中输入到 \href 的 URL 中的哈希值

在 \cite 中输入到 \href 的 URL 中的哈希值

我使用了biblatexhyperref。如果我\href{<url>}{<name>}在 URL 包含 的地方输入#,我会得到想要的结果,但如果我输入\cite[\href{<url>}{<name>}]{<label>}(再次使用#<url>),我会得到一个错误。发生了什么?这是一个 MWE:

\usepackage{filecontents}
\usepackage{hyperref}
\usepackage[style=alphabetic,sorting=nty]{biblatex}

\begin{filecontents}{bibliography.bib}
@book{qui,
    author = {Cervantes, Miguel de},
    title = {Don Quijote de la Mancha},
    publisher = {Ediciones Bruguera},
    year = {2001}
}
\end{filecontents}

\addbibresource{bibliography.bib}

\begin{document}

\cite[\href{https://es.wikipedia.org/wiki/Don_Quijote_de_la_Mancha#El_lugar_de_La_Mancha}{wiki}]{qui}

\printbibliography

\end{document}

答案1

好的,如果在 url\之前添加,一切就都正常了,就像 一样。#\cite[\href{https://es.wikipedia.org/wiki/Don_Quijote_de_la_Mancha\#El_lugar_de_La_Mancha}{wiki}]{qui}

答案2

我认为你最好采取一种不同于你自己的答案:(a)url在书目条目内提供一个字段,(b)加载xurl包以允许在长 URL 字符串中的任意点进行换行,以及(c)使用普通\cite指令,即一个没有包含指令的可选参数\href。这样,​​您就不必担心必须转义各种 TeX 特殊字符,例如#

在此处输入图片描述

显然,您可以自由地选择与citecolor下面urlcolor提供的示例代码中不同的颜色。

\documentclass{article}
\begin{filecontents}[overwrite]{bibliography.bib}
@book{qui,
    author = {Miguel de Cervantes},
    title  = {Don Quijote de la Mancha},
    publisher = {Ediciones Bruguera},
    year   = {2001},
    url    = {https://es.wikipedia.org/wiki/Don_Quijote_de_la_Mancha#El_lugar_de_La_Mancha}
}
\end{filecontents}

\usepackage[T1]{fontenc}
\usepackage{xurl}
\usepackage[colorlinks,citecolor=red,urlcolor=blue]{hyperref}
\usepackage[style=alphabetic,sorting=nty]{biblatex}
\addbibresource{bibliography.bib}

\begin{document}
\noindent
\cite{qui}
\printbibliography
\end{document}

相关内容