5

Q: how can I test if point is inside LaTeX ``quotes,'' and how can I get the bounds of that quote?

LaTeX quotation marks are kooky, typesetting ``text inside a double-quote'' and `text inside a single-quote' for the standard "text inside a double-quote" and 'text inside a single-quote'.

I'd like to detect if point is inside such a quote (either single or double) and, ideally, return the bounds of the quoted passage. However, syntax-ppss does not appear to recognize such passages as strings (re: elements 3 and 8 in the returned list; see parse-partial-sexp for details).

Is there a predicate function baked-in to AUCTeX to do so? Many of their functions also have curious naming conventions, so I may have missed it. If no such function already exists, what alternatives would work?

1
  • Similar to the answer of @abo-abo if you evaluate (font-latex-faces-present-p '(font-latex-string-face)) inside a double quotation, you get true, otherwise false.
    – Name
    Feb 13, 2015 at 0:21

1 Answer 1

3

You need this:

(defun latex-quote-bnd ()
  (save-excursion
    (beginning-of-line)
    (when (font-latex-match-quotation
           (line-end-position))
      (cons
       (match-beginning 0)
       (match-end 0)))))

I found font-latex-match-quotation simply by following describe-face.

5
  • 1
    Thanks for the find. So far, though, it's a partial solution: it doesn't work for `single quotes', and it doesn't work for multi-line passages when point is not on the line with the opening ``.
    – Dan
    Feb 12, 2015 at 16:48
  • In addition font-locking is lazy, in the sense that a not already visited region has no font face, so looking at it is pretty useless in that case.
    – giordano
    Feb 12, 2015 at 23:17
  • 1
    It'd be more robust to just search for the quotes around point, and check that they're valid.
    – Malabarba
    Feb 13, 2015 at 1:35
  • @Malabarba, I didn't even know about those type of quotes in LaTeX. Hence, just providing a proof-of-concept as a starting point, not trying to solve the whole thing.
    – abo-abo
    Feb 13, 2015 at 8:44
  • @abo-abo Sure. Just trying to help. ;-)
    – Malabarba
    Feb 13, 2015 at 8:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.