bibtex 中如何定義「標題大小寫」?這是單字列表不是要大寫,它是在哪個文件中定義的?可以改變嗎?我檢查了該.bst
文件,但顯然它被委託給了一個change.case
我找不到其定義的函數。
答案1
據我所知,沒有 BibTeX (也沒有任何biblatex
)樣式實現“轉換為標題大小寫”宏/函數(有不久前有一個關於如何實現這一目標的問題biblatex
biblatex
,答案顯示了一種在Biber中開始使用此類巨集的方法)。
但是,有一個功能可以將標題轉換為句子大小寫(第一個單字的第一個字母大寫,其餘小寫)。是否使用此功能取決於風格。如果您的風格應用句子大小寫,您可能會在.bst
文件中找到這樣的行title "t" change.case$
。
因此,規則是在文件中以標題大小寫形式給出標題.bib
,並根據需要使用參考書目樣式將它們轉換為句子大小寫(參見在參考書目資料庫中儲存標題時使用的正確大小寫是什麼?)。
一般來說,標題在.bib
文件中的標題應始終以標題格式給出,其中另外的單字始終必須大寫以某種方式(名稱、縮寫詞、公式等)括在花括號中{}
。
例子
title = {From {Brouwer} to {Hilbert}: {The} Debate on the Foundations of Mathematics in the 1920s}
title = {{NASA} Ends Unmanned Launchings in {Florida}}
也可以看看BibTeX 在建立 .bbl 檔案時遺失大寫字母, 尤其亞歷克西斯的回答。
答案2
內建函數change.case$
在原始碼中描述(texk/bibtex-x/bibtex-4.c
在 TeX Live 中):
* The |built_in| function change.case$ pops the top two (string)
* literals; it changes the case of the second according to the
* specifications of the first, as follows. (Note: The word `letters' in
* the next sentence refers only to those at brace-level~0, the top-most
* brace level; no other characters are changed, except perhaps for
* special characters, described shortly.) If the first literal is the
* string t, it converts to lower case all letters except the very
* first character in the string, which it leaves alone, and except the
* first character following any |colon| and then nonnull |white_space|,
* which it also leaves alone; if it's the string l, it converts all
* letters to lower case; if it's the string u, it converts all
* letters to upper case; and if it's anything else, it complains and
* does no conversion. It then pushes this resulting string. If either
* type is incorrect, it complains and pushes the null string; however,
* if both types are correct but the specification string (i.e., the
* first string) isn't one of the legal ones, it merely pushes the second
* back onto the stack, after complaining. (Another note: It ignores
* case differences in the specification string; for example, the strings
* t and T are equivalent for the purposes of this |built_in|
* function.)
這很複雜,我大部分都聽不懂,但在實踐中,我認為需要記住的是,即使在標點符號之後,如“.”、“!”或“?”,預設情況下字母將轉換為小寫...除了“:”(冒號)之後。的確,
title = {Test! Test? Test: Test. Test, Test}
在 .bib 檔案中產生:
\newblock Test! test? test: Test. test, test.
唯一的例外是相當奇怪和出乎意料的。
答案3
如果您願意建立自訂 .bst 文件,可以透過以下方式完成此操作。在您的文件中,您需要以下幾行:
\usepackage{titlecaps}
\Addlcwords{the of into}
其中\usepackage
使用titlecaps
具有\titlecap
巨集的包。該\Addlcwords
巨集提供了應保持小寫而不是大寫的單字清單。
在您的.bst
文件中,您需要新增一個新巨集:
FUNCTION {titlecap}
{ duplicate$ empty$
{ pop$ "" }
{ "\titlecap{" swap$ * "}" * }
if$
}
剩下要做的唯一一件事就是將它用於您正在格式化的各種文件樣式。例如,您的風格中的一行可能會這樣說:
title ". " * output
它列印標題,連接句點並輸出結果。現在,您可以將其編輯為:
title titlecap ". " * output
它首先將titlecap
巨集應用於title
, 然後連接句點並輸出結果。的調用\titlecap
巨集中將使每個單字的第一個字母大寫,排除清單中的單字除外。請參閱包文件:http://ctan.org/pkg/titlecaps。