biblatex-chicago
使用命令引用同一作者的两本书时\gentextcites
缺少撇号。一本书/作者没有问题,不同作者的两本书也能正常工作。这是错误还是我遗漏了什么?
\documentclass{article}
\usepackage{fontspec}
\usepackage[authordate, backend=biber]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{levi-strauss1981,
Address = {New York},
Author = {Lévi-Strauss, Claude},
Publisher = {Harper \& Row},
Title = {The Naked Man: Mythologiques, Vol. 4},
Year = {1981}}
@book{levi-strauss1968,
Address = {New York},
Author = {Lévi-Strauss, Claude},
Publisher = {Harper \& Row},
Title = {The Raw and the Cooked: Mythologiques, Vol. 1},
Year = {1968}}
@book{nimuendaju1952,
Address = {Berkeley \& Los Angeles},
Author = {Nimuendajú, Curt},
Publisher = {University of California Press},
Title = {The Tukuna},
Year = {1952}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
In \gentextcites{levi-strauss1981} magnum opus ... \\
In \gentextcites{levi-strauss1981,levi-strauss1968} magnum opus ... \emph{<= missing genitive here} \\
In \gentextcites{levi-strauss1981,nimuendaju1952} magna opera (sadly it's not magni opi) ...
\printbibliography
\end{document}
在列维-斯特劳斯 (1981) 的巨作中......
在列维-斯特劳斯 (1981, 1968) 的巨作中......< 缺少撇号
在列维-斯特劳斯 (1981) 和尼姆恩达胡 (1952) 的大型歌剧中......
答案1
该问题是由具有以下测试的几个宏引起的
\ifboolexpr{%
togl {cms@gencite}%
and
(
test {\iflastcitekey}%
or
togl {cms@genallnames}%
)
}%
这表明,'s
只有当我们处于最后一个引用键时,才会显示。但是,对于压缩样式,我们最好使用\iffinalcitedelim
,因为它会检查我们是否处于要打印的最后一个名字。
因此上面的代码应该替换为
\ifboolexpr{%
togl {cms@gencite}%
and
(
test {\iffinalcitedelim}%
or
togl {cms@genallnames}%
)
}%
在textcite:authshort
和textcite:citeshort
。
和
\makeatletter
\newbibmacro*{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}}%
\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 ???
\newbibmacro*{textcite:citeshort}{%
\iffieldequals{fullhash}{\cbx@lasthash}%
{\iffieldundef{shorthand}%
{\iffieldundef{postnote}%
{\iffieldequals{fullhash}{\cbx@lastyear}%
{\setunit{\multicitedelim}%
\global\undef\cbx@lastyear}%
{\iffieldequalstr{entrysubtype}{classical}%
{\setunit{\multicitedelim}}%
{\setunit{\compcitedelim}}}}%
{\setunit{\multicitedelim}}%
\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}}%
{\iffieldundef{postnote}%
{\iffieldequals{fullhash}{\cbx@lastyear}%
{\setunit{\multicitedelim}%
\global\undef\cbx@lastyear}%
{\setunit{\compcitedelim}}}%
{\setunit{\multicitedelim}}%
\printtext[bibhyperref]{%
\printfield{shorthand}}}}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}%
{\iffieldundef{shorthand}%
{\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}%
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\usebibmacro{cmscitesortdate}}}%
{\printtext[bibhyperref]{%
\printfield{shorthand}}}}%
{\printnames{labelname}%
\ifboolexpr{%
togl {cms@gencite}%
and
test {\iffinalcitedelim}%
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\iffieldundef{shorthand}%
{\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}}%
{\printtext[bibhyperref]{%
\printfield{shorthand}}}%
\savefield{fullhash}{\cbx@lasthash}}%
\stepcounter{textcitecount}}% Added ???
\setunit{%
\ifbool{cbx:parens}%
{\bibcloseparen\global\boolfalse{cbx:parens}}%
{}%
\textcitedelim}}% Not \multicitedelim ???
\makeatother
数学家协会
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[authordate, backend=biber]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{levi-strauss1981,
Address = {New York},
Author = {Lévi-Strauss, Claude},
Publisher = {Harper \& Row},
Title = {The Naked Man: Mythologiques, Vol. 4},
Year = {1981}}
@book{levi-strauss1968,
Address = {New York},
Author = {Lévi-Strauss, Claude},
Publisher = {Harper \& Row},
Title = {The Raw and the Cooked: Mythologiques, Vol. 1},
Year = {1968}}
@book{nimuendaju1952,
Address = {Berkeley \& Los Angeles},
Author = {Nimuendajú, Curt},
Publisher = {University of California Press},
Title = {The Tukuna},
Year = {1952}}
\end{filecontents}
\addbibresource{\jobname.bib}
\makeatletter
\newbibmacro*{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}}%
\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 ???
\newbibmacro*{textcite:citeshort}{%
\iffieldequals{fullhash}{\cbx@lasthash}%
{\iffieldundef{shorthand}%
{\iffieldundef{postnote}%
{\iffieldequals{fullhash}{\cbx@lastyear}%
{\setunit{\multicitedelim}%
\global\undef\cbx@lastyear}%
{\iffieldequalstr{entrysubtype}{classical}%
{\setunit{\multicitedelim}}%
{\setunit{\compcitedelim}}}}%
{\setunit{\multicitedelim}}%
\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}}%
{\iffieldundef{postnote}%
{\iffieldequals{fullhash}{\cbx@lastyear}%
{\setunit{\multicitedelim}%
\global\undef\cbx@lastyear}%
{\setunit{\compcitedelim}}}%
{\setunit{\multicitedelim}}%
\printtext[bibhyperref]{%
\printfield{shorthand}}}}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}%
{\iffieldundef{shorthand}%
{\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}%
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\usebibmacro{cmscitesortdate}}}%
{\printtext[bibhyperref]{%
\printfield{shorthand}}}}%
{\printnames{labelname}%
\ifboolexpr{%
togl {cms@gencite}%
and
test {\iffinalcitedelim}%
}%
{\thegen}%
{}%
\setunit{%
\global\booltrue{cbx:parens}%
\cms@testspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}%
{\usebibmacro{prenote}}%
{}%
\iffieldundef{shorthand}%
{\iffieldequalstr{entrysubtype}{classical}%
{\usebibmacro{cite:label}}%
{\usebibmacro{cmscitesortdate}}}%
{\printtext[bibhyperref]{%
\printfield{shorthand}}}%
\savefield{fullhash}{\cbx@lasthash}}%
\stepcounter{textcitecount}}% Added ???
\setunit{%
\ifbool{cbx:parens}%
{\bibcloseparen\global\boolfalse{cbx:parens}}%
{}%
\textcitedelim}}% Not \multicitedelim ???
\makeatother
\begin{document}
In \gentextcites{levi-strauss1981} magnum opus ...
In \gentextcites{levi-strauss1981,levi-strauss1968} magnum opus ...
In \gentextcites{levi-strauss1981,nimuendaju1952} magna opera (sadly it's not magni opi) ...
\end{document}
给出
In Lévi-Strauss’s (1981) magnum opus ...
In Lévi-Strauss’s (1981, 1968) magnum opus ...
In Lévi-Strauss (1981) and Nimuendajú’s (1952) magna opera (sadly it’s not
magni opi) ...