
太長了;博士:如何引用沒有/不應該引用的工作論文institution
?
這biblatex 條目類型report
應該用於:
由大學或其他機構發表的技術報告、研究報告或白皮書。
a 的必填欄report
位為author
, title
, type
, institution
, year
/ date
。
符合這個建議我通常使用report
工作論文類型。然而,對於某些工作論文系列,添加機構似乎是多餘的,並且會產生不必要的混亂的參考書目條目。所有工作論文系列都是這種情況,其中機構名稱是系列名稱的一部分。例如,「NBER 工作論文」(顯然)是由 NBER 發布的。
為了說明這個問題,請考慮以下範例:
\documentclass{scrartcl}
\usepackage[backend=biber,bibstyle=authoryear,dashed=false]{biblatex}
\addbibresource{mwe.bib}
\begin{filecontents}{mwe.bib}
@Report{Example1,
author = {Author, Sample},
date = {2020},
title = {A Report},
type = {The Institution's Working Paper Series},
number = {42}
}
@Report{Example2,
author = {Author, Sample},
date = {2020},
title = {A Report with Redundant Institution},
type = {The Institution's Working Paper Series},
number = {42},
institution = {The Institution}
}
\end{filecontents}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
- 問題:我更喜歡範例 1(無機構),但該
institution
欄位是必需的。 - 解決方法/我嘗試過的方法:
- 只需忽略
institution
必需的內容並將其留空即可。這可行(見上文),但違反了資料模型規格。但是:在驗證資料模型時,這會產生許多煩人的警告,而且,我不確定 biber/biblatex 的未來版本是否會對缺少必填欄位保持如此寬鬆。 - 提供一些佔位符機構,然後按照以下方式清除該字段,
\AtEveryBibitem{\ifentrytype{report}{\clearfield{institution}…
但因為我不想清除institution
清除全部報告,我需要一些恆定的“神奇佔位符”(或關鍵字),並且institution
只有在觀察這個神奇佔位符的情況下才可以清除,這是......混亂,容易出錯並且弄亂了我的BIB檔。 - 只需使用另一種不需要機構的條目類型即可。一個自然的候選人可能是
misc
——但這沒有number
領域。作為替代方案,我可以 (ab-) 使用manual
,但這會在number
之前列印type
,而我需要相反的順序:作者,樣本 (2020c)。與冗餘機構的報告。 42. 該機構的工作文件系列。
- 只需使用另一種不需要機構的條目類型,再次:使用
manual
的類型series={The Institution's Working Paper Series}
,但我不喜歡使用錯誤的條目類型 (manual
) 並使用更合適的series
位置(IMO)。type
- 只需忽略
- 問題:如何引用沒有/不應該引用的工作論文
institution
?我不確定上面的哪種方法最有前途,但我肯定更喜歡具有有效數據模型(與(1)不同)、合理語義(與(4)不同)和最少可以進行的事情的解決方案錯誤(與(2)不同)。所以也許 (3) 並改變 和type
fornumber
的順序misc
是最好的……但我對任何建議持開放態度並感激不已。
答案1
太長了;博士選擇選項 1 institution
。
中「必填」和「可選」欄位之間的差異biblatex
並不像乍看那麼嚴格。
除了資料模型驗證程式碼之外,沒有任何內容biblatex
了解必填或強製欄位。這biblatex
文件說
請注意,並非所有情況下都嚴格要求“必填”字段,有關詳細信息,請參閱第 2.3.2 節。標記為“可選”的字段在技術意義上是可選的。書目格式規則通常需要的不僅僅是「必填」欄位。
關於“必填”和“可選”欄位。 §2.3.2 進一步解釋
§2.3.2缺失和遺漏的數據
§2.1.1 中標示為「必填」的欄位並非在所有情況下都嚴格要求。
title
對於大多數條目類型來說,該包附帶的參考書目樣式只需一個欄位即可完成。就參考書目而言,匿名出版的書、沒有明確編輯的期刊或沒有明確作者的軟體手冊應該不會造成任何問題。然而,引文樣式可能有不同的要求。例如,作者年引用方案顯然需要一個author
/editor
和一個year
欄位。
對我來說,「必需」和「可選」欄位更多是對樣式開發人員的暗示,而不是對使用者及其.bib
資料庫的硬性要求。一般來說,我想說,如果您的條目包含文檔中列為“必填”的所有字段,那麼您可以預期輸出看起來是合理的。如果您沒有所有必填字段,輸出可能仍然沒問題(在很多情況下都會這樣),但如果您對結果不滿意而抱怨,您可能就沒有立足之地了。如果您沒有所有必填字段,您的參考書目不會自動變壞,但並不能保證它看起來應該很好。
我認為記住以下建議很重要btxdoc
- 標準樣式的十三種條目類型在格式化大多數條目方面做得相當好,但沒有一種只有十三種格式的方案可以完美地完成所有工作。因此,您應該在如何使用這些條目類型方面隨意發揮創意(但如果您必須太有創意,則很可能您使用了錯誤的條目類型)。
- 不要太認真地對待字段名稱。例如,有時,您可能必須在欄位中包含發布者的地址和發布者的名稱
publisher
,而不是將其放入address
欄位中。有時,當您明智地利用該note
領域時,困難的條目會發揮最佳效果。- 不要太認真地對待警告訊息。例如,有時,年份出現在標題中,如1966 年世界牛羚年鑑。在這種情況下,最好省略該
year
欄位並忽略 BibTeX 的警告訊息。
我不認為我完全同意最後一點的例子,但總體想法是我絕對同意的。無論如何,底線是:不要採用資料模型也嚴重地。最後列印的結果可能是您最感興趣的。
我不能肯定地說,但看起來某些必填/可選字段是直接取自BibTeX 文檔btxdoc
。因此,在這種情況下,institution
由於歷史原因而不是技術原因,這可能是一個「必填」欄位。
如果不包含「必填」字段,最糟糕的情況是什麼?廣泛地說,我想說可能發生的最糟糕的情況是,您的風格期望該字段存在,並在該institution
字段中或周圍放置一些東西,如果該字段不存在,那麼這些東西看起來就不合適。
讓我們從更技術的角度來看這個問題。如同上面提到的,實際上只有一小段程式碼biblatex
知道哪些欄位是必需的,哪些欄位是可選的:資料模型約束聲明。這些約束聲明將傳遞給 Biber 以進行資料模型驗證,並且不會在其他任何地方使用biblatex
。所以從技術角度來說biblatex
絕對不關心資料模型的約束。它們只是用來向使用者發出提示/警告。
整個「必需」/「可選」事物中更重要的方面是它允許樣式開發人員做出的隱式假設。一般來說,樣式開發人員應該以省略可選欄位不會使輸出看起來很糟糕的方式編寫樣式。有一種觀點認為,對於必填欄位沒有這樣的期望。如果缺少必填字段,則由使用者負責。這些隱含的假設並沒有被編入法典,完全取決於開發人員他們想在多大程度上依賴這些假設。
的整體工作原理biblatex
和biblatex
樣式使得在大多數情況下非常容易防止丟失字段,而無需任何額外的努力。僅在極少數邊緣情況下才需要針對缺失欄位採取明確的預防措施。
我希望在絕大多數樣式中,@report
即使沒有institution
.
讓我們討論一下您建議的解決方法。
institution
如果您不需要,請不要填寫該欄位。對我來說,這聽起來是最好、最簡單的行動方案。當然,你沒有提供一個
required
字段,但如果這樣輸出看起來更好,誰會責怪你呢?資料模型驗證需要明確打開,並且警告無論如何都具有一定的人為性質(如上所述),因此您完全有權忽略它們。標準樣式biblatex
極不可能改變,這意味著沒有institution
這種樣式的條目現在看起來不錯,將來看起來可能會更糟。使用(魔法或其他)佔位符。
這只會愚弄資料模型驗證。如果您稍後使用 刪除欄位值
\clearfield
,則就樣式而言,該欄位仍然消失。因此,如果您擔心輸出結果看起來很糟糕,那麼您仍然不安全。(和 4.)使用不同的條目類型
這當然是可能的,但感覺並不比其他選項好多少。為了獲得正確的所需字段這一更人為的目標,您將放棄真正的語義連接。
我贊成選項 1 可能並不令人意外。
如果您對資料模型驗證中收到的警告感到困擾,您可以重寫資料模型約束以institution
從所需欄位清單中刪除(原始約束可以在blx-dm.def
)。
\documentclass{article}
\begin{filecontents}{report-wo-institution.bib}
\ResetDatamodelConstraints
\DeclareDatamodelConstraints[
article,
book,
inbook,
bookinbook,
suppbook,
booklet,
collection,
incollection,
suppcollection,
manual,
misc,
mvbook,
mvcollection,
online,
patent,
periodical,
suppperiodical,
proceedings,
inproceedings,
reference,
inreference,
report,
set,
thesis,
unpublished]{
\constraint[type=mandatory]{
\constraintfieldsxor{
\constraintfield{date}
\constraintfield{year}
}
}
}
\DeclareDatamodelConstraints[set]{
\constraint[type=mandatory]{
\constraintfield{entryset}
}
}
\DeclareDatamodelConstraints[article]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{journaltitle}
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[book,mvbook,mvcollection,mvreference]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[inbook,bookinbook,suppbook]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
\constraintfield{booktitle}
}
}
\DeclareDatamodelConstraints[booklet]{
\constraint[type=mandatory]{
\constraintfieldsor{
\constraintfield{author}
\constraintfield{editor}
}
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[collection,reference]{
\constraint[type=mandatory]{
\constraintfield{editor}
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[incollection,suppcollection,inreference]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{editor}
\constraintfield{title}
\constraintfield{booktitle}
}
}
\DeclareDatamodelConstraints[dataset]{
\constraint[type=mandatory]{
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[manual]{
\constraint[type=mandatory]{
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[misc,software]{
\constraint[type=mandatory]{
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[online]{
\constraint[type=mandatory]{
\constraintfield{title}
\constraintfieldsor{
\constraintfield{url}
\constraintfield{doi}
\constraintfield{eprint}
}
}
}
\DeclareDatamodelConstraints[patent]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
\constraintfield{number}
}
}
\DeclareDatamodelConstraints[periodical]{
\constraint[type=mandatory]{
\constraintfield{editor}
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[proceedings,mvproceedings]{
\constraint[type=mandatory]{
\constraintfield{title}
}
}
\DeclareDatamodelConstraints[inproceedings]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
\constraintfield{booktitle}
}
}
\DeclareDatamodelConstraints[report]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
\constraintfield{type}
}
}
\DeclareDatamodelConstraints[thesis]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
\constraintfield{type}
\constraintfield{institution}
}
}
\DeclareDatamodelConstraints[unpublished]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{title}
}
}
\DeclareDatamodelConstraints{
\constraint[type=data, datatype=isbn]{
\constraintfield{isbn}
}
\constraint[type=data, datatype=issn]{
\constraintfield{issn}
}
\constraint[type=data, datatype=ismn]{
\constraintfield{ismn}
}
\constraint[type=data, datatype=date]{
\constraintfield{date}
\constraintfield{eventdate}
\constraintfield{origdate}
\constraintfield{urldate}
}
\constraint[type=data, datatype=pattern, pattern=\regexp{(?:sf|sm|sn|pf|pm|pn|pp)}]{
\constraintfield{gender}
}
}
\end{filecontents}
\usepackage[backend=biber,bibstyle=authoryear,dashed=false]{biblatex}
\begin{filecontents}{\jobname.bib}
@Report{Example1,
author = {Author, Sample},
date = {2020},
title = {A Report},
type = {The Institution's Working Paper Series},
number = {42},
}
@Report{Example2,
author = {Author, Sample},
date = {2020},
title = {A Report with Redundant Institution},
type = {The Institution's Working Paper Series},
number = {42},
institution = {The Institution},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
文件輸出仍然相同,但對於缺少的sbiber -V
將保持沉默。institution
當然institution
字段仍然沒有給出。但我想這一切都歸結為如果你不想給institution
您將不得不承擔不提供該欄位的後果。在標準樣式(我預計大多數貢獻的樣式)中,不提供institution
.如果您認為未來可能產生的後果風險太大,您唯一的選擇是institution
用值(列印的)填充該欄位或採用不同的輸入類型。如果第一種選擇不可行,那麼你唯一的方法就是選擇不同的類型。但不同的類型在語義上不太令人滿意,並且可能無法盡可能準確地正確表示所有方面@report
。