bug-auctex
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#24667: AUCTeX citation color


From: Travis Knepp
Subject: bug#24667: AUCTeX citation color
Date: Mon, 17 Oct 2016 08:26:05 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

Arash,

    I use Reftex and apply the hook in my .emacs file.  I insert references via C-c [ and change the \cite to \citep or \citet as needed. 



            Travis


On 10/15/2016 08:53 AM, Arash Esbati wrote:
Hi Mosè,

Mosè Giordano <address@hidden> writes:

2016-10-11 12:49 GMT+02:00 Travis Knepp <address@hidden>:
Coloring of citations (when using \citep, \citet, etc. as opposed to just
using \cite) is not properly working.  Details from the stackexchange post
(http://emacs.stackexchange.com/questions/27591/auctex-citation-color) are
here:

When inserting a reference in a LaTeX document (using Auctex) I normally
type:

\cite{joebob_2010}

where "\cite" shows up in blue font, while "joebob_2010" shows up
reddish/purple. I like this coloring. However, when I use

\citep{joebob_2010}

all text shows up white.
[...]

If you want instead to write some Elisp, you can put this

(font-latex-add-keywords
 '(("citep" "*[[{"))
 'reference)

inside the hook.

Out of curiosity, do you use natbib or jurabib packages?
First of all, sorry for my late response.  Travis uses biblatex.  And
while we're at it: Travis, how do insert this macro?  Do you type
\citep{<key>} or do you hit `C-c m RET citep RET' or use Reftex?  I'm
asking since you're asking for the fontification; I think the completion
support (see below) is much more needed.

If you have parsing enabled, you should automatically get
fontification of citep macro.
That was also was my first answer, but then I realized that biblatex.el
doesn't have support for natbib compat macros (cf. biblatex manual,
§3.8.9 natbib Compatibility Commands).  I asked Travis to file this bug
report (thanks btw), I think the appended patch fixes the issue.  It is
mostly taken from natbib.el, function `LaTeX-biblatex-natbib-note-args'
is a modified version of `natbib-note-args' and I think that `(when
TeX-arg-cite-note-p' is not really needed, but I didn't touch it since
it doesn't hurt either.

--8<---------------cut here---------------start------------->8---
diff --git a/style/biblatex.el b/style/biblatex.el
index 06cd57a..f0e235d 100644
--- a/style/biblatex.el
+++ b/style/biblatex.el
@@ -216,6 +216,32 @@ for citation keys."
 	(TeX-argument-insert (mapconcat 'identity items ",") optional))
       (setq noinsert t))))
 
+(defun LaTeX-biblatex-natbib-note-args (optional)
+  "Prompt for two note arguments of a natbib compat citation command."
+  (when TeX-arg-cite-note-p
+      (let ((pre (TeX-read-string
+		  (TeX-argument-prompt optional nil "Prenote")))
+	    (post (TeX-read-string
+		   (TeX-argument-prompt optional nil "Postnote"))))
+	(cond
+	 (;; Both optional args are given
+	  (and pre (not (string= pre ""))
+	       post (not (string= post "")))
+	  (insert LaTeX-optop pre LaTeX-optcl
+		  LaTeX-optop post LaTeX-optcl))
+	 (;; pre is given, post is empty: Make sure that we insert an
+	  ;; extra pair of `[]', otherwise pre becomes post
+	  (and pre (not (string= pre ""))
+	       (string= post ""))
+	  (insert LaTeX-optop pre LaTeX-optcl
+		  LaTeX-optop LaTeX-optcl))
+	 (;; pre is empty, post is given
+	  (and (string= pre "")
+	       post (not (string= post "")))
+	  (insert LaTeX-optop post LaTeX-optcl))
+	 (;; both empty
+	  t (ignore))))))
+
 (TeX-add-style-hook
  "biblatex"
  (lambda ()
@@ -456,6 +482,53 @@ for citation keys."
     '("DefineHyphenationExceptions"
       (TeX-arg-eval completing-read "Language: " LaTeX-biblatex-language-list) t)
     "NewBibliographyString")
+
+   ;; § 3.8.9 natbib Compatibility Commands
+   (when (or (LaTeX-provided-package-options-member "biblatex" "natbib")
+	     (LaTeX-provided-package-options-member "biblatex" "natbib=true"))
+     (let ((cmds '(("citet" . 1) ("citet*" . 1)
+		   ("Citet" . 1) ("Citet*" . 1)
+		   ("citep" . 2) ("citep*" . 2)
+		   ("Citep" . 2) ("Citep*" . 2)
+		   ("citealt" . 1) ("citealt*" . 1)
+		   ("Citealt" . 1) ("Citealt*" . 1)
+		   ("citealp" . 2) ("citealp*" . 2)
+		   ("Citealp" . 2) ("Citealp*" . 2))))
+       ;; Taken from natbib.el:
+       (apply
+	#'TeX-add-symbols
+	(mapcar
+	 (lambda (cmd)
+	   (cond
+	    ((= (cdr cmd) 1)
+	     ;; Just one optional argument, the post note
+	     (list
+	      (car cmd)
+	      '(TeX-arg-conditional TeX-arg-cite-note-p (["Postnote"]) nil)
+	      'TeX-arg-cite))
+	    ((= (cdr cmd) 2)
+	     ;; Pre and post notes
+	     (list
+	      (car cmd)
+	      '(TeX-arg-conditional TeX-arg-cite-note-p
+				    ([LaTeX-biblatex-natbib-note-args])
+				  nil)
+	      'TeX-arg-cite))))
+	 cmds))
+
+     ;; Fontification for compat macros do not go into `font-latex.el':
+     (when (and (featurep 'font-latex)
+		(eq TeX-install-font-lock 'font-latex-setup))
+       (font-latex-add-keywords '(("citet"        "*[{")
+				  ("Citet"        "*[{")
+				  ("citep"        "*[[{")
+				  ("Citep"        "*[[{")
+				  ("citealt"      "*[{")
+				  ("Citealt"      "*[{")
+				  ("citealp"      "*[[{")
+				  ("Citealp"      "*[[{"))
+				'biblatex))))
+
    (LaTeX-add-environments
     ;;; Bibliography commands
     ;; Bibliography Sections
--8<---------------cut here---------------end--------------->8---

Here also a small file I tested with:

--8<---------------cut here---------------start------------->8---
\documentclass{article}

\begin{filecontents}{biblatex-test.bib}
@book{lamp:94,
  author    = {Leslie Lamport},
  title     = {LaTeX - {A} Document Preparation System: User's Guide
               and Reference Manual, Second Edition},
  publisher = {Pearson / Prentice Hall},
  year      = {1994},
  isbn      = {978-0-201-52983-8},
  timestamp = {Fri, 08 Apr 2011 18:21:00 +0200},
}

@book{mitt:97,
  author    = {Michel Goossens and
               Sebastian Rahtz and
               Frank Mittelbach},
  title     = {The LaTeX Graphics Companion - Illustrating documents
               with TeX and PostScript},
  series    = {Addison-Wesley series on tools and techniques
               for computer typesetting},
  publisher = {Addison-Wesley},
  year      = {1997},
  isbn      = {978-0-201-85469-5},
}
\end{filecontents}

\usepackage[natbib,backend=bibtex,style=authoryear]{biblatex}

\bibliography{biblatex-test}

\begin{document}

\noindent \textbf{Textual}:\\
\citet{lamp:94}, \\
\citet[which see]{lamp:94},\\
\citet*{mitt:97}, \\
\citealt{mitt:97,lamp:94}, \\
\Citealt{mitt:97,lamp:94}

\noindent \textbf{Parenthesis}:\\
\citep{mitt:97}, \\
\citep[see][Page~5]{mitt:97}, \\
\citep*{mitt:97}, \\
\citealp{mitt:97}, \\
\Citealp{mitt:97}, \\
\citealp*{mitt:97}, \\
\Citealp*{mitt:97}

\end{document}
--8<---------------cut here---------------end--------------->8---

Best, Arash

--

Travis N. Knepp

Lead Research Scientist

SAGE-III on ISS     CAPABLE Air Quality Station

address@hidden

Mail Stop 401A, B1250, Room 149
Hampton, VA 23681-2199

757-864-5558

 

 

Science Systems and Applications, Inc. (SSAI)

Science and Technology with Passion

10210 Greenbelt Road, Suite 600

Lanham, MD 20706

www.ssaihq.com

 

Please be mindful about forwarding this e-mail; it may contain confidential information that is not intended for anyone else. Thank you.

 

 

 

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]