一些 biblatex 字段属于“文字”类型,一些属于“字符串”类型。这两种类型有什么区别?
鉴于 ID 使用“字符串”,如果字符串中不能有空格,那就说得通了。对吗?还有其他限制吗?
相关地,除了没有空间使用 biblatex 和/或 biber 时 ID 上的问题?
答案1
字段literal
通常可以保存您在文档中写入的文本.tex
。%
s 很危险,但其他大多数内容都应该没有问题。文档对于“字符串”字段是什么确实守口如瓶。在文档中标记为“字符串”的十几个字段中,biblatex
只有少数与.bib
文件中的输入相关,即使这些字段也以某种方式特殊。通常您不想打印任何这些字段的内容。
presort
:由于它用于后端排序,所以理想情况下它不应该包含任何花哨的东西,如宏和命令序列(它们被接受,但仅仅被视为字符串)。entrykey
(以及ids
,clonesourcekey
但ids
在圆括号方面限制稍少一些): 的可能值entrykey
一方面受后端限制,另一方面受所用 TeX 引擎限制。后端施加限制,以便可以正确解析.bib
具有相应 的条目。entrykey
- Biber 禁止
" # % ' ( ) , = { }
(见使用包含括号的 BibTeX 键和 Biber,同样有趣哪些字符可以用作 BibTeX 键的分隔符?)。同样禁止使用空格。 - TeX/LaTeX 端也禁止使用某些字符,以便可以在 TeX 端处理条目。
biblatex
有时需要从entrykey
(带有\csname
...\endcsname
)构建控制序列名称,因此它们不能包含不可扩展的控制序列。不应entrykey
包含活动字符。对于 pdfLaTeX,这意味着非 ASCII 字符(例如ä
、ö
、ß
)é
被排除在外,但 XeLaTeX 和 LuaLaTeX 可以接受非 ASCII 字符。
- Biber 禁止
entrytype
:当然,标准条目类型仅限于a-z
。使用 Biber,您可以定义新类型,限制应该与 的限制类似entrykey
。
所有其他字符串均由后端本身生成,并且包含预定义列表 ( dateunspecified
) 的一个值或某种哈希值 ( hash
, namehash
, fullhash
, sortinithash
)。您可以预期哈希值将返回字母数字值。
一些标记为“文字”的字段可能更类似于“字符串”:labeltitlesource
,labelnamesource
并且extradatescope
只返回字段的名称。labeldatesource
非常相似,但也可能包含文字表达式(所以我不会将其归类labeldatesource
为字符串)。