Biblatex 1987/1988 学年,以斜线作为日期

Biblatex 1987/1988 学年,以斜线作为日期

至少在某些领域,学校年份通常用斜线表示,例如“1987/1988”。但是,Biblatex 在日期字段中使用斜线来表示范围,例如 date={1987/1988} → “1987–1988”。有没有办法在相关情况下获得“1987/1988”,同时保持范围的“1987–1988”格式?例如,@thesis 可以使用“/”,否则可以使用“–”。或者以某种方式使 date={1987\addslash1988} 等不会引发错误?

梅威瑟:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@thesis{JohnThesis,
        author = {John Author},
        title = {A thesis},
        date = {2007/2008},
    }
@thesis{JaneThesis,
        author = {Jane Author},
        title = {A thesis},
        date = {2007\addslash2008},
    }
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

结果:

在此处输入图片描述

答案1

您暗示您的格式选择仅与类相关@thesis。那么问题就变成了:

如何做到这一点biblatex标记用斜线表示日期范围 当且仅当该课程是@thesis;否则使用默认短划线

有一个恰当的方法是使用内置的相应命令biblatex。从文档 3.12.3

\bibdaterangesep:用于日期范围的特定语言分隔符。默认为\textendash除以下日期格式外,所有日期格式的默认分隔符为ymd默认为\slash

我们想要定义\bibdaterangesep有条件地定义:如果该类是@thesis,它应该实现为\slash否则它默认为\textendash

请注意,文档建议通过将更改包装在\DefineBibliographyExtras{english}{...}(或您的相关语言)中来重新定义此命令。这是因为\bibdaterangesep和朋友是特定于语言的格式化命令。

以下是 MWE,略作修改以显示@thesis与其他类别之间的差异:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@thesis{JohnThesis,
        author = {John Author},
        title = {A thesis},
        date = {2007/2008},
    }
@article{JaneArticle,
        author = {Jane Author},
        title = {Not a thesis},
        date = {2007/2008},
        journaltitle = {Dates and Punctuation Studies},
    }
\end{filecontents}
\addbibresource{\jobname.bib}

\DefineBibliographyExtras{english}{%
\renewcommand*{\bibdaterangesep}{%
  \ifentrytype{thesis}
    {\slash}              % if @thesis, \slash
    {\textendash}}}       % otherwise, keep the default
    
\begin{document}
\nocite{*}
\printbibliography
\end{document}

答案2

一个快速的解决方案是使用字段year而不是date,因为第一个接受斜杠:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
    @thesis{JohnThesis,
        author = {John Author},
        title = {A thesis},
        date = {2007/2008},
    }
    @thesis{JaneThesis,
        author = {Jane Author},
        title = {A thesis},
        year = {2007/2008},
    }
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

给出:

带斜线的年份

笔记:这可能会导致一些条目排序不正确,但大多数情况下效果很好。

相关内容