我使用该hyperref
包突出显示引文中的 URL、缩写和简写,以方便在文档中使用,并且我使用该包biblatex-sbl
获取 SBL 格式的引文。该hyperref
包通常可以很好地突出显示引文中的shortjournal
或字段等内容,但它在尝试突出显示引文字段shortseries
时似乎会出错:短文标题的开头引文与标题的其余部分一起突出显示,但结尾引文没有突出显示。shorttitle
article
为了可重复性,我附加了一些最小(非)工作示例的代码,其中包括一个参考书目文件和一个 TeX 文件。
bibliography.bib
@article{
MWE20,
author = {Joey McCollum},
title = {A Minimal (Non-)Working Example},
shorttitle = {MWE},
journal = {TeX Stack Exchange Quarterly},
year = {2020},
pages = {1--2}
}
mwe.tex
\documentclass[12pt]{article}
%Include support for hyperreferences:
\usepackage{hyperref}
%Include support for citation format:
\usepackage[style=sbl, ibidtracker=false, idemtracker=false, citepages=omit, backend=biber]{biblatex}
%Add the bibliography source file:
\addbibresource{./bibliography.bib}
\begin{document}
This is a minimal (non-)working example.\footnote{\cite{MWE20}.} It is intended to illustrate unexpected behavior in \LaTeX.\footnote{\cite[2]{MWE20}.}
\printbibliography
\end{document}
我使用 TeXLive 2020 版本的 pdfLaTeX 和相应版本的 XeLaTeX 排版;两个引擎都会重现这种行为。
我猜想这个问题与所做的替换有关,biblatex-sbl
以确保引号中的标题后面的逗号位于引号内(符合美式英语风格),但我不能肯定。事实上,当前的突出显示有点难看。如果有一种方法可以更一致地突出显示缩短的标题,无论是通过同时包含周围的引号和逗号,还是仅突出显示标题本身,而不包含周围的引号和逗号,那就太好了。有没有简单的方法可以解决这个问题,或者这是一个必须在其中一个软件包中修复的错误?
编辑:正如 moewe 在评论中指出的那样,这是一个已知的错误biblatex
好几年了(https://github.com/plk/biblatex/issues/499),并且它会影响除 之外的其他引用样式sbl
(例如verbose-note
)。
答案1
调整@UlrikeFischer 和@moewe 的解决方案似乎确实有效:
尝试这个:
\documentclass[12pt]{article}
\begin{filecontents}[overwrite]{\jobname.bib}
@article{MWE20,
author = {Joey McCollum},
title = {A Minimal (Non-)Working Example},
shorttitle = {MWE},
journal = {TeX Stack Exchange Quarterly},
year = {2020},
pages = {1-2}
}
\end{filecontents}
\usepackage[colorlinks]{hyperref}
\usepackage[style=sbl, ibidtracker=false, idemtracker=false, citepages=omit, backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\makeatletter
\renewbibmacro*{shorttitle}{%
\iftoggle{blx@useshorttitle}
{\iffieldundef{shorttitle}
{\iffieldundef{title}
{}
{\ifbool{bbx@inset}
{\printtext{\bibhyperlink{\strfield{setkey}}
{\printtext[title]{\printfield[titlecase]{title}}}}}
{\printtext[title]{%
\printtext[bibhyperlink]{\printfield[titlecase]{title}}}}}}
{\ifbool{bbx@inset}
{\printtext{\bibhyperlink{\strfield{setkey}}
{\printtext[title]{\printfield[titlecase]{shorttitle}}}}}
{\printtext[title]{%
\printtext[bibhyperlink]{\printfield[titlecase]{shorttitle}}}}}%
\newunit}
{}}
\makeatother
\begin{document}
\null\vfill
This is a minimal (non-)working example \autocite{MWE20}. It is intended to
illustrate unexpected behavior in \LaTeX \autocite[2]{MWE20}.
\printbibliography
\end{document}