diff options
Diffstat (limited to 'elpa/auctex-13.1.3/style/paracol.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/paracol.el | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/paracol.el b/elpa/auctex-13.1.3/style/paracol.el new file mode 100644 index 0000000..3ed74b7 --- /dev/null +++ b/elpa/auctex-13.1.3/style/paracol.el @@ -0,0 +1,294 @@ +;;; paracol.el --- AUCTeX style for `paracol.sty' (v1.35) -*- lexical-binding: t; -*- + +;; Copyright (C) 2016--2020 Free Software Foundation, Inc. + +;; Author: Arash Esbati <arash@gnu.org> +;; Maintainer: auctex-devel@gnu.org +;; Created: 2016-05-26 +;; Keywords: tex + +;; This file is part of AUCTeX. + +;; AUCTeX is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; AUCTeX is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with AUCTeX; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +;; 02110-1301, USA. + +;;; Commentary: + +;; This file adds support for `paracol.sty' (v1.35) from 2018/12/31. +;; `paracol.sty' is part of TeXLive. + +;; `paracol.sty' provides an environment (paracol) and a command +;; (\switchcolumn) which take a star as the second (!) optional +;; argument. In order to make the input process easier for the users, +;; this style provides the environment `paracol*' and the command +;; `switchcolumn*' in the list of completion after entering C-c C-e or +;; C-c C-m (or C-c RET). + +;; Further, `\switchcolumn' takes a third optional argument containing +;; text which will be inserted spanned over the columns. This style +;; does not ask for this argument. If you need it, just enter it by +;; hand after the completion. This is a deliberate decision since I +;; think that over the time, the annoyance factor of hitting `RET' +;; will be larger than the number of times where this argument is +;; actually used. + +;;; Code: + +(require 'tex) +(require 'latex) + +;; Silence the compiler: +(declare-function font-latex-add-keywords + "font-latex" + (keywords class)) + +(defun TeX-arg-paracol-switchcolumn* (optional) + "Query and insert the column argument of \\switchcolum macro. +If OPTIONAL is non-nil, insert the result in square brackets." + (let ((col (TeX-read-string + (TeX-argument-prompt optional nil "Column")))) + (when (and col (not (string= col ""))) + (save-excursion + (backward-char 1) + (TeX-argument-insert col optional))))) + +(TeX-add-style-hook + "paracol" + (lambda () + + (LaTeX-add-environments + ;; 7.1 Environment paracol + ;; \begin{paracol}[numleft]{num}[text] body \end{paracol} + ;; \begin{paracol}[numleft]*{num}[text] body \end{paracol} + '("paracol" [ "Number left" ] "Number of columns" [ "Text across columns" ] ) + '("paracol*" + (lambda (_env) + (let ((numleft (TeX-read-string + (TeX-argument-prompt t nil "Number left"))) + (numcol (TeX-read-string + (TeX-argument-prompt nil nil "Number of columns"))) + (txt (TeX-read-string + (TeX-argument-prompt t nil "Text across columns")))) + (LaTeX-insert-environment + ;; Simply feed the function with "paracol", other option is + ;; something like: + ;; (replace-regexp-in-string (regexp-quote "*") "" env) + "paracol" + (concat + (when (and numleft (not (string= numleft ""))) + (format "[%s]" numleft)) + "*" + (format "{%s}" numcol) + (when (and txt (not (string= txt ""))) + (format "[%s]" txt))))))) + + ;; 7.2 Column-Switching Command and Environments + ;; \begin{column} body \end{column} + ;; \begin{column*}[text] body \end{column*} + '("column") + '("column*" [ "Text across columns" ] ) + + ;; \begin{nthcolumn}{col} body \end{nthcolumn} + ;; \begin{nthcolumn*}{col}[text] body \end{nthcolumn*} + '("nthcolumn" "Column") + '("nthcolumn*" "Column" [ "Text across columns" ] ) + + ;; \begin{leftcolumn} body \end{leftcolumn} + ;; \begin{leftcolumn*}[text] body \end{leftcolumn*} + ;; \begin{rightcolumn} body \end{rightcolumn} + ;; \begin{rightcolumn*}[text] body \end{rightcolumn*} + '("leftcolumn") + '("leftcolumn*" [ "Text across columns" ] ) + '("rightcolumn") + '("rightcolumn*" [ "Text across columns" ] )) + + (TeX-add-symbols + ;; 7.2 Column-Switching Command and Environments + ;; \switchcolumn[col] + ;; \switchcolumn[col]*[text] + '("switchcolumn" [ "Column" ] ) + '("switchcolumn*" [ TeX-arg-paracol-switchcolumn* ] ) + '("thecolumn") + '("definecolumnpreamble" "Column" t) + '("ensurevspace" TeX-arg-length) + + ;; 7.3 Commands for Column and Gap Width + ;; \columnratio{r0, r1, ... , rk}[r0', r1', ... , rk'] + '("columnratio" "Fraction(s)" [ "Fraction(s)" ] ) + + ;; \setcolumnwidth{s0, s1, ... , sk}[s0', s1', ... , sk'] + ;; with s as width/gap + '("setcolumnwidth" "Width/Gap" [ "Width/Gap" ] ) + + ;; 7.4 Commands for Two-Sided Typesetting and Marginal Note Placement + ;; \twosided[t1t2 ... tk] + '("twosided" [ "Features (combination of p, c, m, b)" ]) + + ;; \marginparthreshold{k}[k'] + '("marginparthreshold" "Number of columns" [ "Number of columns" ] ) + + ;; 7.5 Commands for Counters + ;; \globalcounter{ctr} + ;; \globalcounter* + '("globalcounter" TeX-arg-counter) + '("globalcounter*") + + ;; \localcounter{ctr} + '("localcounter" TeX-arg-counter) + + ;; \definethecounter{ctr}{col}{rep} + '("definethecounter" TeX-arg-counter "Column" t) + + ;; \synccounter{ctr} + '("synccounter" TeX-arg-counter) + '("syncallcounters") + + ;; 7.6 Page-Wise Footnotes + '("footnotelayout" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Layout") + '("c" "m" "p"))) + + ;; \footnote*[num]{text} + ;; \footnotemark*[num] + ;; \footnotetext*[num]{text} + ;; Copied from `latex.el' + '("footnote*" + (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) + t) + '("footnotetext*" + (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) + t) + '("footnotemark*" + (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil)) + + '("fncounteradjustment" 0) + '("nofncounteradjustment" 0) + + ;; 7.7 Commands for Coloring Texts and Column-Separating Rules + ;; \columncolor[mode]{color}[col] + ;; + ;; This clashes if colortbl.el is loaded since it provides a + ;; command with the same name but different arguments. We add + ;; the command only here but not for fontification + '("columncolor" (TeX-arg-conditional (member "xcolor" (TeX-style-list)) + (TeX-arg-xcolor) + (TeX-arg-color)) + [ "Column" ] ) + + ;; \normalcolumncolor[col] + '("normalcolumncolor" [ "Column" ] ) + '("coloredwordhyphenated" 0) + '("nocoloredwordhyphenated" 0) + + ;; \colseprulecolor[mode]{color}[col] + ;; \normalcolseprulecolor[col] + '("colseprulecolor" (TeX-arg-conditional (member "xcolor" (TeX-style-list)) + (TeX-arg-xcolor) + (TeX-arg-color)) + [ "Column" ] ) + '("normalcolseprulecolor" [ "Column" ] ) + + ;; 7.8 Commands for Background Painting + ;; \backgroundcolor{region}[mode]{color} + ;; \backgroundcolor{region(x0,y0)}[mode]{color} + ;; \backgroundcolor{region(x0,y0)(x1,y1)}[mode]{color} + '("backgroundcolor" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Region") + '("c" "g" "s" "f" "n" "p" "t" "b" "l" "r" + "C" "G" "S" "F" "N" "P" "T" "B" "L" "R")) + (TeX-arg-conditional (member "xcolor" (TeX-style-list)) + (TeX-arg-xcolor) + (TeX-arg-color))) + + ;; \nobackgroundcolor{region} + '("nobackgroundcolor" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Region") + '("c" "g" "s" "f" "n" "p" "t" "b" "l" "r" + "C" "G" "S" "F" "N" "P" "T" "B" "L" "R"))) + + ;; \resetbackgroundcolor + '("resetbackgroundcolor" 0) + + ;; 7.9 Control of Contents Output + ;; \addcontentsonly{file}{col} + '("addcontentsonly" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Content file") + '("toc" "lof" "lot")) + "Column") + + ;; 7.10 Page Flushing Commands + '("flushpage" 0)) + + ;; \belowfootnoteskip is a length: + (LaTeX-add-lengths "belowfootnoteskip") + + ;; \switchcolumn should get its own line: + (LaTeX-paragraph-commands-add-locally "switchcolumn") + + ;; Fontification + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("switchcolumn" "*[")) + ;; FIXME: Syntax is + ;; \switchcolumn[num]*[text]. + ;; font-latex.el doesn't handle the case + ;; where `*' comes after the first `['. + ;; Therefore, we use this compromise to + ;; get something fontified at least. + 'textual) + (font-latex-add-keywords '(("flushpage" "*[")) + 'warning) + (font-latex-add-keywords '(("footnote" "*[{") + ("footnotemark" "*[") + ("footnotetext" "*[{")) + 'reference) + (font-latex-add-keywords '(("definecolumnpreamble" "{{") + ("ensurevspace" "{") + ("columnratio" "{[") + ("setcolumnwidth" "{[") + ("twosided" "[") + ("marginparthreshold" "{[") + ;; FIXME: Syntax is + ;; \globalcounter{ctr} or + ;; \globalcounter* We ignore `{' since + ;; font-latex.el doesn't handle a + ;; missing bracket nicely. + ("globalcounter" "*") + ("definethecounter" "{{{") + ("synccounter" "{") + ("syncallcounters" "") + ("footnotelayout" "{") + ("fncounteradjustment" "") + ("nofncounteradjustment" "") + ("normalcolumncolor" "[") + ("coloredwordhyphenated" "") + ("nocoloredwordhyphenated" "") + ("colseprulecolor" "[{[") + ("normalcolseprulecolor" "[") + ("backgroundcolor" "{[{") + ("nobackgroundcolor" "{") + ("resetbackgroundcolor" "") + ("addcontentsonly" "{{")) + 'function))) + TeX-dialect) + +(defvar LaTeX-paracol-package-options nil + "Package options for the paracol package.") + +;;; paracol.el ends here |