好吧,标题几乎说明了一切,我正在寻找一种方法来判断字符串中是否有字母或者是否仅由数字组成。
biblatex
由于我的问题目的,我在这里使用它作为标签:
我正在尝试编写自己的自定义样式,该volume
字段会自动在卷号前添加“vol.” 。但我必须遵循的规范对此有一些例外,有时(实际上没有可遵循的模式,这些只是随机例外)“volume”字段应该以不同的方式打印(例如,打印为“year 4”,而不是“vol. 4” )。但实际上,用户不能填写“year 4”,否则它会打印“vol. year 4”。
字段也是如此edition
。我添加了“ed.”,因此它会打印出类似“3rd ed.”的内容。但我希望我的用户能够填写类似“3rd ed. 修订和扩充”的内容……事实上,如果他们这样做,书目将打印出“3rd ed. 修订和扩充”。
所以我在想,我可以检查卷数和版本字段是否只包含数字,如果是,我可以添加“vol.”和“ed.”。否则我不会添加任何内容,因为我会假设这是用户自己做的。还有其他方法可以做这样的事情吗?
提前致谢,
丹尼尔
答案1
biblatex
有大量的命令用于此。
有(见第 199-200 页)文档biblatex
)
\ifinteger
检查给定的参数是否为正整数\ifnumeral
检查参数是否是罗马或阿拉伯数字\ifnumerals
表示(罗马或阿拉伯)数字的范围\ifpages
用于检测页面
这些命令有一个可以直接检查字段的版本:\iffieldint
,,,。\iffieldnum
\iffieldnums
\iffieldpages
可以配置数字和页数检查以将某些构造视为数字或页数,请参阅第 210-211 页。您可能对 感兴趣\DeclareNumChars
。
\ifinteger
该edition
字段使用的标准样式
\DeclareFieldFormat{edition}{%
\ifinteger{#1}
{\mkbibordedition{#1}~\bibstring{edition}}
{#1\isdot}}