将 @inbook 中一个 BibLaTex 条目的“章节”更改为“附录”

将 @inbook 中一个 BibLaTex 条目的“章节”更改为“附录”

我正在写一篇论文,我想使用 类型引用一本书中的两次内容@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 的输出是:

在此处输入图片描述

相关内容