GNU bug report logs -
#78586
TeX-make-inline
Previous Next
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi Arash and all,
We had discussed in an earlier thread (bug#78006) the possibility of
adding some of my editing commands to AUCTeX (as standalone commands,
without default binds). We could start with this one, discussed a bit
in that thread:
--8<---------------cut here---------------start------------->8---
(defcustom TeX-make-inline-delims '("$" . "$")
"Delimiters for `TeX-make-inline' to surround inline LaTeX math."
:type '(radio (const :tag "Dollar ($...$)" ("$" . "$"))
(const :tag "Paren (\\(...\\))" ("\\(" . "\\)"))
(cons :tag "Custom delimiters"
(string :tag "Left") (string :tag "Right"))))
(defun TeX-make-inline ()
"Convert LaTeX display math environment at point to inline math.
Removes the enclosing math environment (such as \\[...\\] or
\\begin{equation}...\\end{equation}). Replaces it with inline math
surrounded by `TeX-make-inline-delims', fitting the result onto one
line. Leaves any trailing punctuation outside the math delimiters."
(interactive)
(when (texmathp)
(when (fboundp 'preview-clearout-at-point)
(preview-clearout-at-point))
(save-excursion
(let* ((env (car texmathp-why))
(pos (cdr texmathp-why))
(delims TeX-make-inline-delims))
(cond
((member env '("\\(" "$")))
((member env '("\\[" "$$"))
(goto-char pos)
(delete-char 2)
(let ((start (point))
(end-delim (if (equal env "\\[") "\\]" "$$")))
(search-forward end-delim)
(delete-char -2)
(TeX-make-inline--finalize-region start (point) delims)))
(t
(goto-char pos)
(kill-line)
(let ((start (point)))
(search-forward (concat "\\end{" env "}"))
(beginning-of-line)
(kill-line)
(TeX-make-inline--finalize-region start (point) delims))))))))
(defun TeX-make-inline--finalize-region (start end delims)
"Finalize the inline conversion from START to END using DELIMS."
(save-restriction
(narrow-to-region start end)
(whitespace-cleanup)
(goto-char (point-min))
(let ((re
(concat "\\(?:"
(mapconcat #'identity
(if (boundp 'reftex-label-regexps)
reftex-label-regexps
'("\\\\label{[^}]*"))
"\\|")
"\\)")))
(while (re-search-forward re nil t)
(replace-match "")))
(goto-char (point-min))
(while (looking-at "\\s-*$")
(delete-line))
(beginning-of-line-text)
(delete-region (point-min) (point))
(goto-char (point-max))
(while (and (> (point) (point-min))
(progn (forward-line -1)
(looking-at "\\s-*$")))
(delete-line))
(end-of-line)
(skip-chars-backward " \t")
(delete-region (point) (point-max))
(goto-char (point-min))
(insert (car delims))
(goto-char (point-max))
(insert "\n")
(backward-char)
(while (looking-back "[.,;:!?]" 5)
(backward-char))
(insert (cdr delims))
(while (> (count-lines (point-min) (point-max)) 1)
(join-line))))
--8<---------------cut here---------------end--------------->8---
I haven't prepared this as a patch because I'm not sure where to put it
or where to document it. I looked around, and couldn't find a natural
place. If no better idea comes to mind, then perhaps some new
"miscellaneous commands" section of latex.el, with a corresponding
section in the manual? For what it's worth, there are a couple of other
editing-related commands I'd be inclined to propose.
Any feedback welcome.
Thanks, best,
Paul
This bug report was last modified 3 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.