这个问题和另一个帖子,我想C-c [
插入~\cite
而不是仅仅插入\cite
。但是,其中给出的解决方案如下
(setq reftex-cite-format
'((?\C-m . "~\\cite{%l}")
(?t . "\\cite{%l}")))
不知怎的,对我来说不起作用。
我尝试了邮件列表中的建议这里,
(setq reftex-format-cite-function
'(lambda (key fmt)
(let ((cite (replace-regexp-in-string "%l" key fmt)))
(if (or (= ?~ (string-to-char fmt))
(member (preceding-char) '(?\ ?\t ?\n ?~)))
cite
(concat "~" cite)))))
这对我来说确实有效,除了以下复杂情况,即当我已经有类似的东西时~\cite[xxx]
,我想插入另一个引文,比如yyy
。假设光标放置在中~\cite[xxx(cursor here)]
,如果yyy
使用插入C-c [
,那么我会得到~\cite[xxx,~yyy]
,这肯定不能正确编译。
有什么办法可以实现在第一次调用时插入 ~C-c [
并在第二次及以后的调用中省略 ~ 吗?非常感谢!
更新
恭喜我Tumbleweed
通过这篇文章获得徽章!(╯‵□′)╯︵┻━┻
我尝试了以下调整邮件列表答案,
(setq reftex-format-cite-function
'(lambda (key fmt)
(let ((cite (replace-regexp-in-string "%l" key fmt)))
(if (or (= ?~ (string-to-char fmt))
(member (preceding-char) '(?\ ?\t ?\n ?~ ?{ ?,))
(member (following-char) '(?} ))
)
cite
(concat "~" cite)))))
到目前为止效果很好。看来考虑更多前面的字符并包括后面的字符会有所帮助。