使用 RefTeXC-c [调用时reftex-citation
,首先会询问引用格式(使用什么引用宏,例如\cite
或\footcite
),然后要求使用正则表达式来搜索参考书目数据库,输入后会显示搜索结果(在名为 *RefTeX Select* 的缓冲区中),并让您选择一个参考书目项目放入引用宏中。包含搜索结果的列表如下图所示:
请注意,列表包含每个项目的关键字以及作者和标题等信息,但项目的年份或日期不是显示。是否可以配置 RefTeX,以便在 *RefTeX Select* 中列出每个项目的日期?
我提出这个要求的原因是,在列表中包含日期可能更容易区分相似的条目(所含的屏幕截图可能无法证明这一点)。
我在 GNU Emacs 23.3.1 中使用 RefTeX 4.31。在我的设置中,变量reftex-bib-year-face
的值为font-lock-comment-face
。
答案1
Reftex 的设计使它在引用列表中不显示日期字段,只显示年份字段。没有选项可以调整以更正此问题。但是,您可以通过直接修改负责代码来修复此问题。
这是一个相当长的函数,只需要很小的改动。我修改了显示的“year”值,以便它同时包含年份和日期。我假设只会有一个或另一个,所以你应该看到你想要的。将其添加到你的 .emacs 并查看它是如何工作的:
(eval-after-load "reftex-cite"
'(defun reftex-format-bib-entry (entry)
;; Format a BibTeX ENTRY so that it is nice to look at
(let*
((auth-list (reftex-get-bib-names "author" entry))
(authors (mapconcat 'identity auth-list ", "))
;; modified code here:
(year (concat (reftex-get-bib-field "year" entry)
(reftex-get-bib-field "date" entry)))
;; end modified code
(title (reftex-get-bib-field "title" entry))
(type (reftex-get-bib-field "&type" entry))
(key (reftex-get-bib-field "&key" entry))
(extra
(cond
((equal type "article")
(concat (reftex-get-bib-field "journal" entry) " "
(reftex-get-bib-field "volume" entry) ", "
(reftex-get-bib-field "pages" entry)))
((equal type "book")
(concat "book (" (reftex-get-bib-field "publisher" entry) ")"))
((equal type "phdthesis")
(concat "PhD: " (reftex-get-bib-field "school" entry)))
((equal type "mastersthesis")
(concat "Master: " (reftex-get-bib-field "school" entry)))
((equal type "inbook")
(concat "Chap: " (reftex-get-bib-field "chapter" entry)
", pp. " (reftex-get-bib-field "pages" entry)))
((or (equal type "conference")
(equal type "incollection")
(equal type "inproceedings"))
(reftex-get-bib-field "booktitle" entry "in: %s"))
(t ""))))
(setq authors (reftex-truncate authors 30 t t))
(when (reftex-use-fonts)
(put-text-property 0 (length key) 'face
(reftex-verified-face reftex-label-face
'font-lock-constant-face
'font-lock-reference-face)
key)
(put-text-property 0 (length authors) 'face reftex-bib-author-face
authors)
(put-text-property 0 (length year) 'face reftex-bib-year-face
year)
(put-text-property 0 (length title) 'face reftex-bib-title-face
title)
(put-text-property 0 (length extra) 'face reftex-bib-extra-face
extra))
(concat key "\n " authors " " year " " extra "\n " title "\n\n"))))
答案2
在我的 RefTeX 版本中(作为 TeX Live 2011 的一部分安装),您希望看到的行为会自动启用。我查看了一些 RefTeX 配置选项,您可以尝试的一项是 ,reftex-sort-bibtex-matches
可以按年份进行设置。这是我默认启用的选项。