我正在写一篇论文,我想使用 类型引用一本书中的两次内容@inbook
。有一次我想引用一个普通章节。这很好用,结果如下
[1] 作者A。“标题A”。出自:书名。第 1 章。
另一段引文是附录。我的问题是我无法在参考书目中用附录代替章节。我希望有类似
[2] 作者 B。“标题 B”。出自:书名。附录 4。
但在章节字段中,附录 4 只是一个丑陋的 A4
[2] 作者 B。“标题 B”。出自:书名。第 A4 章。
我设法将 Chap. 更改为其他字符串,\DefineBibliographyStrings
但显然这会更改所有 Chap. 条目,因此无法解决我的问题。有没有办法只更改一个条目?还是我必须创建一个新类型?
我的问题与这个但作者的观点不同,所以我不能使用那里提出的解决方案。
针对我陷入困境的情况的 MWE:
\documentclass{scrbook}
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{refs.bib}
@Inbook{CiteA,
Title = {TitleA},
Author = {AuthorA},
Booktitle = {Booktitle},
Chapter = {1},
}
@Inbook{CiteB,
Title = {TitleB},
Author = {AuthorB},
Booktitle = {Booktitle},
Chapter = {A4},
}
\end{filecontents}
\addbibresource{refs.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
答案1
还可以biblatex
根据文件中设置的选项来判断是否打印“附录”或“章节” .bib
。
首先,我们定义一个开关(切换),用于在每个条目的基础上从“章节”切换到“附录”
\newtoggle{bib@appendix} % fallback is false
\DeclareEntryOption{appendix}[true]{\settoggle{bib@appendix}{#1}}
显然,我们需要“附录” bib 字符串(与上面的 Guido 不同,我们将在单独的.lbx
文件中实现它,因此我们可以同时拥有完整版和缩写版的字符串;如果您愿意,可以使用 Guido 的版本)
\ProvidesFile{english-append.lbx}[2014/05/22 english with appendix]
\InheritBibliographyExtras{english}
\NewBibliographyString{appendix}
\DeclareBibliographyStrings{%
inherit = {english},
appendix = {{appendix}{app\adddot}},
}
该.lbx
文件必须放在 LaTeX 可以找到的地方 - 在下面的 MWE 中,它将使用 创建filecontents
,如果您打算更频繁地使用它,您确实应该将它保存在适当的目录中。然后可以通过 加载它\DeclareLanguageMapping{english}{english-append}
。
\DeclareFieldFormat{chapter}{%
\iftoggle{bib@appendix}
{\bibstring{appendix}}
{\bibstring{chapter}}~#1}
然后我们可以通过切换“附录”字符串options = {appendix}
,CiteB
看起来像这样
@Inbook{CiteB,
title = {TitleB},
author = {AuthorB},
booktitle = {Booktitle},
chapter = {A4},
options = {appendix}
}
平均能量损失
\documentclass{scrbook}
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Inbook{CiteA,
Title = {TitleA},
Author = {AuthorA},
Booktitle = {Booktitle},
Chapter = {1},
}
@Inbook{CiteB,
title = {TitleB},
author = {AuthorB},
booktitle = {Booktitle},
chapter = {A4},
options = {appendix}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{filecontents*}{english-append.lbx}
\ProvidesFile{english-append.lbx}[2014/05/22 english with appendix]
\InheritBibliographyExtras{english}
\NewBibliographyString{appendix}
\DeclareBibliographyStrings{%
inherit = {english},
appendix = {{appendix}{app\adddot}},
}
\end{filecontents*}
\DeclareLanguageMapping{english}{english-append}
\newtoggle{bib@appendix} % fallback is false
\DeclareEntryOption{appendix}[true]{\settoggle{bib@appendix}{#1}}
\DeclareFieldFormat{chapter}{%
\iftoggle{bib@appendix}
{\bibstring{appendix}}
{\bibstring{chapter}}~#1}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
答案2
这里有一个解决方案:想法是chapter
根据key
条目的值(存储在entrykey
伪字段中)来改变字段的打印方式。
首先,我们为附录创建一个新的 biblatex 字符串。
\NewBibliographyString{appendix}
\DefineBibliographyStrings{english}{%
appendix = {Appendix},
}
然后,我们更改格式指令以chapter
使用开关(条件)来处理字段的特定值entrykey
。
\DeclareFieldFormat{chapter}{%
\iffieldequalstr{entrykey}
{CiteB}
{\bibstring{appendix}}
{\bibstring{chapter}}~#1}
给定 MWE 的输出是: