biblatex 中机构后的标点符号和论文类型识别

biblatex 中机构后的标点符号和论文类型识别

我有两个问题。我试图使我的大学论文符合参考书目格式。我决定改用 biblatex+biber,因为 .bbl 格式的文件对我来说是个谜。

我想创建一个如下所示的论文格式: 正确的格式

但经过多次调整后我得到的结果是这样的: 在此处输入图片描述

请注意,我的结果以逗号结尾。它应该是标点符号,如第一张图片所示。

institution我使用的是 authoryear 样式,并尝试使用编辑格式\DeclareFieldFormat。但无论我做什么似乎都无济于事。这不会影响机构字段及其尾随逗号的格式。

我注意到论文是standard.bbx使用journal+location+date宏格式化的。这会\addcomma\addspace 在机构后面添加一个。这解释了我的结果。(我想它期望在那之后有一个日期)

我的第一个问题是,当它后面没有日期时,如何将其更改为标点符号,而不影响任何其他实际上应该有逗号的类型?

我的第二个问题与这个例子有关。

biblatex 中定义了两种类型的论文:mathesis 和 phdthesis。在我的 bibfile 中,论文的类型是指定的,既在条目类型字段中(如 bibtex 中),也在条目的类型字段中。我怎样才能让 biblatex 检查它是哪种类型并为每个类型打印自定义文本?它应该是Diss.针对 phd 和Masters thesis另一个。还有第三种:Licentiate。我想如果我可以让 biblatex 检查类型字段,我也可以让它区分。但我该怎么做呢?现在它只是打印类型字段中的内容。

我的tex功底不是很深厚。

这是我用来创建参考书目的文件的 MWE:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear,mincitenames=1,maxcitenam>es=2,maxbibnames=999,%
uniquename=false,uniquelist=false,firstinits=true,sorting=nyt,url=fa>lse,isbn=false,doi=false,%
dashed=false]{biblatex}
\DeclareNameAlias{sortname}{last-first}
\AtEveryBibitem{%
  \clearfield{note}%
}
\renewcommand*{\bibinitdelim}{}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1\isdot}
\DeclareFieldFormat
  [thesis]
  {title}{\mkbibemph{#1\isdot}}  
\DeclareFieldFormat[thesis]{pages}{}
\addbibresource{test.bib}
\author{Minime}
\begin{document}
\parencite{Ahlgren2003LCAogras} MasterThesis
\printbibliography
\end{document}

这是test.bib文件:

@Thesis{Ahlgren2003LCAogras,
  Title   = {Environmental impact of chemical and mechanical weed control in agriculture : a comparing study using life cycle assessment methodology},
  Author  = {Ahlgren, Serina},
  School  = {Swedish University of Agricultural Sciences, SLU},
  Year    = {2003},
  Address = {Uppsala},
  Type    = {Masters thesis},
  ISSN    = {1101-0843},
  Pages   = {57},
  Publisher = {Institutionen för lantbruksteknik},
  Url     = {http://www-mat21.slu.se/publikation/pdf/LCAogras.pdf},
  Volume  = {2003:05}
}

答案1

您的第一个问题来自于您使用

\DeclareFieldFormat[thesis]{pages}{}

删除该pages字段。这会导致biblatex不打印该pages字段,但认为它确实打印了该字段,严重扰乱了标点符号跟踪,如您所见。

更好的解决方案是使用

\AtEveryBibitem{%
  \clearfield{note}%
  \ifentrytype{thesis}
    {\clearfield{pages}}
    {}
}

请注意,在您的示例中,问题在于您写了,Pages = {57},但我确信您真正想要的是pagetotal = {57},

pagetotal表示“作品的总页数”,而pages表示“一个或多个页码或页码范围。如果作品是作为另一部作品的一部分出版的,例如期刊或合集中的文章,则此字段包含该另一部作品中的相关页码范围。它还可用于将引用限制为作品的特定部分(例如书中的章节)。”,第 21-22 页biblatex文档

如果您决定在这里使用pagetotal,并且想要摆脱所有类型的该字段,请使用

\AtEveryBibitem{%
  \clearfield{note}%
  \clearfield{pagetotal}%
}

如果你只希望清除它@thesis,那么你需要

\AtEveryBibitem{%
  \clearfield{note}%
  \ifentrytype{thesis}
    {\clearfield{pagetotal}}
    {}
}

对于你的第二个问题。

您可以使用三个预定义的关键字(如第 216 页所述)

mathesis与‘硕士论文’一词等同的表达。

phdthesis“博士论文”、“博士论文”、“博士论文”等术语。

candthesis与“候选论文”一词等同的表达方式。用于没有明确与硕士或博士水平相当的“候选”学位。

这些可以通过以下方式重新定义

\DefineBibliographyStrings{english}{
  phdthesis= {Diss\adddot},
}

然后,您可以定义自己的关键字licentiate(如果它不适合candthesis),只需

\NewBibliographyString{licentiate}{
\DefineBibliographyStrings{english}{
  licentiate = {Licentiate thesis},
}

如果biblatex无法找到适合您输入字段的字符串type,它只会打印您所写的内容。

平均能量损失

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear,mincitenames=1,maxcitenames=2,maxbibnames=999,%
uniquename=false,uniquelist=false,firstinits=true,sorting=nyt,url=false,isbn=false,doi=false,%
dashed=false]{biblatex}

\DeclareNameAlias{sortname}{last-first}

\renewcommand*{\bibinitdelim}{}

\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1\isdot}

\DeclareFieldFormat
  [thesis]
  {title}{\mkbibemph{#1\isdot}}  

\AtEveryBibitem{%
  \clearfield{note}%
  \clearfield{pagetotal}%
}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Thesis{Ahlgren2003LCAogras,
  Title   = {Environmental impact of chemical and mechanical weed control in agriculture : a comparing study using life cycle assessment methodology},
  Author  = {Ahlgren, Serina},
  School  = {Swedish University of Agricultural Sciences, SLU},
  Year    = {2003},
  Address = {Uppsala},
  Type    = {mathesis},
  ISSN    = {1101-0843},
  pagetotal   = {57},
  Url     = {http://www-mat21.slu.se/publikation/pdf/LCAogras.pdf},
}
@Thesis{fjae,
  Title   = {Unsteady simulations of the turbulent flow in the exhaust system of an {IC}-engine for optimal energy utilization},
  Author  = {Johan Fjällman},
  School  = {KTH Mechanics},
  date    = {2013-06},
  Address = {Stockholm},
  Type    = {licentiate},
  Url     = {http://www.diva-portal.org/smash/get/diva2:624491/FULLTEXT01.pdf},
}
@thesis{geer,
  author       = {de Geer, Ingrid},
  title        = {Earl, Saint, Bishop, Skald~-- and Music},
  type         = {phdthesis},
  institution  = {Uppsala Universitet},
  date         = 1985,
  subtitle     = {The {Orkney Earldom} of the Twelfth Century. {A} Musicological
                  Study},
  location     = {Uppsala},
}
@Thesis{stap,
  Title   = {Debian Code Search},
  Author  = {Michael Stapelberg},
  School  = {Fakultät für Informatik, Hochschule Mannheim},
  date    = {2012-12-19},
  Address = {Mannheim},
  Type    = {BSc Thesis},
  Url     = {https://codesearch.debian.net/research/bsc-thesis.pdf},
}
\end{filecontents*}


\addbibresource{\jobname.bib}

\NewBibliographyString{licentiate}{
\DefineBibliographyStrings{english}{
  phdthesis= {Diss\adddot},
  licentiate = {Licentiate thesis},
}


\begin{document}
\parencite{Ahlgren2003LCAogras,fjae,geer,stap}
\printbibliography
\end{document}

平均能量损失

在此处输入图片描述

这里

相关内容