summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/paracol.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/auctex-13.1.3/style/paracol.el')
-rw-r--r--elpa/auctex-13.1.3/style/paracol.el294
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