]> code.delx.au - gnu-emacs/blob - lisp/org/org-entities.el
Update copyright notices for 2013.
[gnu-emacs] / lisp / org / org-entities.el
1 ;;; org-entities.el --- Support for special entities in Org-mode
2
3 ;; Copyright (C) 2010-2013 Free Software Foundation, Inc.
4
5 ;; Author: Carsten Dominik <carsten at orgmode dot org>,
6 ;; Ulf Stegemann <ulf at zeitform dot de>
7 ;; Keywords: outlines, calendar, wp
8 ;; Homepage: http://orgmode.org
9 ;;
10 ;; This file is part of GNU Emacs.
11 ;;
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
13 ;; it under the terms of the GNU General Public License as published by
14 ;; the Free Software Foundation, either version 3 of the License, or
15 ;; (at your option) any later version.
16
17 ;; GNU Emacs is distributed in the hope that it will be useful,
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 ;; GNU General Public License for more details.
21
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
24 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25 ;;
26 ;;; Commentary:
27
28 ;;; Code:
29
30 (require 'org-macs)
31
32 (declare-function org-table-align "org-table" ())
33
34 (eval-when-compile
35 (require 'cl))
36
37 (defgroup org-entities nil
38 "Options concerning entities in Org-mode."
39 :tag "Org Entities"
40 :group 'org)
41
42 (defcustom org-entities-ascii-explanatory nil
43 "Non-nil means replace special entities in ASCII.
44 For example, this will replace \"\\nsup\" with \"[not a superset of]\"
45 in backends where the corresponding character is not available."
46 :group 'org-entities
47 :version "24.1"
48 :type 'boolean)
49
50 (defcustom org-entities-user nil
51 "User-defined entities used in Org-mode to produce special characters.
52 Each entry in this list is a list of strings. It associates the name
53 of the entity that can be inserted into an Org file as \\name with the
54 appropriate replacements for the different export backends. The order
55 of the fields is the following
56
57 name As a string, without the leading backslash
58 LaTeX replacement In ready LaTeX, no further processing will take place
59 LaTeX mathp A Boolean, either t or nil. t if this entity needs
60 to be in math mode.
61 HTML replacement In ready HTML, no further processing will take place.
62 Usually this will be an &...; entity.
63 ASCII replacement Plain ASCII, no extensions. Symbols that cannot be
64 represented will be left as they are, but see the.
65 variable `org-entities-ascii-explanatory'.
66 Latin1 replacement Use the special characters available in latin1.
67 utf-8 replacement Use the special characters available in utf-8.
68
69 If you define new entities here that require specific LaTeX packages to be
70 loaded, add these packages to `org-export-latex-packages-alist'."
71 :group 'org-entities
72 :version "24.1"
73 :type '(repeat
74 (list
75 (string :tag "name ")
76 (string :tag "LaTeX ")
77 (boolean :tag "Require LaTeX math?")
78 (string :tag "HTML ")
79 (string :tag "ASCII ")
80 (string :tag "Latin1")
81 (string :tag "utf-8 "))))
82
83 (defconst org-entities
84 '(
85 "* Letters"
86 "** Latin"
87 ("Agrave" "\\`{A}" nil "&Agrave;" "A" "À" "À")
88 ("agrave" "\\`{a}" nil "&agrave;" "a" "à" "à")
89 ("Aacute" "\\'{A}" nil "&Aacute;" "A" "Á" "Á")
90 ("aacute" "\\'{a}" nil "&aacute;" "a" "á" "á")
91 ("Acirc" "\\^{A}" nil "&Acirc;" "A" "Â" "Â")
92 ("acirc" "\\^{a}" nil "&acirc;" "a" "â" "â")
93 ("Atilde" "\\~{A}" nil "&Atilde;" "A" "Ã" "Ã")
94 ("atilde" "\\~{a}" nil "&atilde;" "a" "ã" "ã")
95 ("Auml" "\\\"{A}" nil "&Auml;" "Ae" "Ä" "Ä")
96 ("auml" "\\\"{a}" nil "&auml;" "ae" "ä" "ä")
97 ("Aring" "\\AA{}" nil "&Aring;" "A" "Å" "Å")
98 ("AA" "\\AA{}" nil "&Aring;" "A" "Å" "Å")
99 ("aring" "\\aa{}" nil "&aring;" "a" "å" "å")
100 ("AElig" "\\AE{}" nil "&AElig;" "AE" "Æ" "Æ")
101 ("aelig" "\\ae{}" nil "&aelig;" "ae" "æ" "æ")
102 ("Ccedil" "\\c{C}" nil "&Ccedil;" "C" "Ç" "Ç")
103 ("ccedil" "\\c{c}" nil "&ccedil;" "c" "ç" "ç")
104 ("Egrave" "\\`{E}" nil "&Egrave;" "E" "È" "È")
105 ("egrave" "\\`{e}" nil "&egrave;" "e" "è" "è")
106 ("Eacute" "\\'{E}" nil "&Eacute;" "E" "É" "É")
107 ("eacute" "\\'{e}" nil "&eacute;" "e" "é" "é")
108 ("Ecirc" "\\^{E}" nil "&Ecirc;" "E" "Ê" "Ê")
109 ("ecirc" "\\^{e}" nil "&ecirc;" "e" "ê" "ê")
110 ("Euml" "\\\"{E}" nil "&Euml;" "E" "Ë" "Ë")
111 ("euml" "\\\"{e}" nil "&euml;" "e" "ë" "ë")
112 ("Igrave" "\\`{I}" nil "&Igrave;" "I" "Ì" "Ì")
113 ("igrave" "\\`{i}" nil "&igrave;" "i" "ì" "ì")
114 ("Iacute" "\\'{I}" nil "&Iacute;" "I" "Í" "Í")
115 ("iacute" "\\'{i}" nil "&iacute;" "i" "í" "í")
116 ("Icirc" "\\^{I}" nil "&Icirc;" "I" "Î" "Î")
117 ("icirc" "\\^{i}" nil "&icirc;" "i" "î" "î")
118 ("Iuml" "\\\"{I}" nil "&Iuml;" "I" "Ï" "Ï")
119 ("iuml" "\\\"{i}" nil "&iuml;" "i" "ï" "ï")
120 ("Ntilde" "\\~{N}" nil "&Ntilde;" "N" "Ñ" "Ñ")
121 ("ntilde" "\\~{n}" nil "&ntilde;" "n" "ñ" "ñ")
122 ("Ograve" "\\`{O}" nil "&Ograve;" "O" "Ò" "Ò")
123 ("ograve" "\\`{o}" nil "&ograve;" "o" "ò" "ò")
124 ("Oacute" "\\'{O}" nil "&Oacute;" "O" "Ó" "Ó")
125 ("oacute" "\\'{o}" nil "&oacute;" "o" "ó" "ó")
126 ("Ocirc" "\\^{O}" nil "&Ocirc;" "O" "Ô" "Ô")
127 ("ocirc" "\\^{o}" nil "&ocirc;" "o" "ô" "ô")
128 ("Otilde" "\\~{O}" nil "&Otilde;" "O" "Õ" "Õ")
129 ("otilde" "\\~{o}" nil "&otilde;" "o" "õ" "õ")
130 ("Ouml" "\\\"{O}" nil "&Ouml;" "Oe" "Ö" "Ö")
131 ("ouml" "\\\"{o}" nil "&ouml;" "oe" "ö" "ö")
132 ("Oslash" "\\O" nil "&Oslash;" "O" "Ø" "Ø")
133 ("oslash" "\\o{}" nil "&oslash;" "o" "ø" "ø")
134 ("OElig" "\\OE{}" nil "&OElig;" "OE" "OE" "Œ")
135 ("oelig" "\\oe{}" nil "&oelig;" "oe" "oe" "œ")
136 ("Scaron" "\\v{S}" nil "&Scaron;" "S" "S" "Š")
137 ("scaron" "\\v{s}" nil "&scaron;" "s" "s" "š")
138 ("szlig" "\\ss{}" nil "&szlig;" "ss" "ß" "ß")
139 ("Ugrave" "\\`{U}" nil "&Ugrave;" "U" "Ù" "Ù")
140 ("ugrave" "\\`{u}" nil "&ugrave;" "u" "ù" "ù")
141 ("Uacute" "\\'{U}" nil "&Uacute;" "U" "Ú" "Ú")
142 ("uacute" "\\'{u}" nil "&uacute;" "u" "ú" "ú")
143 ("Ucirc" "\\^{U}" nil "&Ucirc;" "U" "Û" "Û")
144 ("ucirc" "\\^{u}" nil "&ucirc;" "u" "û" "û")
145 ("Uuml" "\\\"{U}" nil "&Uuml;" "Ue" "Ü" "Ü")
146 ("uuml" "\\\"{u}" nil "&uuml;" "ue" "ü" "ü")
147 ("Yacute" "\\'{Y}" nil "&Yacute;" "Y" "Ý" "Ý")
148 ("yacute" "\\'{y}" nil "&yacute;" "y" "ý" "ý")
149 ("Yuml" "\\\"{Y}" nil "&Yuml;" "Y" "Y" "Ÿ")
150 ("yuml" "\\\"{y}" nil "&yuml;" "y" "ÿ" "ÿ")
151
152 "** Latin (special face)"
153 ("fnof" "\\textit{f}" nil "&fnof;" "f" "f" "ƒ")
154 ("real" "\\Re" t "&real;" "R" "R" "ℜ")
155 ("image" "\\Im" t "&image;" "I" "I" "ℑ")
156 ("weierp" "\\wp" t "&weierp;" "P" "P" "℘")
157
158 "** Greek"
159 ("Alpha" "A" nil "&Alpha;" "Alpha" "Alpha" "Α")
160 ("alpha" "\\alpha" t "&alpha;" "alpha" "alpha" "α")
161 ("Beta" "B" nil "&Beta;" "Beta" "Beta" "Β")
162 ("beta" "\\beta" t "&beta;" "beta" "beta" "β")
163 ("Gamma" "\\Gamma" t "&Gamma;" "Gamma" "Gamma" "Γ")
164 ("gamma" "\\gamma" t "&gamma;" "gamma" "gamma" "γ")
165 ("Delta" "\\Delta" t "&Delta;" "Delta" "Gamma" "Δ")
166 ("delta" "\\delta" t "&delta;" "delta" "delta" "δ")
167 ("Epsilon" "E" nil "&Epsilon;" "Epsilon" "Epsilon" "Ε")
168 ("epsilon" "\\epsilon" t "&epsilon;" "epsilon" "epsilon" "ε")
169 ("varepsilon" "\\varepsilon" t "&epsilon;" "varepsilon" "varepsilon" "ε")
170 ("Zeta" "Z" nil "&Zeta;" "Zeta" "Zeta" "Ζ")
171 ("zeta" "\\zeta" t "&zeta;" "zeta" "zeta" "ζ")
172 ("Eta" "H" nil "&Eta;" "Eta" "Eta" "Η")
173 ("eta" "\\eta" t "&eta;" "eta" "eta" "η")
174 ("Theta" "\\Theta" t "&Theta;" "Theta" "Theta" "Θ")
175 ("theta" "\\theta" t "&theta;" "theta" "theta" "θ")
176 ("thetasym" "\\vartheta" t "&thetasym;" "theta" "theta" "ϑ")
177 ("vartheta" "\\vartheta" t "&thetasym;" "theta" "theta" "ϑ")
178 ("Iota" "I" nil "&Iota;" "Iota" "Iota" "Ι")
179 ("iota" "\\iota" t "&iota;" "iota" "iota" "ι")
180 ("Kappa" "K" nil "&Kappa;" "Kappa" "Kappa" "Κ")
181 ("kappa" "\\kappa" t "&kappa;" "kappa" "kappa" "κ")
182 ("Lambda" "\\Lambda" t "&Lambda;" "Lambda" "Lambda" "Λ")
183 ("lambda" "\\lambda" t "&lambda;" "lambda" "lambda" "λ")
184 ("Mu" "M" nil "&Mu;" "Mu" "Mu" "Μ")
185 ("mu" "\\mu" t "&mu;" "mu" "mu" "μ")
186 ("nu" "\\nu" t "&nu;" "nu" "nu" "ν")
187 ("Nu" "N" nil "&Nu;" "Nu" "Nu" "Ν")
188 ("Xi" "\\Xi" t "&Xi;" "Xi" "Xi" "Ξ")
189 ("xi" "\\xi" t "&xi;" "xi" "xi" "ξ")
190 ("Omicron" "O" nil "&Omicron;" "Omicron" "Omicron" "Ο")
191 ("omicron" "\\textit{o}" nil "&omicron;" "omicron" "omicron" "ο")
192 ("Pi" "\\Pi" t "&Pi;" "Pi" "Pi" "Π")
193 ("pi" "\\pi" t "&pi;" "pi" "pi" "π")
194 ("Rho" "P" nil "&Rho;" "Rho" "Rho" "Ρ")
195 ("rho" "\\rho" t "&rho;" "rho" "rho" "ρ")
196 ("Sigma" "\\Sigma" t "&Sigma;" "Sigma" "Sigma" "Σ")
197 ("sigma" "\\sigma" t "&sigma;" "sigma" "sigma" "σ")
198 ("sigmaf" "\\varsigma" t "&sigmaf;" "sigmaf" "sigmaf" "ς")
199 ("varsigma" "\\varsigma" t "&sigmaf;" "varsigma" "varsigma" "ς")
200 ("Tau" "T" nil "&Tau;" "Tau" "Tau" "Τ")
201 ("Upsilon" "\\Upsilon" t "&Upsilon;" "Upsilon" "Upsilon" "Υ")
202 ("upsih" "\\Upsilon" t "&upsih;" "upsilon" "upsilon" "ϒ")
203 ("upsilon" "\\upsilon" t "&upsilon;" "upsilon" "upsilon" "υ")
204 ("Phi" "\\Phi" t "&Phi;" "Phi" "Phi" "Φ")
205 ("phi" "\\phi" t "&phi;" "phi" "phi" "φ")
206 ("Chi" "X" nil "&Chi;" "Chi" "Chi" "Χ")
207 ("chi" "\\chi" t "&chi;" "chi" "chi" "χ")
208 ("acutex" "\\acute x" t "&acute;x" "'x" "'x" "𝑥́")
209 ("Psi" "\\Psi" t "&Psi;" "Psi" "Psi" "Ψ")
210 ("psi" "\\psi" t "&psi;" "psi" "psi" "ψ")
211 ("tau" "\\tau" t "&tau;" "tau" "tau" "τ")
212 ("Omega" "\\Omega" t "&Omega;" "Omega" "Omega" "Ω")
213 ("omega" "\\omega" t "&omega;" "omega" "omega" "ω")
214 ("piv" "\\varpi" t "&piv;" "omega-pi" "omega-pi" "ϖ")
215 ("partial" "\\partial" t "&part;" "[partial differential]" "[partial differential]" "∂")
216
217 "** Hebrew"
218 ("alefsym" "\\aleph" t "&alefsym;" "aleph" "aleph" "ℵ")
219
220 "** Dead languages"
221 ("ETH" "\\DH{}" nil "&ETH;" "D" "Ð" "Ð")
222 ("eth" "\\dh{}" nil "&eth;" "dh" "ð" "ð")
223 ("THORN" "\\TH{}" nil "&THORN;" "TH" "Þ" "Þ")
224 ("thorn" "\\th{}" nil "&thorn;" "th" "þ" "þ")
225
226 "* Punctuation"
227 "** Dots and Marks"
228 ("dots" "\\dots{}" nil "&hellip;" "..." "..." "…")
229 ("hellip" "\\dots{}" nil "&hellip;" "..." "..." "…")
230 ("middot" "\\textperiodcentered{}" nil "&middot;" "." "·" "·")
231 ("iexcl" "!`" nil "&iexcl;" "!" "¡" "¡")
232 ("iquest" "?`" nil "&iquest;" "?" "¿" "¿")
233
234 "** Dash-like"
235 ("shy" "\\-" nil "&shy;" "" "" "")
236 ("ndash" "--" nil "&ndash;" "-" "-" "–")
237 ("mdash" "---" nil "&mdash;" "--" "--" "—")
238
239 "** Quotations"
240 ("quot" "\\textquotedbl{}" nil "&quot;" "\"" "\"" "\"")
241 ("acute" "\\textasciiacute{}" nil "&acute;" "'" "´" "´")
242 ("ldquo" "\\textquotedblleft{}" nil "&ldquo;" "\"" "\"" "“")
243 ("rdquo" "\\textquotedblright{}" nil "&rdquo;" "\"" "\"" "”")
244 ("bdquo" "\\quotedblbase{}" nil "&bdquo;" "\"" "\"" "„")
245 ("lsquo" "\\textquoteleft{}" nil "&lsquo;" "`" "`" "‘")
246 ("rsquo" "\\textquoteright{}" nil "&rsquo;" "'" "'" "’")
247 ("sbquo" "\\quotesinglbase{}" nil "&sbquo;" "," "," "‚")
248 ("laquo" "\\guillemotleft{}" nil "&laquo;" "<<" "«" "«")
249 ("raquo" "\\guillemotright{}" nil "&raquo;" ">>" "»" "»")
250 ("lsaquo" "\\guilsinglleft{}" nil "&lsaquo;" "<" "<" "‹")
251 ("rsaquo" "\\guilsinglright{}" nil "&rsaquo;" ">" ">" "›")
252
253 "* Other"
254 "** Misc. (often used)"
255 ("circ" "\\^{}" nil "&circ;" "^" "^" "ˆ")
256 ("vert" "\\vert{}" t "&#124;" "|" "|" "|")
257 ("brvbar" "\\textbrokenbar{}" nil "&brvbar;" "|" "¦" "¦")
258 ("sect" "\\S" nil "&sect;" "paragraph" "§" "§")
259 ("amp" "\\&" nil "&amp;" "&" "&" "&")
260 ("lt" "\\textless{}" nil "&lt;" "<" "<" "<")
261 ("gt" "\\textgreater{}" nil "&gt;" ">" ">" ">")
262 ("tilde" "\\~{}" nil "&tilde;" "~" "~" "~")
263 ("slash" "/" nil "/" "/" "/" "/")
264 ("plus" "+" nil "+" "+" "+" "+")
265 ("under" "\\_" nil "_" "_" "_" "_")
266 ("equal" "=" nil "=" "=" "=" "=")
267 ("asciicirc" "\\textasciicircum{}" nil "^" "^" "^" "^")
268 ("dagger" "\\textdagger{}" nil "&dagger;" "[dagger]" "[dagger]" "†")
269 ("Dagger" "\\textdaggerdbl{}" nil "&Dagger;" "[doubledagger]" "[doubledagger]" "‡")
270
271 "** Whitespace"
272 ("nbsp" "~" nil "&nbsp;" " " " " " ")
273 ("ensp" "\\hspace*{.5em}" nil "&ensp;" " " " " " ")
274 ("emsp" "\\hspace*{1em}" nil "&emsp;" " " " " " ")
275 ("thinsp" "\\hspace*{.2em}" nil "&thinsp;" " " " " " ")
276
277 "** Currency"
278 ("curren" "\\textcurrency{}" nil "&curren;" "curr." "¤" "¤")
279 ("cent" "\\textcent{}" nil "&cent;" "cent" "¢" "¢")
280 ("pound" "\\pounds{}" nil "&pound;" "pound" "£" "£")
281 ("yen" "\\textyen{}" nil "&yen;" "yen" "¥" "¥")
282 ("euro" "\\texteuro{}" nil "&euro;" "EUR" "EUR" "€")
283 ("EUR" "\\EUR{}" nil "&euro;" "EUR" "EUR" "€")
284 ("EURdig" "\\EURdig{}" nil "&euro;" "EUR" "EUR" "€")
285 ("EURhv" "\\EURhv{}" nil "&euro;" "EUR" "EUR" "€")
286 ("EURcr" "\\EURcr{}" nil "&euro;" "EUR" "EUR" "€")
287 ("EURtm" "\\EURtm{}" nil "&euro;" "EUR" "EUR" "€")
288
289 "** Property Marks"
290 ("copy" "\\textcopyright{}" nil "&copy;" "(c)" "©" "©")
291 ("reg" "\\textregistered{}" nil "&reg;" "(r)" "®" "®")
292 ("trade" "\\texttrademark{}" nil "&trade;" "TM" "TM" "™")
293
294 "** Science et al."
295 ("minus" "\\minus" t "&minus;" "-" "-" "−")
296 ("pm" "\\textpm{}" nil "&plusmn;" "+-" "±" "±")
297 ("plusmn" "\\textpm{}" nil "&plusmn;" "+-" "±" "±")
298 ("times" "\\texttimes{}" nil "&times;" "*" "×" "×")
299 ("frasl" "/" nil "&frasl;" "/" "/" "⁄")
300 ("div" "\\textdiv{}" nil "&divide;" "/" "÷" "÷")
301 ("frac12" "\\textonehalf{}" nil "&frac12;" "1/2" "½" "½")
302 ("frac14" "\\textonequarter{}" nil "&frac14;" "1/4" "¼" "¼")
303 ("frac34" "\\textthreequarters{}" nil "&frac34;" "3/4" "¾" "¾")
304 ("permil" "\\textperthousand{}" nil "&permil;" "per thousand" "per thousand" "‰")
305 ("sup1" "\\textonesuperior{}" nil "&sup1;" "^1" "¹" "¹")
306 ("sup2" "\\texttwosuperior{}" nil "&sup2;" "^2" "²" "²")
307 ("sup3" "\\textthreesuperior{}" nil "&sup3;" "^3" "³" "³")
308 ("radic" "\\sqrt{\\,}" t "&radic;" "[square root]" "[square root]" "√")
309 ("sum" "\\sum" t "&sum;" "[sum]" "[sum]" "∑")
310 ("prod" "\\prod" t "&prod;" "[product]" "[n-ary product]" "∏")
311 ("micro" "\\textmu{}" nil "&micro;" "micro" "µ" "µ")
312 ("macr" "\\textasciimacron{}" nil "&macr;" "[macron]" "¯" "¯")
313 ("deg" "\\textdegree{}" nil "&deg;" "degree" "°" "°")
314 ("prime" "\\prime" t "&prime;" "'" "'" "′")
315 ("Prime" "\\prime{}\\prime" t "&Prime;" "''" "''" "″")
316 ("infin" "\\propto" t "&infin;" "[infinity]" "[infinity]" "∞")
317 ("infty" "\\infty" t "&infin;" "[infinity]" "[infinity]" "∞")
318 ("prop" "\\propto" t "&prop;" "[proportional to]" "[proportional to]" "∝")
319 ("proptp" "\\propto" t "&prop;" "[proportional to]" "[proportional to]" "∝")
320 ("not" "\\textlnot{}" nil "&not;" "[angled dash]" "¬" "¬")
321 ("land" "\\land" t "&and;" "[logical and]" "[logical and]" "∧")
322 ("wedge" "\\wedge" t "&and;" "[logical and]" "[logical and]" "∧")
323 ("lor" "\\lor" t "&or;" "[logical or]" "[logical or]" "∨")
324 ("vee" "\\vee" t "&or;" "[logical or]" "[logical or]" "∨")
325 ("cap" "\\cap" t "&cap;" "[intersection]" "[intersection]" "∩")
326 ("cup" "\\cup" t "&cup;" "[union]" "[union]" "∪")
327 ("int" "\\int" t "&int;" "[integral]" "[integral]" "∫")
328 ("there4" "\\therefore" t "&there4;" "[therefore]" "[therefore]" "∴")
329 ("sim" "\\sim" t "&sim;" "~" "~" "∼")
330 ("cong" "\\cong" t "&cong;" "[approx. equal to]" "[approx. equal to]" "≅")
331 ("simeq" "\\simeq" t "&cong;" "[approx. equal to]" "[approx. equal to]" "≅")
332 ("asymp" "\\asymp" t "&asymp;" "[almost equal to]" "[almost equal to]" "≈")
333 ("approx" "\\approx" t "&asymp;" "[almost equal to]" "[almost equal to]" "≈")
334 ("ne" "\\ne" t "&ne;" "[not equal to]" "[not equal to]" "≠")
335 ("neq" "\\neq" t "&ne;" "[not equal to]" "[not equal to]" "≠")
336 ("equiv" "\\equiv" t "&equiv;" "[identical to]" "[identical to]" "≡")
337 ("le" "\\le" t "&le;" "<=" "<=" "≤")
338 ("ge" "\\ge" t "&ge;" ">=" ">=" "≥")
339 ("sub" "\\subset" t "&sub;" "[subset of]" "[subset of]" "⊂")
340 ("subset" "\\subset" t "&sub;" "[subset of]" "[subset of]" "⊂")
341 ("sup" "\\supset" t "&sup;" "[superset of]" "[superset of]" "⊃")
342 ("supset" "\\supset" t "&sup;" "[superset of]" "[superset of]" "⊃")
343 ("nsub" "\\not\\subset" t "&nsub;" "[not a subset of]" "[not a subset of" "⊄")
344 ("sube" "\\subseteq" t "&sube;" "[subset of or equal to]" "[subset of or equal to]" "⊆")
345 ("nsup" "\\not\\supset" t "&nsup;" "[not a superset of]" "[not a superset of]" "⊅")
346 ("supe" "\\supseteq" t "&supe;" "[superset of or equal to]" "[superset of or equal to]" "⊇")
347 ("forall" "\\forall" t "&forall;" "[for all]" "[for all]" "∀")
348 ("exist" "\\exists" t "&exist;" "[there exists]" "[there exists]" "∃")
349 ("exists" "\\exists" t "&exist;" "[there exists]" "[there exists]" "∃")
350 ("empty" "\\empty" t "&empty;" "[empty set]" "[empty set]" "∅")
351 ("emptyset" "\\emptyset" t "&empty;" "[empty set]" "[empty set]" "∅")
352 ("isin" "\\in" t "&isin;" "[element of]" "[element of]" "∈")
353 ("in" "\\in" t "&isin;" "[element of]" "[element of]" "∈")
354 ("notin" "\\notin" t "&notin;" "[not an element of]" "[not an element of]" "∉")
355 ("ni" "\\ni" t "&ni;" "[contains as member]" "[contains as member]" "∋")
356 ("nabla" "\\nabla" t "&nabla;" "[nabla]" "[nabla]" "∇")
357 ("ang" "\\angle" t "&ang;" "[angle]" "[angle]" "∠")
358 ("angle" "\\angle" t "&ang;" "[angle]" "[angle]" "∠")
359 ("perp" "\\perp" t "&perp;" "[up tack]" "[up tack]" "⊥")
360 ("sdot" "\\cdot" t "&sdot;" "[dot]" "[dot]" "⋅")
361 ("cdot" "\\cdot" t "&sdot;" "[dot]" "[dot]" "⋅")
362 ("lceil" "\\lceil" t "&lceil;" "[left ceiling]" "[left ceiling]" "⌈")
363 ("rceil" "\\rceil" t "&rceil;" "[right ceiling]" "[right ceiling]" "⌉")
364 ("lfloor" "\\lfloor" t "&lfloor;" "[left floor]" "[left floor]" "⌊")
365 ("rfloor" "\\rfloor" t "&rfloor;" "[right floor]" "[right floor]" "⌋")
366 ("lang" "\\langle" t "&lang;" "<" "<" "⟨")
367 ("rang" "\\rangle" t "&rang;" ">" ">" "⟩")
368
369 "** Arrows"
370 ("larr" "\\leftarrow" t "&larr;" "<-" "<-" "←")
371 ("leftarrow" "\\leftarrow" t "&larr;" "<-" "<-" "←")
372 ("gets" "\\gets" t "&larr;" "<-" "<-" "←")
373 ("lArr" "\\Leftarrow" t "&lArr;" "<=" "<=" "⇐")
374 ("Leftarrow" "\\Leftarrow" t "&lArr;" "<=" "<=" "⇐")
375 ("uarr" "\\uparrow" t "&uarr;" "[uparrow]" "[uparrow]" "↑")
376 ("uparrow" "\\uparrow" t "&uarr;" "[uparrow]" "[uparrow]" "↑")
377 ("uArr" "\\Uparrow" t "&uArr;" "[dbluparrow]" "[dbluparrow]" "⇑")
378 ("Uparrow" "\\Uparrow" t "&uArr;" "[dbluparrow]" "[dbluparrow]" "⇑")
379 ("rarr" "\\rightarrow" t "&rarr;" "->" "->" "→")
380 ("to" "\\to" t "&rarr;" "->" "->" "→")
381 ("rightarrow" "\\rightarrow" t "&rarr;" "->" "->" "→")
382 ("rArr" "\\Rightarrow" t "&rArr;" "=>" "=>" "⇒")
383 ("Rightarrow" "\\Rightarrow" t "&rArr;" "=>" "=>" "⇒")
384 ("darr" "\\downarrow" t "&darr;" "[downarrow]" "[downarrow]" "↓")
385 ("downarrow" "\\downarrow" t "&darr;" "[downarrow]" "[downarrow]" "↓")
386 ("dArr" "\\Downarrow" t "&dArr;" "[dbldownarrow]" "[dbldownarrow]" "⇓")
387 ("Downarrow" "\\Downarrow" t "&dArr;" "[dbldownarrow]" "[dbldownarrow]" "⇓")
388 ("harr" "\\leftrightarrow" t "&harr;" "<->" "<->" "↔")
389 ("leftrightarrow" "\\leftrightarrow" t "&harr;" "<->" "<->" "↔")
390 ("hArr" "\\Leftrightarrow" t "&hArr;" "<=>" "<=>" "⇔")
391 ("Leftrightarrow" "\\Leftrightarrow" t "&hArr;" "<=>" "<=>" "⇔")
392 ("crarr" "\\hookleftarrow" t "&crarr;" "<-'" "<-'" "↵")
393 ("hookleftarrow" "\\hookleftarrow" t "&crarr;" "<-'" "<-'" "↵")
394
395 "** Function names"
396 ("arccos" "\\arccos" t "arccos" "arccos" "arccos" "arccos")
397 ("arcsin" "\\arcsin" t "arcsin" "arcsin" "arcsin" "arcsin")
398 ("arctan" "\\arctan" t "arctan" "arctan" "arctan" "arctan")
399 ("arg" "\\arg" t "arg" "arg" "arg" "arg")
400 ("cos" "\\cos" t "cos" "cos" "cos" "cos")
401 ("cosh" "\\cosh" t "cosh" "cosh" "cosh" "cosh")
402 ("cot" "\\cot" t "cot" "cot" "cot" "cot")
403 ("coth" "\\coth" t "coth" "coth" "coth" "coth")
404 ("csc" "\\csc" t "csc" "csc" "csc" "csc")
405 ("deg" "\\deg" t "&deg;" "deg" "deg" "deg")
406 ("det" "\\det" t "det" "det" "det" "det")
407 ("dim" "\\dim" t "dim" "dim" "dim" "dim")
408 ("exp" "\\exp" t "exp" "exp" "exp" "exp")
409 ("gcd" "\\gcd" t "gcd" "gcd" "gcd" "gcd")
410 ("hom" "\\hom" t "hom" "hom" "hom" "hom")
411 ("inf" "\\inf" t "inf" "inf" "inf" "inf")
412 ("ker" "\\ker" t "ker" "ker" "ker" "ker")
413 ("lg" "\\lg" t "lg" "lg" "lg" "lg")
414 ("lim" "\\lim" t "lim" "lim" "lim" "lim")
415 ("liminf" "\\liminf" t "liminf" "liminf" "liminf" "liminf")
416 ("limsup" "\\limsup" t "limsup" "limsup" "limsup" "limsup")
417 ("ln" "\\ln" t "ln" "ln" "ln" "ln")
418 ("log" "\\log" t "log" "log" "log" "log")
419 ("max" "\\max" t "max" "max" "max" "max")
420 ("min" "\\min" t "min" "min" "min" "min")
421 ("Pr" "\\Pr" t "Pr" "Pr" "Pr" "Pr")
422 ("sec" "\\sec" t "sec" "sec" "sec" "sec")
423 ("sin" "\\sin" t "sin" "sin" "sin" "sin")
424 ("sinh" "\\sinh" t "sinh" "sinh" "sinh" "sinh")
425 ("sup" "\\sup" t "&sup;" "sup" "sup" "sup")
426 ("tan" "\\tan" t "tan" "tan" "tan" "tan")
427 ("tanh" "\\tanh" t "tanh" "tanh" "tanh" "tanh")
428
429 "** Signs & Symbols"
430 ("bull" "\\textbullet{}" nil "&bull;" "*" "*" "•")
431 ("bullet" "\\textbullet{}" nil "&bull;" "*" "*" "•")
432 ("star" "\\star" t "*" "*" "*" "⋆")
433 ("lowast" "\\ast" t "&lowast;" "*" "*" "∗")
434 ("ast" "\\ast" t "&lowast;" "*" "*" "*")
435 ("odot" "\\odot" t "o" "[circled dot]" "[circled dot]" "ʘ")
436 ("oplus" "\\oplus" t "&oplus;" "[circled plus]" "[circled plus]" "⊕")
437 ("otimes" "\\otimes" t "&otimes;" "[circled times]" "[circled times]" "⊗")
438 ("checkmark" "\\checkmark" t "&#10003;" "[checkmark]" "[checkmark]" "✓")
439
440 "** Miscellaneous (seldom used)"
441 ("para" "\\P{}" nil "&para;" "[pilcrow]" "¶" "¶")
442 ("ordf" "\\textordfeminine{}" nil "&ordf;" "_a_" "ª" "ª")
443 ("ordm" "\\textordmasculine{}" nil "&ordm;" "_o_" "º" "º")
444 ("cedil" "\\c{}" nil "&cedil;" "[cedilla]" "¸" "¸")
445 ("oline" "\\overline{~}" t "&oline;" "[overline]" "¯" "‾")
446 ("uml" "\\textasciidieresis{}" nil "&uml;" "[diaeresis]" "¨" "¨")
447 ("zwnj" "\\/{}" nil "&zwnj;" "" "" "‌")
448 ("zwj" "" nil "&zwj;" "" "" "‍")
449 ("lrm" "" nil "&lrm;" "" "" "‎")
450 ("rlm" "" nil "&rlm;" "" "" "‏")
451
452 "** Smilies"
453 ("smile" "\\smile" t "&#9786;" ":-)" ":-)" "⌣")
454 ("smiley" "\\smiley{}" nil "&#9786;" ":-)" ":-)" "☺")
455 ("blacksmile" "\\blacksmiley{}" nil "&#9787;" ":-)" ":-)" "☻")
456 ("sad" "\\frownie{}" nil "&#9785;" ":-(" ":-(" "☹")
457
458 "** Suits"
459 ("clubs" "\\clubsuit" t "&clubs;" "[clubs]" "[clubs]" "♣")
460 ("clubsuit" "\\clubsuit" t "&clubs;" "[clubs]" "[clubs]" "♣")
461 ("spades" "\\spadesuit" t "&spades;" "[spades]" "[spades]" "♠")
462 ("spadesuit" "\\spadesuit" t "&spades;" "[spades]" "[spades]" "♠")
463 ("hearts" "\\heartsuit" t "&hearts;" "[hearts]" "[hearts]" "♥")
464 ("heartsuit" "\\heartsuit" t "&heartsuit;" "[hearts]" "[hearts]" "♥")
465 ("diams" "\\diamondsuit" t "&diams;" "[diamonds]" "[diamonds]" "♦")
466 ("diamondsuit" "\\diamondsuit" t "&diams;" "[diamonds]" "[diamonds]" "♦")
467 ("Diamond" "\\diamond" t "&diamond;" "[diamond]" "[diamond]" "⋄")
468 ("loz" "\\diamond" t "&loz;" "[lozenge]" "[lozenge]" "◊")
469 )
470 "Default entities used in Org-mode to produce special characters.
471 For details see `org-entities-user'.")
472
473 (defsubst org-entity-get (name)
474 "Get the proper association for NAME from the entity lists.
475 This first checks the user list, then the built-in list."
476 (or (assoc name org-entities-user)
477 (assoc name org-entities)))
478
479 (defun org-entity-get-representation (name kind)
480 "Get the correct representation of entity NAME for export type KIND.
481 Kind can be any of `latex', `html', `ascii', `latin1', or `utf8'."
482 (let* ((e (org-entity-get name))
483 (n (cdr (assq kind '((latex . 1) (html . 3) (ascii . 4)
484 (latin1 . 5) (utf8 . 6)))))
485 (r (and e n (nth n e))))
486 (if (and e r
487 (not org-entities-ascii-explanatory)
488 (memq kind '(ascii latin1 utf8))
489 (= (string-to-char r) ?\[))
490 (concat "\\" name)
491 r)))
492
493 (defsubst org-entity-latex-math-p (name)
494 "Does entity NAME require math mode in LaTeX?"
495 (nth 2 (org-entity-get name)))
496
497 ;; Helpfunctions to create a table for orgmode.org/worg/org-symbols.org
498
499 (defun org-entities-create-table ()
500 "Create an Org mode table with all entities."
501 (interactive)
502 (let ((pos (point)) e latex mathp html latin utf8 name ascii)
503 (insert "|Name|LaTeX code|LaTeX|HTML code |HTML|ASCII|Latin1|UTF-8\n|-\n")
504 (mapc (lambda (e) (when (listp e)
505 (setq name (car e)
506 latex (nth 1 e)
507 mathp (nth 2 e)
508 html (nth 3 e)
509 ascii (nth 4 e)
510 latin (nth 5 e)
511 utf8 (nth 6 e))
512 (if (equal ascii "|") (setq ascii "\\vert"))
513 (if (equal latin "|") (setq latin "\\vert"))
514 (if (equal utf8 "|") (setq utf8 "\\vert"))
515 (if (equal ascii "=>") (setq ascii "= >"))
516 (if (equal latin "=>") (setq latin "= >"))
517 (insert "|" name
518 "|" (format "=%s=" latex)
519 "|" (format (if mathp "$%s$" "$\\mbox{%s}$")
520 latex)
521 "|" (format "=%s=" html) "|" html
522 "|" ascii "|" latin "|" utf8
523 "|\n")))
524 org-entities)
525 (goto-char pos)
526 (org-table-align)))
527
528 (defun org-entities-help ()
529 "Create a Help buffer with all available entities."
530 (interactive)
531 (with-output-to-temp-buffer "*Org Entity Help*"
532 (princ "Org-mode entities\n=================\n\n")
533 (let ((ll (append '("* User-defined additions (variable org-entities-user)")
534 org-entities-user
535 org-entities))
536 e latex mathp html latin utf8 name ascii
537 (lastwasstring t)
538 (head (concat
539 "\n"
540 " Symbol Org entity LaTeX code HTML code\n"
541 " -----------------------------------------------------------\n")))
542 (while ll
543 (setq e (pop ll))
544 (if (stringp e)
545 (progn
546 (princ e)
547 (princ "\n")
548 (setq lastwasstring t))
549 (if lastwasstring (princ head))
550 (setq lastwasstring nil)
551 (setq name (car e)
552 latex (nth 1 e)
553 html (nth 3 e)
554 utf8 (nth 6 e))
555 (princ (format " %-8s \\%-16s %-22s %-13s\n"
556 utf8 name latex html))))))
557 (with-current-buffer "*Org Entity Help*"
558 (org-mode))
559 (select-window (get-buffer-window "*Org Entity Help*")))
560
561
562 (defun replace-amp ()
563 "Postprocess HTML file to unescape the ampersand."
564 (interactive)
565 (while (re-search-forward "<td>&amp;\\([^<;]+;\\)" nil t)
566 (replace-match (concat "<td>&" (match-string 1)) t t)))
567
568 (provide 'org-entities)
569
570 ;; Local variables:
571 ;; coding: utf-8
572 ;; End:
573
574 ;;; org-entities.el ends here