biblatex 中的页面名称为“标题页”,而不是“1”

biblatex 中的页面名称为“标题页”,而不是“1”

我有一个标题页,它不应该有真正的“页码”。因此,在标题页之后,我将页面计数器设置为 1,方法是

\setcounter{page}{1}

当然,在内部,标题页仍然有数字 1,这通常并不重要(因为它不显示它)。

现在我遇到了一个问题:在标题页上,我有一张图像,我需要用一小段文字来注明作者,比如“图片由 bla 提供...”,我想使用 biblatex 来实现这一点,因为,嗯...它是一个来源,使用起来非常方便。但由于它出现的内部页码是 1,因此在参考书目中它看起来就像是第 1 页。

有没有办法让显示“(见标题页)”而不是“(见第 1 页)”?由于页面是一个计数器,显然我无法将其设置为字符串(我无论如何都尝试过,但当然没有用)。

答案1

以下解决方案操纵\thepagepage计数器。标题页的名称设置在中\titlepagename。如果不进行进一步调整,标题页图像的参考书目条目中的反向引用看起来会有点不对劲:“引用于标题页”,即页面会被提及两次。为了解决这个问题,我还做了一个\renewbibmacro*{pageref}(通过修改代码biblatex.def)。从那里,控制流到\printlist[list:citon]{pageref}自定义列表格式 list:citon打印常规的反向引用简介(“cit. on p.”或“cit. on pp.”)或自定义字符串\myciton(“cit. on”)。如果在标题页上有引用,则采用后者。

如果标题页和某些编号页上均未引用任何内容,则此解决方案效果良好。在后一种情况下,反向引用将看起来像“引用标题页,1”。更好的格式可能是“引用标题页,1 页”,但实现它可能并不简单。

示例代码的输出

\documentclass{article}
\usepackage[paperwidth=12cm,paperheight=6.5cm]{geometry}
\usepackage[backend=biber,style=authoryear,backref=true]{biblatex}
\usepackage{graphicx}
\usepackage{filecontents}
\usepackage{lipsum}
\usepackage{hyperref}

\newcommand{\titlepagename}{title page}
\newcommand{\myciton}{cit. on}
\newcommand{\mybibstring}{}

\DeclareListFormat{list:citon}{%
    \ifnumless{\value{listcount}}{\value{liststop}}
    {\ifdefstring{\titlepagename}{#1}{\myciton\ppspace\listbreak}{}}
    {\ifdefstring{\titlepagename}{#1}{\myciton}{\mybibstring}\ppspace}}
\renewbibmacro*{pageref}{%
  \iflistundef{pageref}
    {}
    {\printtext[parens]{%
       \ifnumgreater{\value{pageref}}{1}
         {\renewcommand{\mybibstring}{\bibstring{backrefpages}}}
         {\renewcommand{\mybibstring}{\bibstring{backrefpage}}}%
       \printlist[list:citon]{pageref}
       \printlist[pageref][-\value{listtotal}]{pageref}}}}

\begin{filecontents}{\jobname.bib}
@Misc{eximga,
  author = {Martin Scharrer},
  title = {example-image-a},
  howpublished = {In CTAN package \texttt{mwe}},
  year = {2012},
}
@Article{author2013,
  author = {Andy Author},
  title = {About Apparatus},
  journal = {Journal of Interesting Stuff},
  year = {2013},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}

\let\theoldpage\thepage
\renewcommand{\thepage}{\titlepagename}

\label{titlepage}
\includegraphics[width=5cm]{example-image-a}

Image courtesy of \textcite{eximga}
\thispagestyle{empty}\newpage

\setcounter{page}{1}
\let\thepage\theoldpage

\phantomsection\label{firstpage}
The text starts here. Citing \textcite{author2013}.

\lipsum[1]

Citing \textcite{author2013} again.

\printbibliography
\end{document}

相关内容