mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-21 06:55:35 +00:00
1ec18b8ebc
* lisp/org-entities.el (org-entities--user-safe-p): Fix logic to validate a list of entries, rather than a single entry. Reported-by: "Aaron Madlon-Kay" <aaron@madlon-kay.com> Link: https://list.orgmode.org/874jgn7f7s.fsf@localhost/ TINYCHANGE
611 lines
29 KiB
EmacsLisp
611 lines
29 KiB
EmacsLisp
;;; org-entities.el --- Support for Special Entities -*- lexical-binding: t; -*-
|
||
|
||
;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
|
||
|
||
;; Author: Carsten Dominik <carsten.dominik@gmail.com>,
|
||
;; Ulf Stegemann <ulf at zeitform dot de>
|
||
;; Keywords: outlines, calendar, wp
|
||
;; URL: https://orgmode.org
|
||
;;
|
||
;; This file is part of GNU Emacs.
|
||
;;
|
||
;; GNU Emacs 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 of the License, or
|
||
;; (at your option) any later version.
|
||
|
||
;; GNU Emacs 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 GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;;
|
||
;;; Commentary:
|
||
|
||
;;; Code:
|
||
|
||
(require 'org-macs)
|
||
(org-assert-version)
|
||
|
||
(declare-function org-mode "org" ())
|
||
(declare-function org-toggle-pretty-entities "org" ())
|
||
(declare-function org-table-align "org-table" ())
|
||
|
||
(defgroup org-entities nil
|
||
"Options concerning entities in Org mode."
|
||
:tag "Org Entities"
|
||
:group 'org)
|
||
|
||
(defun org-entities--user-safe-p (v)
|
||
"Non-nil if V is a safe value for `org-entities-user'."
|
||
(cond
|
||
((not v) t)
|
||
((listp v)
|
||
(seq-every-p
|
||
(lambda (e)
|
||
(pcase e
|
||
(`(,(and (pred stringp)
|
||
(pred (string-match-p "\\`[a-zA-Z][a-zA-Z0-9]*\\'")))
|
||
,(pred stringp) ,(pred booleanp) ,(pred stringp)
|
||
,(pred stringp) ,(pred stringp) ,(pred stringp))
|
||
t)
|
||
(_ nil)))
|
||
v))))
|
||
|
||
(defcustom org-entities-user nil
|
||
"User-defined entities used in Org to produce special characters.
|
||
Each entry in this list is a list of strings. It associates the name
|
||
of the entity that can be inserted into an Org file as \\name with the
|
||
appropriate replacements for the different export backends. The order
|
||
of the fields is the following
|
||
|
||
name As a string, without the leading backslash.
|
||
LaTeX replacement In ready LaTeX, no further processing will take place.
|
||
LaTeX mathp Either t or nil. When t this entity needs to be in
|
||
math mode.
|
||
HTML replacement In ready HTML, no further processing will take place.
|
||
Usually this will be an &...; entity.
|
||
ASCII replacement Plain ASCII, no extensions.
|
||
Latin1 replacement Use the special characters available in latin1.
|
||
utf-8 replacement Use the special characters available in utf-8.
|
||
|
||
If you define new entities here that require specific LaTeX
|
||
packages to be loaded, add these packages to `org-latex-packages-alist'."
|
||
:group 'org-entities
|
||
:version "24.1"
|
||
:type '(repeat
|
||
(list
|
||
(string :tag "name ")
|
||
(string :tag "LaTeX ")
|
||
(boolean :tag "Require LaTeX math?")
|
||
(string :tag "HTML ")
|
||
(string :tag "ASCII ")
|
||
(string :tag "Latin1")
|
||
(string :tag "utf-8 ")))
|
||
:safe #'org-entities--user-safe-p)
|
||
|
||
(defconst org-entities
|
||
(append
|
||
'("* Letters"
|
||
"** Latin"
|
||
("Agrave" "\\`{A}" nil "À" "A" "À" "À")
|
||
("agrave" "\\`{a}" nil "à" "a" "à" "à")
|
||
("Aacute" "\\'{A}" nil "Á" "A" "Á" "Á")
|
||
("aacute" "\\'{a}" nil "á" "a" "á" "á")
|
||
("Acirc" "\\^{A}" nil "Â" "A" "Â" "Â")
|
||
("acirc" "\\^{a}" nil "â" "a" "â" "â")
|
||
("Amacr" "\\={A}" nil "Ā" "A" "Ã" "Ã")
|
||
("amacr" "\\={a}" nil "ā" "a" "ã" "ã")
|
||
("Atilde" "\\~{A}" nil "Ã" "A" "Ã" "Ã")
|
||
("atilde" "\\~{a}" nil "ã" "a" "ã" "ã")
|
||
("Auml" "\\\"{A}" nil "Ä" "Ae" "Ä" "Ä")
|
||
("auml" "\\\"{a}" nil "ä" "ae" "ä" "ä")
|
||
("Aring" "\\AA{}" nil "Å" "A" "Å" "Å")
|
||
("AA" "\\AA{}" nil "Å" "A" "Å" "Å")
|
||
("aring" "\\aa{}" nil "å" "a" "å" "å")
|
||
("AElig" "\\AE{}" nil "Æ" "AE" "Æ" "Æ")
|
||
("aelig" "\\ae{}" nil "æ" "ae" "æ" "æ")
|
||
("Ccedil" "\\c{C}" nil "Ç" "C" "Ç" "Ç")
|
||
("ccedil" "\\c{c}" nil "ç" "c" "ç" "ç")
|
||
("Egrave" "\\`{E}" nil "È" "E" "È" "È")
|
||
("egrave" "\\`{e}" nil "è" "e" "è" "è")
|
||
("Eacute" "\\'{E}" nil "É" "E" "É" "É")
|
||
("eacute" "\\'{e}" nil "é" "e" "é" "é")
|
||
("Ecirc" "\\^{E}" nil "Ê" "E" "Ê" "Ê")
|
||
("ecirc" "\\^{e}" nil "ê" "e" "ê" "ê")
|
||
("Euml" "\\\"{E}" nil "Ë" "E" "Ë" "Ë")
|
||
("euml" "\\\"{e}" nil "ë" "e" "ë" "ë")
|
||
("Igrave" "\\`{I}" nil "Ì" "I" "Ì" "Ì")
|
||
("igrave" "\\`{i}" nil "ì" "i" "ì" "ì")
|
||
("Iacute" "\\'{I}" nil "Í" "I" "Í" "Í")
|
||
("iacute" "\\'{i}" nil "í" "i" "í" "í")
|
||
("Idot" "\\.{I}" nil "&idot;" "I" "İ" "İ")
|
||
("inodot" "\\i" nil "ı" "i" "ı" "ı")
|
||
("Icirc" "\\^{I}" nil "Î" "I" "Î" "Î")
|
||
("icirc" "\\^{i}" nil "î" "i" "î" "î")
|
||
("Iuml" "\\\"{I}" nil "Ï" "I" "Ï" "Ï")
|
||
("iuml" "\\\"{i}" nil "ï" "i" "ï" "ï")
|
||
("Ntilde" "\\~{N}" nil "Ñ" "N" "Ñ" "Ñ")
|
||
("ntilde" "\\~{n}" nil "ñ" "n" "ñ" "ñ")
|
||
("Ograve" "\\`{O}" nil "Ò" "O" "Ò" "Ò")
|
||
("ograve" "\\`{o}" nil "ò" "o" "ò" "ò")
|
||
("Oacute" "\\'{O}" nil "Ó" "O" "Ó" "Ó")
|
||
("oacute" "\\'{o}" nil "ó" "o" "ó" "ó")
|
||
("Ocirc" "\\^{O}" nil "Ô" "O" "Ô" "Ô")
|
||
("ocirc" "\\^{o}" nil "ô" "o" "ô" "ô")
|
||
("Otilde" "\\~{O}" nil "Õ" "O" "Õ" "Õ")
|
||
("otilde" "\\~{o}" nil "õ" "o" "õ" "õ")
|
||
("Ouml" "\\\"{O}" nil "Ö" "Oe" "Ö" "Ö")
|
||
("ouml" "\\\"{o}" nil "ö" "oe" "ö" "ö")
|
||
("Oslash" "\\O" nil "Ø" "O" "Ø" "Ø")
|
||
("oslash" "\\o{}" nil "ø" "o" "ø" "ø")
|
||
("OElig" "\\OE{}" nil "Œ" "OE" "OE" "Œ")
|
||
("oelig" "\\oe{}" nil "œ" "oe" "oe" "œ")
|
||
("Scaron" "\\v{S}" nil "Š" "S" "S" "Š")
|
||
("scaron" "\\v{s}" nil "š" "s" "s" "š")
|
||
("szlig" "\\ss{}" nil "ß" "ss" "ß" "ß")
|
||
("Ugrave" "\\`{U}" nil "Ù" "U" "Ù" "Ù")
|
||
("ugrave" "\\`{u}" nil "ù" "u" "ù" "ù")
|
||
("Uacute" "\\'{U}" nil "Ú" "U" "Ú" "Ú")
|
||
("uacute" "\\'{u}" nil "ú" "u" "ú" "ú")
|
||
("Ucirc" "\\^{U}" nil "Û" "U" "Û" "Û")
|
||
("ucirc" "\\^{u}" nil "û" "u" "û" "û")
|
||
("Uuml" "\\\"{U}" nil "Ü" "Ue" "Ü" "Ü")
|
||
("uuml" "\\\"{u}" nil "ü" "ue" "ü" "ü")
|
||
("Yacute" "\\'{Y}" nil "Ý" "Y" "Ý" "Ý")
|
||
("yacute" "\\'{y}" nil "ý" "y" "ý" "ý")
|
||
("Yuml" "\\\"{Y}" nil "Ÿ" "Y" "Y" "Ÿ")
|
||
("yuml" "\\\"{y}" nil "ÿ" "y" "ÿ" "ÿ")
|
||
|
||
"** Latin (special face)"
|
||
("fnof" "\\textit{f}" nil "ƒ" "f" "f" "ƒ")
|
||
("real" "\\Re" t "ℜ" "R" "R" "ℜ")
|
||
("image" "\\Im" t "ℑ" "I" "I" "ℑ")
|
||
("weierp" "\\wp" t "℘" "P" "P" "℘")
|
||
("ell" "\\ell" t "ℓ" "ell" "ell" "ℓ")
|
||
("imath" "\\imath" t "ı" "[dotless i]" "dotless i" "ı")
|
||
("jmath" "\\jmath" t "ȷ" "[dotless j]" "dotless j" "ȷ")
|
||
|
||
"** Greek"
|
||
("Alpha" "A" nil "Α" "Alpha" "Alpha" "Α")
|
||
("alpha" "\\alpha" t "α" "alpha" "alpha" "α")
|
||
("Beta" "B" nil "Β" "Beta" "Beta" "Β")
|
||
("beta" "\\beta" t "β" "beta" "beta" "β")
|
||
("Gamma" "\\Gamma" t "Γ" "Gamma" "Gamma" "Γ")
|
||
("gamma" "\\gamma" t "γ" "gamma" "gamma" "γ")
|
||
("Delta" "\\Delta" t "Δ" "Delta" "Delta" "Δ")
|
||
("delta" "\\delta" t "δ" "delta" "delta" "δ")
|
||
("Epsilon" "E" nil "Ε" "Epsilon" "Epsilon" "Ε")
|
||
("epsilon" "\\epsilon" t "ε" "epsilon" "epsilon" "ε")
|
||
("varepsilon" "\\varepsilon" t "ε" "varepsilon" "varepsilon" "ε")
|
||
("Zeta" "Z" nil "Ζ" "Zeta" "Zeta" "Ζ")
|
||
("zeta" "\\zeta" t "ζ" "zeta" "zeta" "ζ")
|
||
("Eta" "H" nil "Η" "Eta" "Eta" "Η")
|
||
("eta" "\\eta" t "η" "eta" "eta" "η")
|
||
("Theta" "\\Theta" t "Θ" "Theta" "Theta" "Θ")
|
||
("theta" "\\theta" t "θ" "theta" "theta" "θ")
|
||
("thetasym" "\\vartheta" t "ϑ" "theta" "theta" "ϑ")
|
||
("vartheta" "\\vartheta" t "ϑ" "theta" "theta" "ϑ")
|
||
("Iota" "I" nil "Ι" "Iota" "Iota" "Ι")
|
||
("iota" "\\iota" t "ι" "iota" "iota" "ι")
|
||
("Kappa" "K" nil "Κ" "Kappa" "Kappa" "Κ")
|
||
("kappa" "\\kappa" t "κ" "kappa" "kappa" "κ")
|
||
("Lambda" "\\Lambda" t "Λ" "Lambda" "Lambda" "Λ")
|
||
("lambda" "\\lambda" t "λ" "lambda" "lambda" "λ")
|
||
("Mu" "M" nil "Μ" "Mu" "Mu" "Μ")
|
||
("mu" "\\mu" t "μ" "mu" "mu" "μ")
|
||
("nu" "\\nu" t "ν" "nu" "nu" "ν")
|
||
("Nu" "N" nil "Ν" "Nu" "Nu" "Ν")
|
||
("Xi" "\\Xi" t "Ξ" "Xi" "Xi" "Ξ")
|
||
("xi" "\\xi" t "ξ" "xi" "xi" "ξ")
|
||
("Omicron" "O" nil "Ο" "Omicron" "Omicron" "Ο")
|
||
("omicron" "\\textit{o}" nil "ο" "omicron" "omicron" "ο")
|
||
("Pi" "\\Pi" t "Π" "Pi" "Pi" "Π")
|
||
("pi" "\\pi" t "π" "pi" "pi" "π")
|
||
("Rho" "P" nil "Ρ" "Rho" "Rho" "Ρ")
|
||
("rho" "\\rho" t "ρ" "rho" "rho" "ρ")
|
||
("Sigma" "\\Sigma" t "Σ" "Sigma" "Sigma" "Σ")
|
||
("sigma" "\\sigma" t "σ" "sigma" "sigma" "σ")
|
||
("sigmaf" "\\varsigma" t "ς" "sigmaf" "sigmaf" "ς")
|
||
("varsigma" "\\varsigma" t "ς" "varsigma" "varsigma" "ς")
|
||
("Tau" "T" nil "Τ" "Tau" "Tau" "Τ")
|
||
("Upsilon" "\\Upsilon" t "Υ" "Upsilon" "Upsilon" "Υ")
|
||
("upsih" "\\Upsilon" t "ϒ" "upsilon" "upsilon" "ϒ")
|
||
("upsilon" "\\upsilon" t "υ" "upsilon" "upsilon" "υ")
|
||
("Phi" "\\Phi" t "Φ" "Phi" "Phi" "Φ")
|
||
("phi" "\\phi" t "φ" "phi" "phi" "ɸ")
|
||
("varphi" "\\varphi" t "ϕ" "varphi" "varphi" "φ")
|
||
("Chi" "X" nil "Χ" "Chi" "Chi" "Χ")
|
||
("chi" "\\chi" t "χ" "chi" "chi" "χ")
|
||
("acutex" "\\acute x" t "´x" "'x" "'x" "𝑥́")
|
||
("Psi" "\\Psi" t "Ψ" "Psi" "Psi" "Ψ")
|
||
("psi" "\\psi" t "ψ" "psi" "psi" "ψ")
|
||
("tau" "\\tau" t "τ" "tau" "tau" "τ")
|
||
("Omega" "\\Omega" t "Ω" "Omega" "Omega" "Ω")
|
||
("omega" "\\omega" t "ω" "omega" "omega" "ω")
|
||
("piv" "\\varpi" t "ϖ" "omega-pi" "omega-pi" "ϖ")
|
||
("varpi" "\\varpi" t "ϖ" "omega-pi" "omega-pi" "ϖ")
|
||
("partial" "\\partial" t "∂" "[partial differential]" "[partial differential]" "∂")
|
||
|
||
"** Hebrew"
|
||
("alefsym" "\\aleph" t "ℵ" "aleph" "aleph" "ℵ")
|
||
("aleph" "\\aleph" t "ℵ" "aleph" "aleph" "ℵ")
|
||
("gimel" "\\gimel" t "ℷ" "gimel" "gimel" "ℷ")
|
||
("beth" "\\beth" t "ℶ" "beth" "beth" "ב")
|
||
("dalet" "\\daleth" t "ℸ" "dalet" "dalet" "ד")
|
||
|
||
"** Icelandic"
|
||
("ETH" "\\DH{}" nil "Ð" "D" "Ð" "Ð")
|
||
("eth" "\\dh{}" nil "ð" "dh" "ð" "ð")
|
||
("THORN" "\\TH{}" nil "Þ" "TH" "Þ" "Þ")
|
||
("thorn" "\\th{}" nil "þ" "th" "þ" "þ")
|
||
|
||
"* Punctuation"
|
||
"** Dots and Marks"
|
||
("dots" "\\dots{}" nil "…" "..." "..." "…")
|
||
("cdots" "\\cdots{}" t "⋯" "..." "..." "⋯")
|
||
("hellip" "\\dots{}" nil "…" "..." "..." "…")
|
||
("middot" "\\textperiodcentered{}" nil "·" "." "·" "·")
|
||
("iexcl" "!`" nil "¡" "!" "¡" "¡")
|
||
("iquest" "?`" nil "¿" "?" "¿" "¿")
|
||
|
||
"** Dash-like"
|
||
("shy" "\\-" nil "­" "" "" "")
|
||
("ndash" "--" nil "–" "-" "-" "–")
|
||
("mdash" "---" nil "—" "--" "--" "—")
|
||
|
||
"** Quotations"
|
||
("quot" "\\textquotedbl{}" nil """ "\"" "\"" "\"")
|
||
("acute" "\\textasciiacute{}" nil "´" "'" "´" "´")
|
||
("ldquo" "\\textquotedblleft{}" nil "“" "\"" "\"" "“")
|
||
("rdquo" "\\textquotedblright{}" nil "”" "\"" "\"" "”")
|
||
("bdquo" "\\quotedblbase{}" nil "„" "\"" "\"" "„")
|
||
("lsquo" "\\textquoteleft{}" nil "‘" "`" "`" "‘")
|
||
("rsquo" "\\textquoteright{}" nil "’" "'" "'" "’")
|
||
("sbquo" "\\quotesinglbase{}" nil "‚" "," "," "‚")
|
||
("laquo" "\\guillemotleft{}" nil "«" "<<" "«" "«")
|
||
("raquo" "\\guillemotright{}" nil "»" ">>" "»" "»")
|
||
("lsaquo" "\\guilsinglleft{}" nil "‹" "<" "<" "‹")
|
||
("rsaquo" "\\guilsinglright{}" nil "›" ">" ">" "›")
|
||
|
||
"* Other"
|
||
"** Misc. (often used)"
|
||
("circ" "\\^{}" nil "ˆ" "^" "^" "∘")
|
||
("vert" "\\vert{}" t "|" "|" "|" "|")
|
||
("vbar" "|" nil "|" "|" "|" "|")
|
||
("brvbar" "\\textbrokenbar{}" nil "¦" "|" "¦" "¦")
|
||
("S" "\\S" nil "§" "paragraph" "§" "§")
|
||
("sect" "\\S" nil "§" "paragraph" "§" "§")
|
||
("amp" "\\&" nil "&" "&" "&" "&")
|
||
("lt" "\\textless{}" nil "<" "<" "<" "<")
|
||
("gt" "\\textgreater{}" nil ">" ">" ">" ">")
|
||
("tilde" "\\textasciitilde{}" nil "~" "~" "~" "~")
|
||
("slash" "/" nil "/" "/" "/" "/")
|
||
("plus" "+" nil "+" "+" "+" "+")
|
||
("under" "\\_" nil "_" "_" "_" "_")
|
||
("equal" "=" nil "=" "=" "=" "=")
|
||
("asciicirc" "\\textasciicircum{}" nil "^" "^" "^" "^")
|
||
("dagger" "\\textdagger{}" nil "†" "[dagger]" "[dagger]" "†")
|
||
("dag" "\\dag{}" nil "†" "[dagger]" "[dagger]" "†")
|
||
("Dagger" "\\textdaggerdbl{}" nil "‡" "[doubledagger]" "[doubledagger]" "‡")
|
||
("ddag" "\\ddag{}" nil "‡" "[doubledagger]" "[doubledagger]" "‡")
|
||
|
||
"** Whitespace"
|
||
("nbsp" "~" nil " " " " "\x00A0" "\x00A0")
|
||
("ensp" "\\hspace*{.5em}" nil " " " " " " " ")
|
||
("emsp" "\\hspace*{1em}" nil " " " " " " " ")
|
||
("thinsp" "\\hspace*{.2em}" nil " " " " " " " ")
|
||
|
||
"** Currency"
|
||
("curren" "\\textcurrency{}" nil "¤" "curr." "¤" "¤")
|
||
("cent" "\\textcent{}" nil "¢" "cent" "¢" "¢")
|
||
("pound" "\\pounds{}" nil "£" "pound" "£" "£")
|
||
("yen" "\\textyen{}" nil "¥" "yen" "¥" "¥")
|
||
("euro" "\\texteuro{}" nil "€" "EUR" "EUR" "€")
|
||
("EUR" "\\texteuro{}" nil "€" "EUR" "EUR" "€")
|
||
("dollar" "\\$" nil "$" "$" "$" "$")
|
||
("USD" "\\$" nil "$" "$" "$" "$")
|
||
|
||
"** Property Marks"
|
||
("copy" "\\textcopyright{}" nil "©" "(c)" "©" "©")
|
||
("reg" "\\textregistered{}" nil "®" "(r)" "®" "®")
|
||
("trade" "\\texttrademark{}" nil "™" "TM" "TM" "™")
|
||
|
||
"** Science et al."
|
||
("minus" "-" t "−" "-" "-" "−")
|
||
("pm" "\\textpm{}" nil "±" "+-" "±" "±")
|
||
("plusmn" "\\textpm{}" nil "±" "+-" "±" "±")
|
||
("times" "\\texttimes{}" nil "×" "*" "×" "×")
|
||
("frasl" "/" nil "⁄" "/" "/" "⁄")
|
||
("colon" "\\colon" t ":" ":" ":" ":")
|
||
("div" "\\textdiv{}" nil "÷" "/" "÷" "÷")
|
||
("frac12" "\\textonehalf{}" nil "½" "1/2" "½" "½")
|
||
("frac14" "\\textonequarter{}" nil "¼" "1/4" "¼" "¼")
|
||
("frac34" "\\textthreequarters{}" nil "¾" "3/4" "¾" "¾")
|
||
("permil" "\\textperthousand{}" nil "‰" "per thousand" "per thousand" "‰")
|
||
("sup1" "\\textonesuperior{}" nil "¹" "^1" "¹" "¹")
|
||
("sup2" "\\texttwosuperior{}" nil "²" "^2" "²" "²")
|
||
("sup3" "\\textthreesuperior{}" nil "³" "^3" "³" "³")
|
||
("radic" "\\sqrt{\\,}" t "√" "[square root]" "[square root]" "√")
|
||
("sum" "\\sum" t "∑" "[sum]" "[sum]" "∑")
|
||
("prod" "\\prod" t "∏" "[product]" "[n-ary product]" "∏")
|
||
("micro" "\\textmu{}" nil "µ" "micro" "µ" "µ")
|
||
("macr" "\\textasciimacron{}" nil "¯" "[macron]" "¯" "¯")
|
||
("deg" "\\textdegree{}" nil "°" "degree" "°" "°")
|
||
("prime" "\\prime" t "′" "'" "'" "′")
|
||
("Prime" "\\prime{}\\prime" t "″" "''" "''" "″")
|
||
("infin" "\\infty" t "∞" "[infinity]" "[infinity]" "∞")
|
||
("infty" "\\infty" t "∞" "[infinity]" "[infinity]" "∞")
|
||
("prop" "\\propto" t "∝" "[proportional to]" "[proportional to]" "∝")
|
||
("propto" "\\propto" t "∝" "[proportional to]" "[proportional to]" "∝")
|
||
("not" "\\textlnot{}" nil "¬" "[angled dash]" "¬" "¬")
|
||
("neg" "\\neg{}" t "¬" "[angled dash]" "¬" "¬")
|
||
("land" "\\land" t "∧" "[logical and]" "[logical and]" "∧")
|
||
("wedge" "\\wedge" t "∧" "[logical and]" "[logical and]" "∧")
|
||
("lor" "\\lor" t "∨" "[logical or]" "[logical or]" "∨")
|
||
("vee" "\\vee" t "∨" "[logical or]" "[logical or]" "∨")
|
||
("cap" "\\cap" t "∩" "[intersection]" "[intersection]" "∩")
|
||
("cup" "\\cup" t "∪" "[union]" "[union]" "∪")
|
||
("smile" "\\smile" t "⌣" "[cup product]" "[cup product]" "⌣")
|
||
("frown" "\\frown" t "⌢" "[Cap product]" "[cap product]" "⌢")
|
||
("int" "\\int" t "∫" "[integral]" "[integral]" "∫")
|
||
("therefore" "\\therefore" t "∴" "[therefore]" "[therefore]" "∴")
|
||
("there4" "\\therefore" t "∴" "[therefore]" "[therefore]" "∴")
|
||
("because" "\\because" t "∵" "[because]" "[because]" "∵")
|
||
("sim" "\\sim" t "∼" "~" "~" "∼")
|
||
("cong" "\\cong" t "≅" "[approx. equal to]" "[approx. equal to]" "≅")
|
||
("simeq" "\\simeq" t "≅" "[approx. equal to]" "[approx. equal to]" "≅")
|
||
("asymp" "\\asymp" t "≈" "[almost equal to]" "[almost equal to]" "≈")
|
||
("approx" "\\approx" t "≈" "[almost equal to]" "[almost equal to]" "≈")
|
||
("ne" "\\ne" t "≠" "[not equal to]" "[not equal to]" "≠")
|
||
("neq" "\\neq" t "≠" "[not equal to]" "[not equal to]" "≠")
|
||
("equiv" "\\equiv" t "≡" "[identical to]" "[identical to]" "≡")
|
||
|
||
("triangleq" "\\triangleq" t "≜" "[defined to]" "[defined to]" "≜")
|
||
("le" "\\le" t "≤" "<=" "<=" "≤")
|
||
("leq" "\\le" t "≤" "<=" "<=" "≤")
|
||
("ge" "\\ge" t "≥" ">=" ">=" "≥")
|
||
("geq" "\\ge" t "≥" ">=" ">=" "≥")
|
||
("lessgtr" "\\lessgtr" t "≶" "[less than or greater than]" "[less than or greater than]" "≶")
|
||
("lesseqgtr" "\\lesseqgtr" t "⋚" "[less than or equal or greater than or equal]" "[less than or equal or greater than or equal]" "⋚")
|
||
("ll" "\\ll" t "≪" "<<" "<<" "≪")
|
||
("Ll" "\\lll" t "⋘" "<<<" "<<<" "⋘")
|
||
("lll" "\\lll" t "⋘" "<<<" "<<<" "⋘")
|
||
("gg" "\\gg" t "≫" ">>" ">>" "≫")
|
||
("Gg" "\\ggg" t "⋙" ">>>" ">>>" "⋙")
|
||
("ggg" "\\ggg" t "⋙" ">>>" ">>>" "⋙")
|
||
("prec" "\\prec" t "≺" "[precedes]" "[precedes]" "≺")
|
||
("preceq" "\\preceq" t "≼" "[precedes or equal]" "[precedes or equal]" "≼")
|
||
("preccurlyeq" "\\preccurlyeq" t "≼" "[precedes or equal]" "[precedes or equal]" "≼")
|
||
("succ" "\\succ" t "≻" "[succeeds]" "[succeeds]" "≻")
|
||
("succeq" "\\succeq" t "≽" "[succeeds or equal]" "[succeeds or equal]" "≽")
|
||
("succcurlyeq" "\\succcurlyeq" t "≽" "[succeeds or equal]" "[succeeds or equal]" "≽")
|
||
("sub" "\\subset" t "⊂" "[subset of]" "[subset of]" "⊂")
|
||
("subset" "\\subset" t "⊂" "[subset of]" "[subset of]" "⊂")
|
||
("sup" "\\supset" t "⊃" "[superset of]" "[superset of]" "⊃")
|
||
("supset" "\\supset" t "⊃" "[superset of]" "[superset of]" "⊃")
|
||
("nsub" "\\not\\subset" t "⊄" "[not a subset of]" "[not a subset of" "⊄")
|
||
("sube" "\\subseteq" t "⊆" "[subset of or equal to]" "[subset of or equal to]" "⊆")
|
||
("nsup" "\\not\\supset" t "⊅" "[not a superset of]" "[not a superset of]" "⊅")
|
||
("supe" "\\supseteq" t "⊇" "[superset of or equal to]" "[superset of or equal to]" "⊇")
|
||
("setminus" "\\setminus" t "∖" "\" "\" "⧵")
|
||
("forall" "\\forall" t "∀" "[for all]" "[for all]" "∀")
|
||
("exist" "\\exists" t "∃" "[there exists]" "[there exists]" "∃")
|
||
("exists" "\\exists" t "∃" "[there exists]" "[there exists]" "∃")
|
||
("nexist" "\\nexists" t "∃" "[there does not exists]" "[there does not exists]" "∄")
|
||
("nexists" "\\nexists" t "∃" "[there does not exists]" "[there does not exists]" "∄")
|
||
("empty" "\\emptyset" t "∅" "[empty set]" "[empty set]" "∅")
|
||
("emptyset" "\\emptyset" t "∅" "[empty set]" "[empty set]" "∅")
|
||
("isin" "\\in" t "∈" "[element of]" "[element of]" "∈")
|
||
("in" "\\in" t "∈" "[element of]" "[element of]" "∈")
|
||
("notin" "\\notin" t "∉" "[not an element of]" "[not an element of]" "∉")
|
||
("ni" "\\ni" t "∋" "[contains as member]" "[contains as member]" "∋")
|
||
("nabla" "\\nabla" t "∇" "[nabla]" "[nabla]" "∇")
|
||
("ang" "\\angle" t "∠" "[angle]" "[angle]" "∠")
|
||
("angle" "\\angle" t "∠" "[angle]" "[angle]" "∠")
|
||
("perp" "\\perp" t "⊥" "[up tack]" "[up tack]" "⊥")
|
||
("parallel" "\\parallel" t "∥" "||" "||" "∥")
|
||
("sdot" "\\cdot" t "⋅" "[dot]" "[dot]" "⋅")
|
||
("cdot" "\\cdot" t "⋅" "[dot]" "[dot]" "⋅")
|
||
("lceil" "\\lceil" t "⌈" "[left ceiling]" "[left ceiling]" "⌈")
|
||
("rceil" "\\rceil" t "⌉" "[right ceiling]" "[right ceiling]" "⌉")
|
||
("lfloor" "\\lfloor" t "⌊" "[left floor]" "[left floor]" "⌊")
|
||
("rfloor" "\\rfloor" t "⌋" "[right floor]" "[right floor]" "⌋")
|
||
("lang" "\\langle" t "⟨" "<" "<" "⟨")
|
||
("rang" "\\rangle" t "⟩" ">" ">" "⟩")
|
||
("langle" "\\langle" t "⟨" "<" "<" "⟨")
|
||
("rangle" "\\rangle" t "⟩" ">" ">" "⟩")
|
||
("hbar" "\\hbar" t "ℏ" "hbar" "hbar" "ℏ")
|
||
("mho" "\\mho" t "℧" "mho" "mho" "℧")
|
||
|
||
"** Arrows"
|
||
("larr" "\\leftarrow" t "←" "<-" "<-" "←")
|
||
("leftarrow" "\\leftarrow" t "←" "<-" "<-" "←")
|
||
("gets" "\\gets" t "←" "<-" "<-" "←")
|
||
("lArr" "\\Leftarrow" t "⇐" "<=" "<=" "⇐")
|
||
("Leftarrow" "\\Leftarrow" t "⇐" "<=" "<=" "⇐")
|
||
("uarr" "\\uparrow" t "↑" "[uparrow]" "[uparrow]" "↑")
|
||
("uparrow" "\\uparrow" t "↑" "[uparrow]" "[uparrow]" "↑")
|
||
("uArr" "\\Uparrow" t "⇑" "[dbluparrow]" "[dbluparrow]" "⇑")
|
||
("Uparrow" "\\Uparrow" t "⇑" "[dbluparrow]" "[dbluparrow]" "⇑")
|
||
("rarr" "\\rightarrow" t "→" "->" "->" "→")
|
||
("to" "\\to" t "→" "->" "->" "→")
|
||
("rightarrow" "\\rightarrow" t "→" "->" "->" "→")
|
||
("rArr" "\\Rightarrow" t "⇒" "=>" "=>" "⇒")
|
||
("Rightarrow" "\\Rightarrow" t "⇒" "=>" "=>" "⇒")
|
||
("darr" "\\downarrow" t "↓" "[downarrow]" "[downarrow]" "↓")
|
||
("downarrow" "\\downarrow" t "↓" "[downarrow]" "[downarrow]" "↓")
|
||
("dArr" "\\Downarrow" t "⇓" "[dbldownarrow]" "[dbldownarrow]" "⇓")
|
||
("Downarrow" "\\Downarrow" t "⇓" "[dbldownarrow]" "[dbldownarrow]" "⇓")
|
||
("harr" "\\leftrightarrow" t "↔" "<->" "<->" "↔")
|
||
("leftrightarrow" "\\leftrightarrow" t "↔" "<->" "<->" "↔")
|
||
("hArr" "\\Leftrightarrow" t "⇔" "<=>" "<=>" "⇔")
|
||
("Leftrightarrow" "\\Leftrightarrow" t "⇔" "<=>" "<=>" "⇔")
|
||
("crarr" "\\hookleftarrow" t "↵" "<-'" "<-'" "↵")
|
||
("hookleftarrow" "\\hookleftarrow" t "↵" "<-'" "<-'" "↵")
|
||
|
||
"** Function names"
|
||
("arccos" "\\arccos" t "arccos" "arccos" "arccos" "arccos")
|
||
("arcsin" "\\arcsin" t "arcsin" "arcsin" "arcsin" "arcsin")
|
||
("arctan" "\\arctan" t "arctan" "arctan" "arctan" "arctan")
|
||
("arg" "\\arg" t "arg" "arg" "arg" "arg")
|
||
("cos" "\\cos" t "cos" "cos" "cos" "cos")
|
||
("cosh" "\\cosh" t "cosh" "cosh" "cosh" "cosh")
|
||
("cot" "\\cot" t "cot" "cot" "cot" "cot")
|
||
("coth" "\\coth" t "coth" "coth" "coth" "coth")
|
||
("csc" "\\csc" t "csc" "csc" "csc" "csc")
|
||
("deg" "\\deg" t "°" "deg" "deg" "deg")
|
||
("det" "\\det" t "det" "det" "det" "det")
|
||
("dim" "\\dim" t "dim" "dim" "dim" "dim")
|
||
("exp" "\\exp" t "exp" "exp" "exp" "exp")
|
||
("gcd" "\\gcd" t "gcd" "gcd" "gcd" "gcd")
|
||
("hom" "\\hom" t "hom" "hom" "hom" "hom")
|
||
("inf" "\\inf" t "inf" "inf" "inf" "inf")
|
||
("ker" "\\ker" t "ker" "ker" "ker" "ker")
|
||
("lg" "\\lg" t "lg" "lg" "lg" "lg")
|
||
("lim" "\\lim" t "lim" "lim" "lim" "lim")
|
||
("liminf" "\\liminf" t "liminf" "liminf" "liminf" "liminf")
|
||
("limsup" "\\limsup" t "limsup" "limsup" "limsup" "limsup")
|
||
("ln" "\\ln" t "ln" "ln" "ln" "ln")
|
||
("log" "\\log" t "log" "log" "log" "log")
|
||
("max" "\\max" t "max" "max" "max" "max")
|
||
("min" "\\min" t "min" "min" "min" "min")
|
||
("Pr" "\\Pr" t "Pr" "Pr" "Pr" "Pr")
|
||
("sec" "\\sec" t "sec" "sec" "sec" "sec")
|
||
("sin" "\\sin" t "sin" "sin" "sin" "sin")
|
||
("sinh" "\\sinh" t "sinh" "sinh" "sinh" "sinh")
|
||
("sup" "\\sup" t "⊃" "sup" "sup" "sup")
|
||
("tan" "\\tan" t "tan" "tan" "tan" "tan")
|
||
("tanh" "\\tanh" t "tanh" "tanh" "tanh" "tanh")
|
||
|
||
"** Signs & Symbols"
|
||
("bull" "\\textbullet{}" nil "•" "*" "*" "•")
|
||
("bullet" "\\textbullet{}" nil "•" "*" "*" "•")
|
||
("star" "\\star" t "*" "*" "*" "⋆")
|
||
("lowast" "\\ast" t "∗" "*" "*" "∗")
|
||
("ast" "\\ast" t "∗" "*" "*" "*")
|
||
("odot" "\\odot" t "o" "[circled dot]" "[circled dot]" "ʘ")
|
||
("oplus" "\\oplus" t "⊕" "[circled plus]" "[circled plus]" "⊕")
|
||
("otimes" "\\otimes" t "⊗" "[circled times]" "[circled times]" "⊗")
|
||
("check" "\\checkmark" t "✓" "[checkmark]" "[checkmark]" "✓")
|
||
("checkmark" "\\checkmark" t "✓" "[checkmark]" "[checkmark]" "✓")
|
||
|
||
"** Miscellaneous (seldom used)"
|
||
("para" "\\P{}" nil "¶" "[pilcrow]" "¶" "¶")
|
||
("ordf" "\\textordfeminine{}" nil "ª" "_a_" "ª" "ª")
|
||
("ordm" "\\textordmasculine{}" nil "º" "_o_" "º" "º")
|
||
("cedil" "\\c{}" nil "¸" "[cedilla]" "¸" "¸")
|
||
("oline" "\\overline{~}" t "‾" "[overline]" "¯" "‾")
|
||
("uml" "\\textasciidieresis{}" nil "¨" "[diaeresis]" "¨" "¨")
|
||
("zwnj" "\\/{}" nil "‌" "" "" "")
|
||
("zwj" "" nil "‍" "" "" "")
|
||
("lrm" "" nil "‎" "" "" "")
|
||
("rlm" "" nil "‏" "" "" "")
|
||
|
||
"** Smilies"
|
||
("smiley" "\\ddot\\smile" t "☺" ":-)" ":-)" "☺")
|
||
("blacksmile" "\\ddot\\smile" t "☻" ":-)" ":-)" "☻")
|
||
("sad" "\\ddot\\frown" t "☹" ":-(" ":-(" "☹")
|
||
("frowny" "\\ddot\\frown" t "☹" ":-(" ":-(" "☹")
|
||
|
||
"** Suits"
|
||
("clubs" "\\clubsuit" t "♣" "[clubs]" "[clubs]" "♣")
|
||
("clubsuit" "\\clubsuit" t "♣" "[clubs]" "[clubs]" "♣")
|
||
("spades" "\\spadesuit" t "♠" "[spades]" "[spades]" "♠")
|
||
("spadesuit" "\\spadesuit" t "♠" "[spades]" "[spades]" "♠")
|
||
("hearts" "\\heartsuit" t "♥" "[hearts]" "[hearts]" "♥")
|
||
("heartsuit" "\\heartsuit" t "♥" "[hearts]" "[hearts]" "♥")
|
||
("diams" "\\diamondsuit" t "♦" "[diamonds]" "[diamonds]" "◆")
|
||
("diamondsuit" "\\diamondsuit" t "♦" "[diamonds]" "[diamonds]" "◆")
|
||
("diamond" "\\diamondsuit" t "⋄" "[diamond]" "[diamond]" "◆")
|
||
("Diamond" "\\diamondsuit" t "⋄" "[diamond]" "[diamond]" "◆")
|
||
("loz" "\\lozenge" t "◊" "[lozenge]" "[lozenge]" "⧫"))
|
||
;; Add "\_ "-entity family for spaces.
|
||
(let (space-entities html-spaces (entity "_"))
|
||
(dolist (n (number-sequence 1 20) (nreverse space-entities))
|
||
(let ((spaces (make-string n ?\s)))
|
||
(push (list (setq entity (concat entity " "))
|
||
(format "\\hspace*{%sem}" (* n .5))
|
||
nil
|
||
(setq html-spaces (concat " " html-spaces))
|
||
spaces
|
||
spaces
|
||
(make-string n ?\x2002))
|
||
space-entities)))))
|
||
"Default entities used in Org mode to produce special characters.
|
||
For details see `org-entities-user'.")
|
||
|
||
(defsubst org-entity-get (name)
|
||
"Get the proper association for NAME from the entity lists.
|
||
This first checks the user list, then the built-in list."
|
||
(or (assoc name org-entities-user)
|
||
(assoc name org-entities)))
|
||
|
||
;; Helpfunctions to create a table for orgmode.org/worg/org-symbols.org
|
||
|
||
(defun org-entities-create-table ()
|
||
"Create an Org mode table with all entities."
|
||
(interactive)
|
||
(let ((pos (point)))
|
||
(insert "|Name|LaTeX code|LaTeX|HTML code |HTML|ASCII|Latin1|UTF-8\n|-\n")
|
||
(dolist (e org-entities)
|
||
(pcase e
|
||
(`(,name ,latex ,mathp ,html ,ascii ,latin ,utf8)
|
||
(when (equal ascii "|") (setq ascii "\\vert"))
|
||
(when (equal latin "|") (setq latin "\\vert"))
|
||
(when (equal utf8 "|") (setq utf8 "\\vert"))
|
||
(when (equal ascii "=>") (setq ascii "= >"))
|
||
(when (equal latin "=>") (setq latin "= >"))
|
||
(insert "|" name
|
||
"|" (format "=%s=" latex)
|
||
"|" (format (if mathp "$%s$" "$\\mbox{%s}$") latex)
|
||
"|" (format "=%s=" html) "|" html
|
||
"|" ascii "|" latin "|" utf8
|
||
"|\n"))))
|
||
(goto-char pos)
|
||
(org-table-align)))
|
||
|
||
(defvar org-pretty-entities) ;; declare defcustom from org
|
||
(defun org-entities-help ()
|
||
"Create a Help buffer with all available entities."
|
||
(interactive)
|
||
(with-output-to-temp-buffer "*Org Entity Help*"
|
||
(princ "Org mode entities\n=================\n\n")
|
||
(let ((ll (append '("* User-defined additions (variable org-entities-user)")
|
||
org-entities-user
|
||
org-entities))
|
||
(lastwasstring t)
|
||
(head (concat
|
||
"\n"
|
||
" Symbol Org entity LaTeX code HTML code\n"
|
||
" -----------------------------------------------------------\n")))
|
||
(dolist (e ll)
|
||
(pcase e
|
||
(`(,name ,latex ,_ ,html ,_ ,_ ,utf8)
|
||
(when lastwasstring
|
||
(princ head)
|
||
(setq lastwasstring nil))
|
||
(princ (format " %-8s \\%-16s %-22s %-13s\n"
|
||
utf8 name latex html)))
|
||
((pred stringp)
|
||
(princ e)
|
||
(princ "\n")
|
||
(setq lastwasstring t))))))
|
||
(with-current-buffer "*Org Entity Help*"
|
||
(org-mode)
|
||
(when org-pretty-entities
|
||
(org-toggle-pretty-entities)))
|
||
(select-window (get-buffer-window "*Org Entity Help*")))
|
||
|
||
|
||
(provide 'org-entities)
|
||
|
||
;; Local variables:
|
||
;; coding: utf-8
|
||
;; End:
|
||
|
||
;;; org-entities.el ends here
|