Open main menu

Changes

commented code
== With use-package ==
View a demostration [https://asciinema.org/a/657842 here].
<pre>
;;; Till Mueller, 2024-05-04. No copyright.
 
;; AUCTeX has good support for LaTeX out-of-the-box. For ConTeXt, not
;; so much.
;;
;; Fortunately much of the functionality, in particular
;; LaTeX-math-mode can be reused as-is in ConTeXt mode.
;; LaTeX-math-mode is a minor mode with easy access to TeX math
;; macros. Such as ` a for \alpha. You can define custom shortcuts
;; via LaTeX-math-list as well.
;;
;; The key is to tweak texmathp-tex-commands for recognizing math
;; environment in a ConTeXt document, or else LaTeX-math will not
;; work.
 
(use-package context
:hook
((ConTeXt-mode . turn-on-reftex)
 
;; personal preference
(ConTeXt-mode . variable-pitch-mode)
 
;; show \alpha as α and \mathbb{R} as ℝ
(ConTeXt-mode . prettify-symbols-mode)
 
;; shortcuts for symbols
(ConTeXt-mode . LaTeX-math-mode))
 
:custom
;; AUCTeX defaults to mkii; change to iv for iv and lmtx
(ConTeXt-Mark-version "IV")
 
;; Enable electric left right brace
(LaTeX-electric-left-right-brace t)
 
;; Do not unprettify symbol at point
(prettify-symbols-unprettify-at-point nil)
 
;; Let AUCTeX properly detect formula environment as math mode
(texmathp-tex-commands '(("\\startformula" sw-on) ("\\stopformula" sw-off)))
 
;; Set PDF viewer
(TeX-view-program-selection '((output-pdf "Zathura")))
 
;; Don't as for permission, just save all files
(TeX-save-query nil)
 
;; Auto-save
(TeX-auto-save t)
 
;; Debug bad boxes and warnings after compilation via
;; C-c ` key
(TeX-debug-bad-boxes t)
(TeX-debug-warnings t)
 
;; Electric inline math,
(TeX-electric-math '("$" . "$"))
 
;; Electric sub and superscript, inserts {} after ^ and _
;; such as a^{}.
(TeX-electric-sub-and-superscript t)
 
;; RefTex
(reftex-plug-into-AUCTeX t)
 
;; Customize keyboard shortcuts for TeX math macros
(LaTeX-math-list
'(("o r" "mathbb{R}" nil nil)
("o Q" "qquad" nil nil)
("o q" "quad" nil nil)
("o n" "mathbb{N}" nil nil)
(?= "coloneq" nil nil)
("o c" "mathbb{C}" nil nil)))
 
:bind
;; Electric \left(\right) \left[\right] \left\{\right\}
;; only left brace; there is no right electric brace function
(:map ConTeXt-mode-map ("(" . LaTeX-insert-left-brace))
(:map ConTeXt-mode-map ("[" . LaTeX-insert-left-brace))
(:map ConTeXt-mode-map ("{" . LaTeX-insert-left-brace))
 
:config
(add-hook 'TeX-after-compilation-finished-functions
#'TeX-revert-document-buffer)
 
;; Prettify symbols mode, customizable.
(with-eval-after-load "tex-mode"
(dolist (symb
'(("\\colon" . ?:)
("\\mathbb{C}" . ?ℂ)
("\\mathbb{K}" . ?𝕂)))
(add-to-list 'tex--prettify-symbols-alist symb))))
</pre>
 
== Help with delimiters and math mode ==
 
These customizations are mostly for faster insertion of special characters (and math mode).
 
<pre>
;;; Useful AUCTeX setup for ConTeXt (for your .emacs)
("TEX" plain-tex-mode ".")))
</pre>
 
== Help with natural tables ==
 
These customizations, by Johan Sandblom, make entering [[TABLE|natural tables]] easy.
 
<pre>
(defun context-insert-nattab (rows columns)
;; Johan Sandblom 2006-01-28
"Insert a TABLE skeleton"
(interactive "nNumber of rows: \nnNumber of columns: \n")
(newline)
(insert "\\bTABLE\n\\setupTABLE\[\]\n")
;; First a TABLE header
(insert "\\bTABLEhead\n\\bTR\\bTH \\eTH\n")
(let ((column 1))
(while (&lt; column (- columns 1))
(insert " \\bTH \\eTH\n")
(setq column (1+ column))))
(insert " \\bTH \\eTH\\eTR\n\\eTABLEhead\n\\bTABLEbody\n")
;; The rows and columns
(let ((row 1))
(while (&lt;= row rows)
(insert "\\bTR\\bTD \\eTD\n")
;; The let expression makes sure that each loop starts at the
;; right place
(let ((column 1))
(while (&lt; column (- columns 1))
(insert " \\bTD \\eTD\n")
(setq column (1+ column)))
(insert " \\bTD \\eTD\\eTR\n")
(setq row (1+ row))))
(insert "\\eTABLEbody\n\\eTABLE\n")))
 
(defun context-insert-nattab-row (columns)
"Insert a row in a TABLE"
(interactive "nNumber of columns: \n")
(newline)
(insert "\\bTR\\bTD \\eTD\n")
(let ((column 1))
(while (&lt; column (- columns 1))
(insert " \\bTD \\eTD\n")
(setq column (1+ column)))
(insert " \\bTD \\eTD\\eTR\n")))
 
(defun context-insert-nattab-column (&optional arg)
"Insert a column in a TABLE"
(interactive "P")
(insert "\\bTD \\eTD")
(indent-for-tab-command)
(newline)
(backward-char 5))
 
 
 
(add-hook 'ConTeXt-mode-hook
'(lambda ()
(local-set-key "\C-cnr" 'context-insert-nattab-row)
(local-set-key "\C-cnc" 'context-insert-nattab-column)
(local-set-key "\C-cnn" 'context-insert-nattab)))
</pre>
 
== Help with FLOW charts (from m-chart.tex) ==
 
<pre>
;; Johan Sandblom. No copyright.
(defun context-FLOW-shift-cells (x y beg end)
"Shifts FLOW cells in region right and down"
(interactive "nRight: \nnDown: \nr")
(save-excursion
(goto-char beg)
(while (search-forward-regexp
"{\\([0-9]+\\),\\([0-9]+\\)}" end t)
(replace-match
(concat "{" (number-to-string
(+ (string-to-number (match-string 1)) x))
"," (number-to-string
(+ (string-to-number (match-string 2)) y)) "}")
nil nil))))
 
(defun context-FLOW-insert-cells (%optional n)
"Insert a FLOWchart cell"
(interactive "P")
(if (not (bolp)) (newline))
(let ((x 1))
(while (&lt;= x (if n n 1))
(insert "\\startFLOWcell\n")
(insert " \\name {}\n")
(insert " \\location {}\n")
(insert " \\shape {action}\n")
(insert " \\text {}\n")
(insert " \\connection[rl]{}\n")
(insert "\\stopFLOWcell\n")
(setq x (1+ x)))))
(add-hook 'ConTeXt-mode-hook
'(lambda ()
(define-key (current-local-map) "\C-cnF" 'context-FLOW-insert-cells)
(define-key (current-local-map) "\C-cnS" 'context-FLOW-shift-cells)))
</pre>
 
== Metapost-mode and r-mode (from ESS, http://ess.r-project.org) in context-mode with mmm-mode ==
 
<pre>
;; Johan Sandblom. No copyright.
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(setq mmm-submode-decoration-level 2)
(mmm-add-group 'context-plus
'((context-R
:submode r-mode
:face mmm-comment-submode-face
:front ".*\\\\startR\\w*\\({\\w*}\\|\\[\\w*\\]\\|\\)\\W*"
:back ".*\\\\stopR")
(context-MP
:submode metapost-mode
:face mmm-code-submode-face
:front ".*\\\\start\\w*MP\\w*\\({\\w*}\\|\\[\\w*\\]\\|\\)\\W*"
:back ".*\\\\stop\\w*MP")
))
(add-to-list 'mmm-mode-ext-classes-alist '(context-mode nil context-plus))
</pre>
 
 
[[Category:Text Editors]]
11

edits