我有以下内容:
\documentclass[11pt,a4paper,oneside,notitlepage]{book}
\usepackage[authordate,backend=biber,cmsdate=both,useprefix=false,ibidtracker=false]{biblatex-chicago}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{armstrong:universals,
author = {Armstrong, D.\ M.},
title = {Universals},
subtitle = {An Opinionated Introduction},
year = 1989,
location = {Boulder, CO},
publisher = {Westview Press},
}
@book{armstrong:truth_and_truthmakers,
author = {Armstrong, D.\ M.},
title = {Truth and Truthmakers},
year = 2004,
location = {cambridge, UK},
publisher = {Cambridge University Press},
}
\end{filecontents}
\begin{document}
\parencites[94]{armstrong:universals}[see also][46--48]{armstrong:truth_and_truthmakers}
\end{document}
输出以下内容:
当然,该\parencites
命令会打印两次作者姓名。但这并不是引用同一作者的不同出版物的通常方式:作者姓名应仅出现在第一个引用的出版物中。
但是,我不能简单地使用它,\parencite
因为我需要通过“另见”来介绍第二个参考文献。我也不能使用它\citeyear
作为第二个参考文献,因为我希望年份能够超链接参考文献列表中的条目(我尚未将其包含在 MWEB 中)。
我确信我遗漏了一个简单的解决方案。
答案1
正如您提到的,您无法使用的原因\citeyear
是您希望它的超链接能够工作,然后您可以使用\cite*
它将在您的设置中按预期工作:
\documentclass[11pt,a4paper,oneside,notitlepage]{book}
\usepackage[authordate,backend=biber,cmsdate=both,useprefix=false,ibidtracker=false]{biblatex-chicago}
\usepackage{hyperref}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{armstrong:universals,
author = {Armstrong, D.\ M.},
title = {Universals},
subtitle = {An Opinionated Introduction},
year = 1989,
location = {Boulder, CO},
publisher = {Westview Press},
}
@book{armstrong:truth_and_truthmakers,
author = {Armstrong, D.\ M.},
title = {Truth and Truthmakers},
year = 2004,
location = {cambridge, UK},
publisher = {Cambridge University Press},
}
\end{filecontents}
\begin{document}
\parencites[94]{armstrong:universals}[see also][46--48]{armstrong:truth_and_truthmakers}
(\cite[94]{armstrong:universals}; \cite*[see also][46--48]{armstrong:truth_and_truthmakers})
\printbibliography
\end{document}
导致:
答案2
你会发现
\parencites[94]{knuth:ct:a}[46--48]{knuth:ct:b}
给出你期望的输出,即
(Knuth 1984,94;1986,46-48)
但事情出了问题
\parencites[94]{knuth:ct:a}[see][46--48]{knuth:ct:b}
即,当您在后面的引文中有前注论证时。我猜这里的想法是,第二次引文的年份(引文标签)可能会被前后注淹没。
biblatex
即使引文中有预先说明,你也可以省略名字
\documentclass[11pt,a4paper,oneside,notitlepage]{book}
\usepackage[authordate,backend=biber,cmsdate=both,useprefix=false,ibidtracker=false]{biblatex-chicago}
\addbibresource{biblatex-examples.bib}
\makeatletter
\renewbibmacro*{cite:init}{%
\ifnumless{\value{multicitecount}}{2}%
{\global\boolfalse{cbx:parens}%
\global\undef\cbx@lasthash%
\global\undef\cbx@lastyear}%
{}}%
\makeatother
\begin{document}
\parencites[94]{knuth:ct:a}[46--48]{knuth:ct:b}
\parencites[94]{knuth:ct:a}[see][46--48]{knuth:ct:b}
\end{document}
事实证明,如果\textcites
使用的话,还需要做更多的工作:
\makeatletter
\renewbibmacro*{textcite:authshort}{%
\iffieldequals{fullhash}{\cbx@lasthash}%
{\iffieldundef{postnote}%
{\iffieldequals{fullhash}{\cbx@lastyear}%
{\setunit{\multicitedelim}%
\global\undef\cbx@lastyear}%
{\iffieldequalstr{entrysubtype}{classical}%
{\setunit{\multicitedelim}}%
{\setunit{\compcitedelim}}}}%
{\setunit{\multicitedelim}}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}}%
{\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}%
{\iffieldequalstr{entrysubtype}{classical}%
{\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\usebibmacro{cite:label}}%
{\usebibmacro{cite:label}%
\ifboolexpr{%
togl {cms@gencite}%
and
(
test {\iffinalcitedelim}%
or
togl {cms@genallnames}%
)
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\usebibmacro{cmscitesortdate}}}%
{\printnames{labelname}%
\ifboolexpr{%
togl {cms@gencite}%
and
(
test {\iffinalcitedelim}%
or
togl {cms@genallnames}%
)
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}%
\savefield{fullhash}{\cbx@lasthash}}}%
{\printfield{shorthand}%
\ifboolexpr{%
togl {cms@gencite}%
and
(
test {\iffinalcitedelim}%
or
togl {cms@genallnames}%
)
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}%
\savefield{fullhash}{\cbx@lasthash}}%
\stepcounter{textcitecount}}% Added ???
\setunit{%
\ifbool{cbx:parens}%
{\bibcloseparen\global\boolfalse{cbx:parens}}%
{}%
\textcitedelim}}% Not \multicitedelim ???
\makeatother