双花括号与单花括号和引号在字母大小写校正中的不同行为

双花括号与单花括号和引号在字母大小写校正中的不同行为

我已经下载并使用了来自爱思唯尔。为了引用参考文献,我.bib从 Web of Science 导出了以下格式的参考文献。我特意将其改为“AB溶质” 至 “AB溶质”来测试第二个大写字母是否会被更正。我意识到,如果使用一对单花括号{}或双引号,""则会进行更正,但如果使用双花括号,{{}}则不会。由于从 Web of Science 复制很容易,我不想在复制后更改格式.bib。有没有办法解决这个问题?

情况1:

@article{ Label,
  title = {ABsolute}
}

案例 2:

@article{ Label,
  title = "ABsolute"
}

案例三:

@article{ Label,
  title = {{ABsolute}}      
}

输出:

情况 1:绝对

情况 2:绝对

案例 3:ABsolute

编辑1:不幸的是,Web of Science 提供的标题是大写的。

编辑2:需要澄清的是,我没有其他方法可以避免使用双花括号。有没有办法仍然使用双花括号,但让 Latex 像 1 和 2 的情况那样去掉大写字母?

编辑3:解释了同样的问题这里。但据说要避免使用双花括号,这对我来说是不可能的。

编辑4:以下是 Web of Science 的某人写给我的邮件内容:

根据我们的软件开发工程师的说法,我们需要将这些双括号保留在 BibTex 导出语法中,下面提供了完整的解释。

  1. 外括号只是引号。换句话说,在 BibTeX 中是这样的:

title = {临阵退缩}

意思和这个完全一样:

title = “临阵退缩”

  1. 额外的内括号可防止 BibTeX 调整其中字母的大小写。它们用于许多常见情况,其中放置位置的选择会直接影响数据的输出,如下面这个虚构的示例文章标题所示:

“撒哈拉以南非洲的艾滋病”

以下是 BibTeX 可能要求应用的大写方案的一些示例:

  1. 撒哈拉以南非洲的艾滋病(与上文相同 - 只有短介词和一些其他特殊词语用小写)
  2. 撒哈拉以南非洲的艾滋病(除专有名词和首字母缩略词外,其余均用小写,据说在欧洲很常用)
  3. 撒哈拉以南非洲的艾滋病(所有单词均大写 - 可能默认为涵盖困难病例)
  4. 撒哈拉以南非洲的艾滋病(所有字母均大写 - 一些著名期刊确实要求这样做)

内部括号用于标记大写字母和单词,如下所示:

title = {{撒哈拉以南非洲的艾滋病}

如果我们简单地省略内部括号,则上面的样式 2 和 3(其中一种或两种据说在欧洲用法中非常常见)可能被解释为如下内容:

  1. 撒哈拉以南非洲的艾滋病
  2. 撒哈拉以南非洲的艾滋病

Web of Science 输出无法根据我们使用的数据库自动、一致且正确地放置内部括号,也无法让每个人都满意。因此,我们当前的实现强制 BibTeX 呈现我们知道或多或少正确的唯一大写字母,即数据库中实际存在的数据的精确大写字母。对于上述示例,这意味着我们像这样输出数据(这就是使用双括号的原因):

title = {{撒哈拉以南非洲的艾滋病}}

需要不同大写字母的研究人员也许可以检查我们提供的大写字母,或者检查它所指的项目,然后做出明智的判断,确定他们认为内括号实际上属于哪里。在我们上面已经显示的示例中,内括号可能被认为属于以下位置:

title = {{撒哈拉以南非洲的艾滋病}

答案1

正如您自己所注意到的,双花括号会阻止大小写转换函数更改换行的文本。这是预期的行为,实际上非常有用,因为BibTeX 在创建 .bbl 文件时丢失大写字母演示。这种行为是众所周知的,并且有记录(例如,参见设计 BibTeX 样式:change.case$第 5 页BibTeX 提示和常见问题解答:Q5

如果您的软件导出不应受大小写保护的双括号字段,那么这应该被视为不合格的设计决策。

然而,自动执行所需的大写保护非常困难。因此,不希望用户参与其中的软件通常要么选择不保护任何内容(即仅使用单括号,并希望大小写转换算法不会造成太大损害),要么保护整个标题(使用双括号,从而使大小写转换算法无用;优点是标题始终按软件中给出的方式显示,这可能会导致用户投诉减少)。

我认为,在整个字段上加双括号从来都不是一个好主意,只应在某些单词周围添加花括号,这些单词绝不能失去大写。这仍然最好手动完成。如果软件在DOI(正如你所说),那么软件就严重有问题了在你的评论中提及),因为biblatex会认为内侧括号对构成了 DOI 的一部分。

使用 Biber 可以去除不必要的外牙套

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=title,
            match=\regexp{\A\{(.*)\}\Z},
            replace=\regexp{$1}]
    }
  }
}

相关内容