* [patch] Fixes and improvements in org-latex-language-alist (was: ox-latex language handling in Org-9.5 vs 9.6)
@ 2023-09-08 19:02 2% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2023-09-08 19:02 UTC (permalink / raw)
To: emacs-orgmode; +Cc: Max Nikulin, Ihor Radchenko
[-- Attachment #1: Type: text/plain, Size: 666 bytes --]
I think that with this patch the possible regressions are removed. I
took the opportunity to add some improvements (the :babel-ini-alt,
:script and :script-tag properties) and correct some errors and typos.
I don't know if it's a valid path to allow the car of each element to
also be a list of languages codes, but I couldn't think of a better
solution for the "de"/"de-de" cases. A similar case is in Chinese
Simplified (new language added), where the possible language codes are
zh and zh-cn, if I'm not wrong.
--
Juan Manuel Macías
https://juanmanuelmacias.com
https://lunotipia.juanmanuelmacias.com
https://gnutas.juanmanuelmacias.com
[-- Attachment #2: 0001-ox-latex.el-Fixes-and-improvements-in-org-latex-lang.patch --]
[-- Type: text/x-patch, Size: 22948 bytes --]
From 52f17bc841241562a52e91159cb1531dbe5684e1 Mon Sep 17 00:00:00 2001
From: Juan Manuel Macias <maciaschain@posteo.net>
Date: Fri, 8 Sep 2023 19:33:25 +0200
Subject: [PATCH] ox-latex.el: Fixes and improvements in
`org-latex-language-alist'.
* (org-latex-language-alist): Fix a language code (`de-de') removed
when `org-latex-babel-language-alist' and
`org-latex-polyglossia-language-alist' were merged. To allow language
codes that can have a similar translation in `babel' or `polyglossia'
now in each element of `org-latex-language-alist' car can also be a
list of language codes. New admitted properties: `:babel-ini-alt',
`:script' and `:script-tag'. Add language code for ancient Greek.
Fix Afrikaans (was previously removed). New languages: Chinese
Simplified and Traditional. Correction of some typos, errors and
inaccuracies.
* (org-latex-guess-babel-language): Some necessary modifications.
* (org-latex-guess-polyglossia-language): Some necessary modifications.
---
lisp/ox-latex.el | 208 +++++++++++++++++++++++++++--------------------
1 file changed, 118 insertions(+), 90 deletions(-)
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 241ef603a..d6790ea27 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -177,94 +177,102 @@
;;; Internal Variables
(defconst org-latex-language-alist
- '(("am" :babel-ini-only "amharic" :polyglossia "amharic" :lang-name "Amharic")
- ("ar" :babel "arabic" :polyglossia "arabic" :lang-name "Arabic")
- ("ast" :babel-ini-only "asturian" :polyglossia "asturian" :lang-name "Asturian")
- ("bg" :babel "bulgarian" :polyglossia "bulgarian" :lang-name "Bulgarian")
- ("bn" :babel-ini-only "bengali" :polyglossia "bengali" :lang-name "Bengali")
- ("bo" :babel-ini-only "tibetan" :polyglossia "tibetan" :lang-name "Tibetan")
- ("br" :babel "breton" :polyglossia "breton" :lang-name "Breton")
- ("ca" :babel "catalan" :polyglossia "catalan" :lang-name "Catalan")
- ("cop" :babel-ini-only "coptic" :polyglossia "coptic" :lang-name "Coptic")
- ("cs" :babel "czech" :polyglossia "czech" :lang-name "Czech")
- ("cy" :babel "welsh" :polyglossia "welsh" :lang-name "Welsh")
- ("da" :babel "danish" :polyglossia "danish" :lang-name "Danish")
- ("de" :babel "ngerman" :polyglossia "german" :polyglossia-variant "german" :lang-name "German")
- ("de-at" :babel "naustrian" :polyglossia "german" :polyglossia-variant "austrian" :lang-name "German")
- ("dsb" :babel "lsorbian" :polyglossia "sorbian" :polyglossia-variant "lower" :lang-name "Lower Sorbian")
- ("dv" :babel-ini-only "divehi" :polyglossia "divehi" :lang-name "Divehi")
- ("el" :babel "greek" :polyglossia "greek" :lang-name "Greek")
- ("el-polyton" :babel "polutonikogreek" :polyglossia "greek" :polyglossia-variant "polytonic" :lang-name "Polytonic Greek")
- ("en" :babel "american" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English")
- ("en-au" :babel "australian" :polyglossia "english" :polyglossia-variant "australian" :lang-name "English")
- ("en-gb" :babel "british" :polyglossia "english" :polyglossia-variant "uk" :lang-name "English")
- ("en-nz" :babel "newzealand" :polyglossia "english" :polyglossia-variant "newzealand" :lang-name "English")
- ("en-us" :babel "american" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English")
- ("eo" :babel "esperanto" :polyglossia "esperanto" :lang-name "Esperanto")
- ("es" :babel "spanish" :polyglossia "spanish" :lang-name "Spanish")
- ("es-mx" :babel "spanishmx" :polyglossia "spanish" :polyglossia-variant "mexican" :lang-name "Spanish")
- ("et" :babel "estonian" :polyglossia "estonian" :lang-name "Estonian")
- ("eu" :babel "basque" :polyglossia "basque" :lang-name "Basque")
- ("fa" :babel "farsi" :polyglossia "farsi" :lang-name "Farsi")
- ("fi" :babel "finnish" :polyglossia "finnish" :lang-name "Finnish")
- ("fr" :babel "french" :polyglossia "french" :lang-name "French")
- ("fr-ca" :babel "canadien" :polyglossia "french" :polyglossia-variant "canadian" :lang-name "French")
- ("fur" :babel "friulan" :polyglossia "friulan" :lang-name "Friulian")
- ("ga" :babel "irish" :polyglossia "irish" :lang-name "Irish")
- ("gd" :babel "scottish" :polyglossia "scottish" :lang-name "Scottish Gaelic")
- ("gl" :babel "galician" :polyglossia "galician" :lang-name "Galician")
- ("he" :babel "hebrew" :polyglossia "hebrew" :lang-name "Hebrew")
- ("hi" :babel "hindi" :polyglossia "hindi" :lang-name "Hindi")
- ("hr" :babel "croatian" :polyglossia "croatian" :lang-name "Croatian")
- ("hsb" :babel "uppersorbian" :polyglossia "sorbian" :polyglossia-variant "upper" :lang-name "Upper Sorbian")
- ("hu" :babel "magyar" :polyglossia "magyar" :lang-name "Magyar")
- ("hy" :babel-ini-only "armenian" :polyglossia "armenian" :lang-name "Armenian")
- ("ia" :babel "interlingua" :polyglossia "interlingua" :lang-name "Interlingua")
- ("id" :babel-ini-only "bahasai" :polyglossia "bahasai" :lang-name "Bahasai")
- ("is" :babel "icelandic" :polyglossia "icelandic" :lang-name "Icelandic")
- ("it" :babel "italian" :polyglossia "italian" :lang-name "Italian")
- ("kn" :babel-ini-only "kannada" :polyglossia "kannada" :lang-name "Kannada")
- ("la" :babel "latin" :polyglossia "latin" :lang-name "Latin")
- ("la-classic" :babel "classiclatin" :polyglossia "latin" :polyglossia-variant "classic" :lang-name "Classic Latin")
- ("la-medieval" :babel "medievallatin" :polyglossia "latin" :polyglossia-variant "medieval" :lang-name "Medieval Latin")
- ("la-ecclesiastic" :babel "ecclesiasticlatin" :polyglossia "latin" :polyglossia-variant "ecclesiastic" :lang-name "Ecclesiastic Latin")
- ("lo" :babel-ini-only "lao" :polyglossia "lao" :lang-name "Lao")
- ("lt" :babel "lithuanian" :polyglossia "lithuanian" :lang-name "Lithuanian")
- ("lv" :babel "latvian" :polyglossia "latvian" :lang-name "Latvian")
- ("ml" :babel-ini-only "malayalam" :polyglossia "malayalam" :lang-name "Malayalam")
- ("mr" :babel-ini-only "maranthi" :polyglossia "maranthi" :lang-name "Maranthi")
- ("nb" :babel "norsk" :polyglossia "norwegian" :polyglossia-variant "bokmal" :lang-name "Norwegian Bokmål")
- ("nl" :babel "dutch" :polyglossia "dutch" :lang-name "Dutch")
- ("nn" :babel "nynorsk" :polyglossia "norwegian" :polyglossia-variant "nynorsk" :lang-name "Norwegian Nynorsk")
- ("no" :babel "norsk" :polyglossia "norsk" :lang-name "Norwegian")
- ("oc" :babel "occitan" :polyglossia "occitan" :lang-name "Occitan")
- ("pl" :babel "polish" :polyglossia "polish" :lang-name "Polish")
- ("pms" :babel "piedmontese" :polyglossia "piedmontese" :lang-name "Piedmontese")
- ("pt" :babel "portuges" :polyglossia "portuges" :lang-name "Portuges")
- ("pt-br" :babel "brazilian" :polyglossia "brazilian" :lang-name "Portuges")
- ("rm" :babel-ini-only "romansh" :polyglossia "romansh" :lang-name "Romansh")
- ("ro" :babel "romanian" :polyglossia "romanian" :lang-name "Romanian")
- ("ru" :babel "russian" :polyglossia "russian" :lang-name "Russian")
- ("sa" :babel-ini-only "sanskrit" :polyglossia "sanskrit" :lang-name "Sanskrit")
- ("sk" :babel "slovak" :polyglossia "slovak" :lang-name "Slovak")
- ("sl" :babel "slovene" :polyglossia "slovene" :lang-name "Slovene")
- ("sq" :babel "albanian" :polyglossia "albanian" :lang-name "Albanian")
- ("sr" :babel "serbian" :polyglossia "serbian" :lang-name "Serbian")
- ("sv" :babel "swedish" :polyglossia "swedish" :lang-name "Swedish")
- ("syr" :babel-ini-only "syriac" :polyglossia "syriac" :lang-name "Syriac")
- ("ta" :babel-ini-only "tamil" :polyglossia "tamil" :lang-name "Tamil")
- ("te" :babel-ini-only "telugu" :polyglossia "telugu" :lang-name "Telugu")
- ("th" :babel "thai" :polyglossia "thai" :lang-name "Thai")
- ("tk" :babel "turkmen" :polyglossia "turkmen" :lang-name "Turkmen")
- ("tr" :babel "turkish" :polyglossia "turkish" :lang-name "Turkish")
- ("uk" :babel "ukrainian" :polyglossia "ukrainian" :lang-name "Ukrainian")
- ("ur" :babel-ini-only "urdu" :polyglossia "urdu" :lang-name "Urdu")
- ("vi" :babel "vietnamese" :polyglossia "vietnamese" :lang-name "Vietnamese"))
+ '(("af" :babel "afrikaans" :polyglossia "afrikaans" :lang-name "Afrikaans" :script "latin" :script-tag "latn")
+ ("am" :babel-ini-only "amharic" :polyglossia "amharic" :lang-name "Amharic" :script "ethiopic" :script-tag "ethi")
+ ("ar" :babel-ini-only "arabic" :polyglossia "arabic" :lang-name "Arabic" :script "arabic" :script-tag "arab")
+ ("ast" :babel-ini-only "asturian" :polyglossia "asturian" :lang-name "Asturian" :script "latin" :script-tag "latn")
+ ("bg" :babel "bulgarian" :polyglossia "bulgarian" :lang-name "Bulgarian" :script "cyrillic" :script-tag "cyrl")
+ ("bn" :babel-ini-only "bengali" :polyglossia "bengali" :lang-name "Bengali" :script "bengali" :script-tag: "beng")
+ ("bo" :babel-ini-only "tibetan" :polyglossia "tibetan" :lang-name "Tibetan" :script "tibetan" :script-tag "tib")
+ ("br" :babel "breton" :polyglossia "breton" :lang-name "Breton" :script "latin" :script-tag "latn")
+ ("ca" :babel "catalan" :polyglossia "catalan" :lang-name "Catalan" :script "latin" :script-tag "latn")
+ ("cop" :babel-ini-only "coptic" :polyglossia "coptic" :lang-name "Coptic" :script "coptic" :script-tag "copt")
+ ("cs" :babel "czech" :polyglossia "czech" :lang-name "Czech" :script "latin" :script-tag "latn")
+ ("cy" :babel "welsh" :polyglossia "welsh" :lang-name "Welsh" :script "latin" :script-tag "latn")
+ ("da" :babel "danish" :polyglossia "danish" :lang-name "Danish" :script "latin" :script-tag "latn")
+ (("de" "de-de") :babel "ngerman" :babel-ini-alt "german" :polyglossia "german" :polyglossia-variant "german" :lang-name "German" :script "latin" :script-tag "latn")
+ ("de-at" :babel "naustrian" :babel-ini-alt "german-austria" :polyglossia "german" :polyglossia-variant "austrian" :lang-name "German" :script "latin" :script-tag "latn")
+ ("dsb" :babel "lowersorbian" :babel-ini-alt "lsorbian" :polyglossia "sorbian" :polyglossia-variant "lower" :lang-name "Lower Sorbian" :script "latin" :script-tag "latn")
+ ("dv" :polyglossia "divehi" :lang-name "Dhivehi" :script "latin" :script-tag "latn")
+ ("el" :babel "greek" :polyglossia "greek" :lang-name "Greek" :script "greek" :script-tag "grek")
+ ("el-polyton" :babel "polutonikogreek" :babel-ini-alt "polytonicgreek" :polyglossia "greek" :polyglossia-variant "polytonic" :lang-name "Polytonic Greek" :script "greek" :script-tag "grek")
+ ("grc" :babel "greek.ancient" :babel-ini-alt "ancientgreek" :polyglossia "greek" :polyglossia-variant "ancient" :lang-name "Ancient Greek" :script "greek" :script-tag "grek")
+ ("en" :babel "english" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-au" :babel "australian" :polyglossia "english" :polyglossia-variant "australian" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-ca" :babel "canadian" :polyglossia "english" :polyglossia-variant "canadian" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-gb" :babel "british" :polyglossia "english" :polyglossia-variant "uk" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-nz" :babel "newzealand" :polyglossia "english" :polyglossia-variant "newzealand" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-us" :babel "american" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English" :script "latin" :script-tag "latn")
+ ("eo" :babel "esperanto" :polyglossia "esperanto" :lang-name "Esperanto" :script "latin" :script-tag "latn")
+ ("es" :babel "spanish" :polyglossia "spanish" :lang-name "Spanish" :script "latin" :script-tag "latn")
+ ("es-mx" :babel "spanishmx" :polyglossia "spanish" :polyglossia-variant "mexican" :lang-name "Spanish" :script "latin" :script-tag "latn")
+ ("et" :babel "estonian" :polyglossia "estonian" :lang-name "Estonian" :script "latin" :script-tag "latn")
+ ("eu" :babel "basque" :polyglossia "basque" :lang-name "Basque" :script "latin" :script-tag "latn")
+ ("fa" :babel "persian" :polyglossia "persian" :lang-name "Persian" :script "arabic" :script-tag "arab")
+ ("fi" :babel "finnish" :polyglossia "finnish" :lang-name "Finnish" :script "latin" :script-tag "latn")
+ ("fr" :babel "french" :polyglossia "french" :lang-name "French" :script "latin" :script-tag "latn")
+ ("fr-ca" :babel "canadien" :babel-ini-alt "canadian" :polyglossia "french" :polyglossia-variant "canadian" :lang-name "French" :script "latin" :script-tag "latn")
+ ("fur" :babel "friulian" :polyglossia "friulian" :lang-name "Friulian" :script "latin" :script-tag "latn")
+ ("ga" :babel "irish" :polyglossia "gaelic" :polyglossia-variant "irish" :lang-name "Irish Gaelic" :script "latin" :script-tag "latn")
+ ("gd" :babel "scottish" :polyglossia "gaelic" :polyglossia-variant "scottish" :lang-name "Scottish Gaelic" :script "latin" :script-tag "latn")
+ ("gl" :babel "galician" :polyglossia "galician" :lang-name "Galician" :script "latin" :script-tag "latn")
+ ("he" :babel "hebrew" :polyglossia "hebrew" :lang-name "Hebrew" :script "hebrew" :script-tag "hebr")
+ ("hi" :babel "hindi" :polyglossia "hindi" :lang-name "Hindi" :script "devanagari" :script-tag "deva")
+ ("hr" :babel "croatian" :polyglossia "croatian" :lang-name "Croatian" :script "latin" :script-tag "latn")
+ ("hsb" :babel "uppersorbian" :polyglossia "sorbian" :polyglossia-variant "upper" :lang-name "Upper Sorbian" :script "latin" :script-tag "latn")
+ ("hu" :babel "magyar" :polyglossia "magyar" :lang-name "Magyar" :script "latin" :script-tag "latn")
+ ("hy" :babel-ini-only "armenian" :polyglossia "armenian" :lang-name "Armenian" :script "armenian" :script-tag "armn")
+ ("ia" :babel "interlingua" :polyglossia "interlingua" :lang-name "Interlingua" :script "latin" :script-tag "latn")
+ ("id" :babel "indonesian" :polyglossia "malay" :polyglossia-variant "indonesian" :lang-name "Indonesian" :script "latin" :script-tag "latn")
+ ("is" :babel "icelandic" :polyglossia "icelandic" :lang-name "Icelandic" :script "latin" :script-tag "latn")
+ ("it" :babel "italian" :polyglossia "italian" :lang-name "Italian" :script "latin" :script-tag "latn")
+ ("kn" :babel-ini-only "kannada" :polyglossia "kannada" :lang-name "Kannada" :script "kannada" :script-tag "knda")
+ ("la" :babel "latin" :polyglossia "latin" :lang-name "Latin" :script "latin" :script-tag "latn")
+ ("la-classic" :babel "classiclatin" :polyglossia "latin" :polyglossia-variant "classic" :lang-name "Classic Latin" :script "latin" :script-tag "latn")
+ ("la-medieval" :babel "medievallatin" :polyglossia "latin" :polyglossia-variant "medieval" :lang-name "Medieval Latin" :script "latin" :script-tag "latn")
+ ("la-ecclesiastic" :babel "ecclesiasticlatin" :polyglossia "latin" :polyglossia-variant "ecclesiastic" :lang-name "Ecclesiastic Latin" :script "latin" :script-tag "latn")
+ ("lo" :babel-ini-only "lao" :polyglossia "lao" :lang-name "Lao" :script "lao" :script-tag "lao")
+ ("lt" :babel "lithuanian" :polyglossia "lithuanian" :lang-name "Lithuanian" :script "latin" :script-tag "latn")
+ ("lv" :babel "latvian" :polyglossia "latvian" :lang-name "Latvian" :script "latin" :script-tag "latn")
+ ("ml" :babel-ini-only "malayalam" :polyglossia "malayalam" :lang-name "Malayalam" :script "malayalam" :script-tag "mlym")
+ ("mr" :babel-ini-only "marathi" :polyglossia "marathi" :lang-name "Marathi" :script "devanagari" :script-tag "deva")
+ ("ms" :babel "malay" :polyglossia "malay" :polyglossia-variant "malaysian" :lang-name "Malay" :script "latin" :script-tag "latn")
+ ("nb" :babel "norsk" :polyglossia "norwegian" :polyglossia-variant "bokmal" :lang-name "Norwegian Bokmål" :script "latin" :script-tag "latn")
+ ("nl" :babel "dutch" :polyglossia "dutch" :lang-name "Dutch" :script "latin" :script-tag "latn")
+ ("nn" :babel "nynorsk" :polyglossia "norwegian" :polyglossia-variant "nynorsk" :lang-name "Norwegian Nynorsk" :script "latin" :script-tag "latn")
+ ("no" :babel "norsk" :polyglossia "norsk" :lang-name "Norwegian" :script "latin" :script-tag "latn")
+ ("oc" :babel "occitan" :polyglossia "occitan" :lang-name "Occitan" :script "latin" :script-tag "latn")
+ ("pl" :babel "polish" :polyglossia "polish" :lang-name "Polish" :script "latin" :script-tag "latn")
+ ("pms" :babel "piedmontese" :polyglossia "piedmontese" :lang-name "Piedmontese" :script "latin" :script-tag "latn")
+ ("pt" :babel "portuges" :polyglossia "portuges" :lang-name "Portuges" :script "latin" :script-tag "latn")
+ ("pt-br" :babel "brazilian" :polyglossia "brazilian" :lang-name "Portuges" :script "latin" :script-tag "latn")
+ ("rm" :babel-ini-only "romansh" :polyglossia "romansh" :lang-name "Romansh" :script "latin" :script-tag "latn")
+ ("ro" :babel "romanian" :polyglossia "romanian" :lang-name "Romanian" :script "latin" :script-tag "latn")
+ ("ru" :babel "russian" :polyglossia "russian" :lang-name "Russian" :script "cyrillic" :script-tag "cyrl")
+ ("sa" :babel-ini-only "sanskrit" :polyglossia "sanskrit" :lang-name "Sanskrit" :script "devanagari" :script-tag "deva")
+ ("sk" :babel "slovak" :polyglossia "slovak" :lang-name "Slovak" :script "latin" :script-tag "latn")
+ ("sl" :babel "slovene" :polyglossia "slovene" :lang-name "Slovene" :script "latin" :script-tag "latn")
+ ("sq" :babel "albanian" :polyglossia "albanian" :lang-name "Albanian" :script "latin" :script-tag "latn")
+ ("sr" :babel "serbian" :polyglossia "serbian" :lang-name "Serbian" :script "latin" :script-tag "latn")
+ ("sr-cyrl" :babel-ini-only "serbian-cyrl" :polyglossia "serbian" :lang-name "Serbian" :script "cyrillic" :script-tag "cyrl")
+ ("sr-latn" :babel-ini-only "serbian-latin" :polyglossia "serbian" :lang-name "Serbian" :script "latin" :script-tag "latn")
+ ("sv" :babel "swedish" :polyglossia "swedish" :lang-name "Swedish" :script "latin" :script-tag "latn")
+ ("syr" :babel-ini-only "syriac" :polyglossia "syriac" :lang-name "Syriac" :script "syriac" :script-tag "syrc")
+ ("ta" :babel-ini-only "tamil" :polyglossia "tamil" :lang-name "Tamil" :script "tamil" :script-tag "taml")
+ ("te" :babel-ini-only "telugu" :polyglossia "telugu" :lang-name "Telugu" :script "telugu" :script-tag "telu")
+ ("th" :babel "thai" :polyglossia "thai" :lang-name "Thai" :script "thai" :script-tag "thai")
+ ("tk" :babel "turkmen" :polyglossia "turkmen" :lang-name "Turkmen" :script "latin" :script-tag "latn")
+ ("tr" :babel "turkish" :polyglossia "turkish" :lang-name "Turkish" :script "latin" :script-tag "latn")
+ ("uk" :babel "ukrainian" :polyglossia "ukrainian" :lang-name "Ukrainian" :script "cyrillic" :script-tag "cyrl")
+ ("ur" :babel-ini-only "urdu" :polyglossia "urdu" :lang-name "Urdu" :script "arabic" :script-tag "arab")
+ ("vi" :babel "vietnamese" :polyglossia "vietnamese" :lang-name "Vietnamese" :script "latin" :script-tag "latn")
+ (("zh" "zh-cn") :babel-ini-only "chinese" :polyglossia "chinese" :lang-name "Chinese Simplified" :script "hans" :script-tag "hans")
+ ("zh-tw" :babel-ini-only "chinese-traditional" :polyglossia "chinese" :polyglossia-variant "traditional" :lang-name "Chinese Traditional" :script "hant" :script-tag "hant"))
"Alist between language code and its properties for LaTeX export.
-In each element of the list car is always the code of the
-language and cdr is a property list. Valid keywords for this
-list can be:
+In each element of the list car is always the language code or a
+list of languages codes and cdr is a property list. Valid
+keywords for this list can be:
- `:babel' the name of the language loaded by the Babel LaTeX package
@@ -275,9 +283,17 @@ list can be:
exclusively through the new ini files method. See
`http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf'
+- `:babel-ini-alt' an alternative language name when it is loaded
+ using ini files
+
- `:polyglossia-variant' the language variant loaded by Polyglossia
-- `:lang-name' the actual name of the language.")
+- `:lang-name' the actual name of the language
+
+- `:script' the script name
+
+- `:script-tag' the script otf tag.")
+
(defconst org-latex-line-break-safe "\\\\[0pt]"
"Linebreak protecting the following [...].
@@ -1657,9 +1673,15 @@ already loaded.
Return the new header."
(let* ((language-code (plist-get info :language))
(plist (cdr
- (assoc language-code org-latex-language-alist)))
+ (cl-assoc-if (lambda (x)
+ (or (and (stringp x)
+ (string= language-code x))
+ (and (listp x)
+ (member language-code x))))
+ org-latex-language-alist)))
(language (plist-get plist :babel))
(language-ini-only (plist-get plist :babel-ini-only))
+ (language-ini-alt (plist-get plist :babel-ini-alt))
;; If no language is set, or Babel package is not loaded, or
;; LANGUAGE keyword value is a language served by Babel
;; exclusively through ini files, return HEADER as-is.
@@ -1691,7 +1713,8 @@ Return the new header."
(replace-regexp-in-string (format
"\\(\\\\babelprovide\\[.*\\]\\)\\({\\)%s}" prov)
(format "\\1\\2%s}"
- (or language language-ini-only))
+ (if language-ini-alt language-ini-alt
+ (or language language-ini-only)))
header t)
header)))))
@@ -1736,7 +1759,12 @@ Return the new header."
(mapconcat
(lambda (l)
(let* ((plist (cdr
- (assoc language org-latex-language-alist)))
+ (cl-assoc-if (lambda (x)
+ (or (and (stringp x)
+ (string= language x))
+ (and (listp x)
+ (member language x))))
+ org-latex-language-alist)))
(polyglossia-variant (plist-get plist :polyglossia-variant))
(polyglossia-lang (plist-get plist :polyglossia))
(l (if (equal l language)
--
2.42.0
^ permalink raw reply related [relevance 2%]
* Re: [patch] Fixes and improvements in org-latex-language-alist
@ 2023-09-10 11:06 2% ` Juan Manuel Macías
0 siblings, 0 replies; 59+ results
From: Juan Manuel Macías @ 2023-09-10 11:06 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: emacs-orgmode, Max Nikulin
[-- Attachment #1: Type: text/plain, Size: 863 bytes --]
Ihor Radchenko writes:
> It is not that complex, really. I suggested the above approach because:
> 1. It is easy to read - clearly, ,@de-plist and ,@de-plist are the same
> thing.
> 2. If we ever need to change de-plist, we should only do it in a single
> place.
The fact of avoiding copy/paste is already an advantage. New patch
attached with your suggestions. I have simply modified the variable name
a little. de-plist may seem a bit confusing, because there is also de-at
(Austrian German). I have set de-default-plist, since for babel and
polyglossia German (de) and German from Germany (de-de) are the default
variant. The same with the case of the Chinese (Chinese = Chinese
Simplified).
--
Juan Manuel Macías
https://juanmanuelmacias.com
https://lunotipia.juanmanuelmacias.com
https://gnutas.juanmanuelmacias.com
[-- Attachment #2: 0001-ox-latex.el-Fixes-and-improvements-in-org-latex-lang.patch --]
[-- Type: text/x-patch, Size: 22021 bytes --]
From 73057fc06990f861468c397c94b7076d025acbc8 Mon Sep 17 00:00:00 2001
From: Juan Manuel Macias <maciaschain@posteo.net>
Date: Fri, 8 Sep 2023 19:33:25 +0200
Subject: [PATCH] ox-latex.el: Fixes and improvements in
`org-latex-language-alist'.
* (org-latex-language-alist): Fix a language code (`de-de') removed
when `org-latex-babel-language-alist' and
`org-latex-polyglossia-language-alist' were merged. To allow language
codes that can have a similar translation in `babel' or `polyglossia'
now in each element of `org-latex-language-alist' car can also be a
list of language codes. New admitted properties: `:babel-ini-alt',
`:script' and `:script-tag'. Add language code for ancient Greek.
Fix Afrikaans (was previously removed). New languages: Chinese
Simplified and Traditional. Correction of some typos, errors and
inaccuracies. `let' bindings suggested by Ihor Radchenko.
* (org-latex-guess-babel-language): Some necessary modifications.
---
lisp/ox-latex.el | 197 ++++++++++++++++++++++++++---------------------
1 file changed, 109 insertions(+), 88 deletions(-)
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 241ef603a..14105c7cc 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -177,94 +177,105 @@
;;; Internal Variables
(defconst org-latex-language-alist
- '(("am" :babel-ini-only "amharic" :polyglossia "amharic" :lang-name "Amharic")
- ("ar" :babel "arabic" :polyglossia "arabic" :lang-name "Arabic")
- ("ast" :babel-ini-only "asturian" :polyglossia "asturian" :lang-name "Asturian")
- ("bg" :babel "bulgarian" :polyglossia "bulgarian" :lang-name "Bulgarian")
- ("bn" :babel-ini-only "bengali" :polyglossia "bengali" :lang-name "Bengali")
- ("bo" :babel-ini-only "tibetan" :polyglossia "tibetan" :lang-name "Tibetan")
- ("br" :babel "breton" :polyglossia "breton" :lang-name "Breton")
- ("ca" :babel "catalan" :polyglossia "catalan" :lang-name "Catalan")
- ("cop" :babel-ini-only "coptic" :polyglossia "coptic" :lang-name "Coptic")
- ("cs" :babel "czech" :polyglossia "czech" :lang-name "Czech")
- ("cy" :babel "welsh" :polyglossia "welsh" :lang-name "Welsh")
- ("da" :babel "danish" :polyglossia "danish" :lang-name "Danish")
- ("de" :babel "ngerman" :polyglossia "german" :polyglossia-variant "german" :lang-name "German")
- ("de-at" :babel "naustrian" :polyglossia "german" :polyglossia-variant "austrian" :lang-name "German")
- ("dsb" :babel "lsorbian" :polyglossia "sorbian" :polyglossia-variant "lower" :lang-name "Lower Sorbian")
- ("dv" :babel-ini-only "divehi" :polyglossia "divehi" :lang-name "Divehi")
- ("el" :babel "greek" :polyglossia "greek" :lang-name "Greek")
- ("el-polyton" :babel "polutonikogreek" :polyglossia "greek" :polyglossia-variant "polytonic" :lang-name "Polytonic Greek")
- ("en" :babel "american" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English")
- ("en-au" :babel "australian" :polyglossia "english" :polyglossia-variant "australian" :lang-name "English")
- ("en-gb" :babel "british" :polyglossia "english" :polyglossia-variant "uk" :lang-name "English")
- ("en-nz" :babel "newzealand" :polyglossia "english" :polyglossia-variant "newzealand" :lang-name "English")
- ("en-us" :babel "american" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English")
- ("eo" :babel "esperanto" :polyglossia "esperanto" :lang-name "Esperanto")
- ("es" :babel "spanish" :polyglossia "spanish" :lang-name "Spanish")
- ("es-mx" :babel "spanishmx" :polyglossia "spanish" :polyglossia-variant "mexican" :lang-name "Spanish")
- ("et" :babel "estonian" :polyglossia "estonian" :lang-name "Estonian")
- ("eu" :babel "basque" :polyglossia "basque" :lang-name "Basque")
- ("fa" :babel "farsi" :polyglossia "farsi" :lang-name "Farsi")
- ("fi" :babel "finnish" :polyglossia "finnish" :lang-name "Finnish")
- ("fr" :babel "french" :polyglossia "french" :lang-name "French")
- ("fr-ca" :babel "canadien" :polyglossia "french" :polyglossia-variant "canadian" :lang-name "French")
- ("fur" :babel "friulan" :polyglossia "friulan" :lang-name "Friulian")
- ("ga" :babel "irish" :polyglossia "irish" :lang-name "Irish")
- ("gd" :babel "scottish" :polyglossia "scottish" :lang-name "Scottish Gaelic")
- ("gl" :babel "galician" :polyglossia "galician" :lang-name "Galician")
- ("he" :babel "hebrew" :polyglossia "hebrew" :lang-name "Hebrew")
- ("hi" :babel "hindi" :polyglossia "hindi" :lang-name "Hindi")
- ("hr" :babel "croatian" :polyglossia "croatian" :lang-name "Croatian")
- ("hsb" :babel "uppersorbian" :polyglossia "sorbian" :polyglossia-variant "upper" :lang-name "Upper Sorbian")
- ("hu" :babel "magyar" :polyglossia "magyar" :lang-name "Magyar")
- ("hy" :babel-ini-only "armenian" :polyglossia "armenian" :lang-name "Armenian")
- ("ia" :babel "interlingua" :polyglossia "interlingua" :lang-name "Interlingua")
- ("id" :babel-ini-only "bahasai" :polyglossia "bahasai" :lang-name "Bahasai")
- ("is" :babel "icelandic" :polyglossia "icelandic" :lang-name "Icelandic")
- ("it" :babel "italian" :polyglossia "italian" :lang-name "Italian")
- ("kn" :babel-ini-only "kannada" :polyglossia "kannada" :lang-name "Kannada")
- ("la" :babel "latin" :polyglossia "latin" :lang-name "Latin")
- ("la-classic" :babel "classiclatin" :polyglossia "latin" :polyglossia-variant "classic" :lang-name "Classic Latin")
- ("la-medieval" :babel "medievallatin" :polyglossia "latin" :polyglossia-variant "medieval" :lang-name "Medieval Latin")
- ("la-ecclesiastic" :babel "ecclesiasticlatin" :polyglossia "latin" :polyglossia-variant "ecclesiastic" :lang-name "Ecclesiastic Latin")
- ("lo" :babel-ini-only "lao" :polyglossia "lao" :lang-name "Lao")
- ("lt" :babel "lithuanian" :polyglossia "lithuanian" :lang-name "Lithuanian")
- ("lv" :babel "latvian" :polyglossia "latvian" :lang-name "Latvian")
- ("ml" :babel-ini-only "malayalam" :polyglossia "malayalam" :lang-name "Malayalam")
- ("mr" :babel-ini-only "maranthi" :polyglossia "maranthi" :lang-name "Maranthi")
- ("nb" :babel "norsk" :polyglossia "norwegian" :polyglossia-variant "bokmal" :lang-name "Norwegian Bokmål")
- ("nl" :babel "dutch" :polyglossia "dutch" :lang-name "Dutch")
- ("nn" :babel "nynorsk" :polyglossia "norwegian" :polyglossia-variant "nynorsk" :lang-name "Norwegian Nynorsk")
- ("no" :babel "norsk" :polyglossia "norsk" :lang-name "Norwegian")
- ("oc" :babel "occitan" :polyglossia "occitan" :lang-name "Occitan")
- ("pl" :babel "polish" :polyglossia "polish" :lang-name "Polish")
- ("pms" :babel "piedmontese" :polyglossia "piedmontese" :lang-name "Piedmontese")
- ("pt" :babel "portuges" :polyglossia "portuges" :lang-name "Portuges")
- ("pt-br" :babel "brazilian" :polyglossia "brazilian" :lang-name "Portuges")
- ("rm" :babel-ini-only "romansh" :polyglossia "romansh" :lang-name "Romansh")
- ("ro" :babel "romanian" :polyglossia "romanian" :lang-name "Romanian")
- ("ru" :babel "russian" :polyglossia "russian" :lang-name "Russian")
- ("sa" :babel-ini-only "sanskrit" :polyglossia "sanskrit" :lang-name "Sanskrit")
- ("sk" :babel "slovak" :polyglossia "slovak" :lang-name "Slovak")
- ("sl" :babel "slovene" :polyglossia "slovene" :lang-name "Slovene")
- ("sq" :babel "albanian" :polyglossia "albanian" :lang-name "Albanian")
- ("sr" :babel "serbian" :polyglossia "serbian" :lang-name "Serbian")
- ("sv" :babel "swedish" :polyglossia "swedish" :lang-name "Swedish")
- ("syr" :babel-ini-only "syriac" :polyglossia "syriac" :lang-name "Syriac")
- ("ta" :babel-ini-only "tamil" :polyglossia "tamil" :lang-name "Tamil")
- ("te" :babel-ini-only "telugu" :polyglossia "telugu" :lang-name "Telugu")
- ("th" :babel "thai" :polyglossia "thai" :lang-name "Thai")
- ("tk" :babel "turkmen" :polyglossia "turkmen" :lang-name "Turkmen")
- ("tr" :babel "turkish" :polyglossia "turkish" :lang-name "Turkish")
- ("uk" :babel "ukrainian" :polyglossia "ukrainian" :lang-name "Ukrainian")
- ("ur" :babel-ini-only "urdu" :polyglossia "urdu" :lang-name "Urdu")
- ("vi" :babel "vietnamese" :polyglossia "vietnamese" :lang-name "Vietnamese"))
+ (let ((de-default-plist '(:babel "ngerman" :babel-ini-alt "german" :polyglossia "german" :polyglossia-variant "german" :lang-name "German" :script "latin" :script-tag "latn"))
+ (zh-default-plist '(:babel-ini-only "chinese" :polyglossia "chinese" :polyglossia-variant "simplified" :lang-name "Chinese Simplified" :script "hans" :script-tag "hans")))
+ `(("af" :babel "afrikaans" :polyglossia "afrikaans" :lang-name "Afrikaans" :script "latin" :script-tag "latn")
+ ("am" :babel-ini-only "amharic" :polyglossia "amharic" :lang-name "Amharic" :script "ethiopic" :script-tag "ethi")
+ ("ar" :babel-ini-only "arabic" :polyglossia "arabic" :lang-name "Arabic" :script "arabic" :script-tag "arab")
+ ("ast" :babel-ini-only "asturian" :polyglossia "asturian" :lang-name "Asturian" :script "latin" :script-tag "latn")
+ ("bg" :babel "bulgarian" :polyglossia "bulgarian" :lang-name "Bulgarian" :script "cyrillic" :script-tag "cyrl")
+ ("bn" :babel-ini-only "bengali" :polyglossia "bengali" :lang-name "Bengali" :script "bengali" :script-tag: "beng")
+ ("bo" :babel-ini-only "tibetan" :polyglossia "tibetan" :lang-name "Tibetan" :script "tibetan" :script-tag "tib")
+ ("br" :babel "breton" :polyglossia "breton" :lang-name "Breton" :script "latin" :script-tag "latn")
+ ("ca" :babel "catalan" :polyglossia "catalan" :lang-name "Catalan" :script "latin" :script-tag "latn")
+ ("cop" :babel-ini-only "coptic" :polyglossia "coptic" :lang-name "Coptic" :script "coptic" :script-tag "copt")
+ ("cs" :babel "czech" :polyglossia "czech" :lang-name "Czech" :script "latin" :script-tag "latn")
+ ("cy" :babel "welsh" :polyglossia "welsh" :lang-name "Welsh" :script "latin" :script-tag "latn")
+ ("da" :babel "danish" :polyglossia "danish" :lang-name "Danish" :script "latin" :script-tag "latn")
+ ("de" ,@de-default-plist)
+ ("de-de" ,@de-default-plist)
+ ("de-at" :babel "naustrian" :babel-ini-alt "german-austria" :polyglossia "german" :polyglossia-variant "austrian" :lang-name "German" :script "latin" :script-tag "latn")
+ ("dsb" :babel "lowersorbian" :babel-ini-alt "lsorbian" :polyglossia "sorbian" :polyglossia-variant "lower" :lang-name "Lower Sorbian" :script "latin" :script-tag "latn")
+ ("dv" :polyglossia "divehi" :lang-name "Dhivehi" :script "latin" :script-tag "latn")
+ ("el" :babel "greek" :polyglossia "greek" :lang-name "Greek" :script "greek" :script-tag "grek")
+ ("el-polyton" :babel "polutonikogreek" :babel-ini-alt "polytonicgreek" :polyglossia "greek" :polyglossia-variant "polytonic" :lang-name "Polytonic Greek" :script "greek" :script-tag "grek")
+ ("grc" :babel "greek.ancient" :babel-ini-alt "ancientgreek" :polyglossia "greek" :polyglossia-variant "ancient" :lang-name "Ancient Greek" :script "greek" :script-tag "grek")
+ ("en" :babel "english" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-au" :babel "australian" :polyglossia "english" :polyglossia-variant "australian" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-ca" :babel "canadian" :polyglossia "english" :polyglossia-variant "canadian" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-gb" :babel "british" :polyglossia "english" :polyglossia-variant "uk" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-nz" :babel "newzealand" :polyglossia "english" :polyglossia-variant "newzealand" :lang-name "English" :script "latin" :script-tag "latn")
+ ("en-us" :babel "american" :polyglossia "english" :polyglossia-variant "usmax" :lang-name "English" :script "latin" :script-tag "latn")
+ ("eo" :babel "esperanto" :polyglossia "esperanto" :lang-name "Esperanto" :script "latin" :script-tag "latn")
+ ("es" :babel "spanish" :polyglossia "spanish" :lang-name "Spanish" :script "latin" :script-tag "latn")
+ ("es-mx" :babel "spanishmx" :polyglossia "spanish" :polyglossia-variant "mexican" :lang-name "Spanish" :script "latin" :script-tag "latn")
+ ("et" :babel "estonian" :polyglossia "estonian" :lang-name "Estonian" :script "latin" :script-tag "latn")
+ ("eu" :babel "basque" :polyglossia "basque" :lang-name "Basque" :script "latin" :script-tag "latn")
+ ("fa" :babel "persian" :polyglossia "persian" :lang-name "Persian" :script "arabic" :script-tag "arab")
+ ("fi" :babel "finnish" :polyglossia "finnish" :lang-name "Finnish" :script "latin" :script-tag "latn")
+ ("fr" :babel "french" :polyglossia "french" :lang-name "French" :script "latin" :script-tag "latn")
+ ("fr-ca" :babel "canadien" :babel-ini-alt "canadian" :polyglossia "french" :polyglossia-variant "canadian" :lang-name "French" :script "latin" :script-tag "latn")
+ ("fur" :babel "friulian" :polyglossia "friulian" :lang-name "Friulian" :script "latin" :script-tag "latn")
+ ("ga" :babel "irish" :polyglossia "gaelic" :polyglossia-variant "irish" :lang-name "Irish Gaelic" :script "latin" :script-tag "latn")
+ ("gd" :babel "scottish" :polyglossia "gaelic" :polyglossia-variant "scottish" :lang-name "Scottish Gaelic" :script "latin" :script-tag "latn")
+ ("gl" :babel "galician" :polyglossia "galician" :lang-name "Galician" :script "latin" :script-tag "latn")
+ ("he" :babel "hebrew" :polyglossia "hebrew" :lang-name "Hebrew" :script "hebrew" :script-tag "hebr")
+ ("hi" :babel "hindi" :polyglossia "hindi" :lang-name "Hindi" :script "devanagari" :script-tag "deva")
+ ("hr" :babel "croatian" :polyglossia "croatian" :lang-name "Croatian" :script "latin" :script-tag "latn")
+ ("hsb" :babel "uppersorbian" :polyglossia "sorbian" :polyglossia-variant "upper" :lang-name "Upper Sorbian" :script "latin" :script-tag "latn")
+ ("hu" :babel "magyar" :polyglossia "magyar" :lang-name "Magyar" :script "latin" :script-tag "latn")
+ ("hy" :babel-ini-only "armenian" :polyglossia "armenian" :lang-name "Armenian" :script "armenian" :script-tag "armn")
+ ("ia" :babel "interlingua" :polyglossia "interlingua" :lang-name "Interlingua" :script "latin" :script-tag "latn")
+ ("id" :babel "indonesian" :polyglossia "malay" :polyglossia-variant "indonesian" :lang-name "Indonesian" :script "latin" :script-tag "latn")
+ ("is" :babel "icelandic" :polyglossia "icelandic" :lang-name "Icelandic" :script "latin" :script-tag "latn")
+ ("it" :babel "italian" :polyglossia "italian" :lang-name "Italian" :script "latin" :script-tag "latn")
+ ("kn" :babel-ini-only "kannada" :polyglossia "kannada" :lang-name "Kannada" :script "kannada" :script-tag "knda")
+ ("la" :babel "latin" :polyglossia "latin" :lang-name "Latin" :script "latin" :script-tag "latn")
+ ("la-classic" :babel "classiclatin" :polyglossia "latin" :polyglossia-variant "classic" :lang-name "Classic Latin" :script "latin" :script-tag "latn")
+ ("la-medieval" :babel "medievallatin" :polyglossia "latin" :polyglossia-variant "medieval" :lang-name "Medieval Latin" :script "latin" :script-tag "latn")
+ ("la-ecclesiastic" :babel "ecclesiasticlatin" :polyglossia "latin" :polyglossia-variant "ecclesiastic" :lang-name "Ecclesiastic Latin" :script "latin" :script-tag "latn")
+ ("lo" :babel-ini-only "lao" :polyglossia "lao" :lang-name "Lao" :script "lao" :script-tag "lao")
+ ("lt" :babel "lithuanian" :polyglossia "lithuanian" :lang-name "Lithuanian" :script "latin" :script-tag "latn")
+ ("lv" :babel "latvian" :polyglossia "latvian" :lang-name "Latvian" :script "latin" :script-tag "latn")
+ ("ml" :babel-ini-only "malayalam" :polyglossia "malayalam" :lang-name "Malayalam" :script "malayalam" :script-tag "mlym")
+ ("mr" :babel-ini-only "marathi" :polyglossia "marathi" :lang-name "Marathi" :script "devanagari" :script-tag "deva")
+ ("ms" :babel "malay" :polyglossia "malay" :polyglossia-variant "malaysian" :lang-name "Malay" :script "latin" :script-tag "latn")
+ ("nb" :babel "norsk" :polyglossia "norwegian" :polyglossia-variant "bokmal" :lang-name "Norwegian Bokmål" :script "latin" :script-tag "latn")
+ ("nl" :babel "dutch" :polyglossia "dutch" :lang-name "Dutch" :script "latin" :script-tag "latn")
+ ("nn" :babel "nynorsk" :polyglossia "norwegian" :polyglossia-variant "nynorsk" :lang-name "Norwegian Nynorsk" :script "latin" :script-tag "latn")
+ ("no" :babel "norsk" :polyglossia "norsk" :lang-name "Norwegian" :script "latin" :script-tag "latn")
+ ("oc" :babel "occitan" :polyglossia "occitan" :lang-name "Occitan" :script "latin" :script-tag "latn")
+ ("pl" :babel "polish" :polyglossia "polish" :lang-name "Polish" :script "latin" :script-tag "latn")
+ ("pms" :babel "piedmontese" :polyglossia "piedmontese" :lang-name "Piedmontese" :script "latin" :script-tag "latn")
+ ("pt" :babel "portuges" :polyglossia "portuges" :lang-name "Portuges" :script "latin" :script-tag "latn")
+ ("pt-br" :babel "brazilian" :polyglossia "brazilian" :lang-name "Portuges" :script "latin" :script-tag "latn")
+ ("rm" :babel-ini-only "romansh" :polyglossia "romansh" :lang-name "Romansh" :script "latin" :script-tag "latn")
+ ("ro" :babel "romanian" :polyglossia "romanian" :lang-name "Romanian" :script "latin" :script-tag "latn")
+ ("ru" :babel "russian" :polyglossia "russian" :lang-name "Russian" :script "cyrillic" :script-tag "cyrl")
+ ("sa" :babel-ini-only "sanskrit" :polyglossia "sanskrit" :lang-name "Sanskrit" :script "devanagari" :script-tag "deva")
+ ("sk" :babel "slovak" :polyglossia "slovak" :lang-name "Slovak" :script "latin" :script-tag "latn")
+ ("sl" :babel "slovene" :polyglossia "slovene" :lang-name "Slovene" :script "latin" :script-tag "latn")
+ ("sq" :babel "albanian" :polyglossia "albanian" :lang-name "Albanian" :script "latin" :script-tag "latn")
+ ("sr" :babel "serbian" :polyglossia "serbian" :lang-name "Serbian" :script "latin" :script-tag "latn")
+ ("sr-cyrl" :babel-ini-only "serbian-cyrl" :polyglossia "serbian" :lang-name "Serbian" :script "cyrillic" :script-tag "cyrl")
+ ("sr-latn" :babel-ini-only "serbian-latin" :polyglossia "serbian" :lang-name "Serbian" :script "latin" :script-tag "latn")
+ ("sv" :babel "swedish" :polyglossia "swedish" :lang-name "Swedish" :script "latin" :script-tag "latn")
+ ("syr" :babel-ini-only "syriac" :polyglossia "syriac" :lang-name "Syriac" :script "syriac" :script-tag "syrc")
+ ("ta" :babel-ini-only "tamil" :polyglossia "tamil" :lang-name "Tamil" :script "tamil" :script-tag "taml")
+ ("te" :babel-ini-only "telugu" :polyglossia "telugu" :lang-name "Telugu" :script "telugu" :script-tag "telu")
+ ("th" :babel "thai" :polyglossia "thai" :lang-name "Thai" :script "thai" :script-tag "thai")
+ ("tk" :babel "turkmen" :polyglossia "turkmen" :lang-name "Turkmen" :script "latin" :script-tag "latn")
+ ("tr" :babel "turkish" :polyglossia "turkish" :lang-name "Turkish" :script "latin" :script-tag "latn")
+ ("uk" :babel "ukrainian" :polyglossia "ukrainian" :lang-name "Ukrainian" :script "cyrillic" :script-tag "cyrl")
+ ("ur" :babel-ini-only "urdu" :polyglossia "urdu" :lang-name "Urdu" :script "arabic" :script-tag "arab")
+ ("vi" :babel "vietnamese" :polyglossia "vietnamese" :lang-name "Vietnamese" :script "latin" :script-tag "latn")
+ ("zh" ,@zh-default-plist)
+ ("zh-cn" ,@zh-default-plist)
+ ("zh-tw" :babel-ini-only "chinese-traditional" :polyglossia "chinese" :polyglossia-variant "traditional" :lang-name "Chinese Traditional" :script "hant" :script-tag "hant")))
"Alist between language code and its properties for LaTeX export.
-In each element of the list car is always the code of the
-language and cdr is a property list. Valid keywords for this
-list can be:
+In each element of the list car is always the language code and
+cdr is a property list. Valid keywords for this list can be:
- `:babel' the name of the language loaded by the Babel LaTeX package
@@ -275,9 +286,17 @@ list can be:
exclusively through the new ini files method. See
`http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf'
+- `:babel-ini-alt' an alternative language name when it is loaded
+ using ini files
+
- `:polyglossia-variant' the language variant loaded by Polyglossia
-- `:lang-name' the actual name of the language.")
+- `:lang-name' the actual name of the language
+
+- `:script' the script name
+
+- `:script-tag' the script otf tag.")
+
(defconst org-latex-line-break-safe "\\\\[0pt]"
"Linebreak protecting the following [...].
@@ -1660,6 +1679,7 @@ Return the new header."
(assoc language-code org-latex-language-alist)))
(language (plist-get plist :babel))
(language-ini-only (plist-get plist :babel-ini-only))
+ (language-ini-alt (plist-get plist :babel-ini-alt))
;; If no language is set, or Babel package is not loaded, or
;; LANGUAGE keyword value is a language served by Babel
;; exclusively through ini files, return HEADER as-is.
@@ -1691,7 +1711,8 @@ Return the new header."
(replace-regexp-in-string (format
"\\(\\\\babelprovide\\[.*\\]\\)\\({\\)%s}" prov)
(format "\\1\\2%s}"
- (or language language-ini-only))
+ (if language-ini-alt language-ini-alt
+ (or language language-ini-only)))
header t)
header)))))
--
2.42.0
^ permalink raw reply related [relevance 2%]
* [BUG] Previewing equations [9.6.6 (release_9.6.6 @ /usr/share/emacs/29.1/lisp/org/)]
@ 2023-09-24 21:47 3% Peter Prevos
0 siblings, 0 replies; 59+ results
From: Peter Prevos @ 2023-09-24 21:47 UTC (permalink / raw)
To: emacs-orgmode
Remember to cover the basics, that is, what you expected to happen
and
what in fact did happen. You don't know how to make a good
report? See
https://orgmode.org/manual/Feedback.html#Feedback
Your bug report will be posted to the Org mailing list.
------------------------------------------------------------------------
■ Warning (org-element-cache): org-element--cache: Org parser
error in Infonomics II: Business Information Management and
Measurement::6190. Resetting.
The error was: (error "Invalid search bound (wrong side of
point)")
Backtrace:
" backtrace-to-string(nil)
org-element-at-point()
org-back-to-heading(t)
org-back-to-heading-or-point-min(t)
org-get-property-block()
org--property-local-values(\"LOG_INTO_DRAWER\" t)
org-entry-get-with-inheritance(\"LOG_INTO_DRAWER\" t)
org-entry-get(nil \"LOG_INTO_DRAWER\" inherit t)
org-log-into-drawer()
org-mode-flyspell-verify()
flyspell-word()
flyspell-post-command-hook()
"
Please report this to Org mode mailing list (M-x
org-submit-bug-report).
Emacs : GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+
Version 3.24.38, cairo version 1.17.8)
Package: Org mode version 9.6.6 (release_9.6.6 @
/usr/share/emacs/29.1/lisp/org/)
current state:
==============
(setq
org-agenda-prefix-format '((dashboard-agenda . " %i %-12:c %s ")
(agenda . " %i %-12:c%?-12t% s")
(todo . " %i %-12:c") (tags . " %i
%-12:c")
(search . " %i %-12:c"))
org-archive-location
"~/Documents/notes/20230604T152600--gtd-archive__productivity.org::*
From %s"
org-link-elisp-confirm-function 'yes-or-no-p
org-directory "/home/peter/Documents/notes/"
org-cite-insert-processor 'citar
org-hide-emphasis-markers t
org-bibtex-headline-format-function #[257 "\300\236A\207"
[:title] 3 "\n\n(fn ENTRY)"]
org-log-done 'time
org-agenda-custom-commands '(("n" "Netherlands" ((tags-todo
"nl"))
((org-agenda-files
(denote-directory-files-matching-regexp
"_gtd")
)
)
)
("h" "Third Hemisphere"
((agenda ""
((org-agenda-span 3)
(org-agenda-start-on-weekday
nil))
)
(todo "NEXT") (todo "WAITING")
(stuck))
((org-agenda-files
(cl-remove-if
(lambda (f) (string-match-p
"_cw" f))
(denote-directory-files-matching-regexp
"_gtd")
)
)
)
)
("p" "Projects"
((todo "PROJECT")
(stuck ""
((org-agenda-sorting-strategy
'(alpha-up priority-down))
)
)
)
)
("c" "Work"
((agenda ""
((org-agenda-span 7)
(org-agenda-start-on-weekday 1))
)
(todo "NEXT") (todo "WAITING")
(stuck))
((org-agenda-files
(denote-directory-files-matching-regexp
"_cw.*_gtd")
)
)
)
)
org-log-into-drawer t
org-agenda-skip-scheduled-if-done t
org-agenda-files
'("/home/peter/Documents/notes/20220718T190010--notes-inbox__gtd.org"
"/home/peter/Documents/notes/20220719T125424--third-hemisphere-action-plan__gtd.org"
"/home/peter/Documents/notes/20230104T060726--lucid-manager-action-plan__gtd_lucidmanager.org"
"/home/peter/Documents/notes/20230104T193809--horizon-of-reason-action-plan__gtd.org"
"/home/peter/Documents/notes/20230115T083737--magic-perspectives-action-plan__gtd_magic.org"
"/home/peter/Documents/notes/20230801T092150--coliban-water-actions__cw_gtd.org"
"/home/peter/Documents/notes/20230821T094002--netherlands-trip-carnaval-expedition__gtd_nl.org"
"/home/peter/Documents/notes/20230826T154100--emacs-writing-studio__emacs_ews_gtd_productivity_project.org")
org-persist-after-read-hook
'(org-element--cache-persist-after-read)
org-export-before-parsing-hook '(org-attach-expand-links)
org-cycle-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-startup-with-latex-preview t
org-default-notes-file
"/home/peter/Documents/notes/20220718T190010--notes-inbox__gtd.org"
org-archive-hook '(org-attach-archive-delete-maybe)
org-cite-follow-processor 'citar
org-odt-format-inlinetask-function
'org-odt-format-inlinetask-default-function
org-ascii-format-drawer-function #[771 "\207" [] 4 "\n\n(fn NAME
CONTENTS WIDTH)"]
org-cycle-hook '(org-cycle-hide-archived-subtrees
org-cycle-show-empty-lines
org-cycle-optimize-window-after-visibility-change
org-cycle-display-inline-images)
org-export-with-broken-links t
org-persist-before-read-hook
'(org-element--cache-persist-before-read)
org-link-from-user-regexp "\\<peter@xps9315\\>\\|\\<Peter
Prevos\\>"
org-image-actual-width '(450)
org-mode-hook '(org-autolist-mode writegood-mode citar-capf-setup
#[0 "\301\211\207"
[imenu-create-index-function
org-imenu-get-tree] 2]
org-fragtog-mode org-appear-mode
global-org-modern-mode
mixed-pitch-mode
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook
org-fold-show-all append
local]
5]
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook
org-babel-show-result-all append local]
5]
org-babel-result-hide-spec
org-babel-hide-all-hashes)
org-babel-load-languages '((emacs-lisp . t) (R . t) (python . t)
(julia . t) (shell . t) (latex . t))
org-agenda-skip-deadline-if-done t
org-cite-csl-styles-dir "~/Documents/library/csl/"
org-modern-checkbox nil
org-agenda-time-grid '((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
"......"
"----------------")
org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _
CONTENTS)"]
org-ellipsis " ↲"
org-latex-format-headline-function
'org-latex-format-headline-default-function
org-confirm-shell-link-function 'yes-or-no-p
org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME
CONTENTS)"]
outline-isearch-open-invisible-function
'outline-isearch-open-invisible
org-export-with-todo-keywords nil
org-stuck-projects '("/PROJECT" ("NEXT" "WAITING") nil
"SCHEDULED\\|DEADLINE")
org-log-repeat nil
org-startup-indented t
org-fold-catch-invisible-edits 'error
org-latex-classes '(("apa6"
"\\documentclass[a4paper, jou,
11pt]{apa6}\n\\usepackage[nodoi]{apacite}\n\\usepackage[british]{babel}\n\\usepackage{inputenc}\n\\usepackage{amsmath}\n\\usepackage{graphicx}\n\\usepackage{csquotes}\n\\usepackage[hyphens]{url}\n\\usepackage[T1]{fontenc}\n\\usepackage{lmodern}\n\\usepackage{hyperref}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}"))
("trade"
"\\documentclass[11pt, twoside]{memoir}\n
\\setstocksize{9in}{6in}\n
\\settrimmedsize{\\stockheight}{\\stockwidth}{*}\n
\\setlrmarginsandblock{2cm}{2cm}{*} % Left
and right margin\n
\\setulmarginsandblock{2cm}{2cm}{*} % Upper
and lower margin\n
\\checkandfixthelayout\n
\\setcounter{tocdepth}{0}\n
\\OnehalfSpacing\n \\usepackage{times}\n
\\chapterstyle{bianchi}\n
\\setsecheadstyle{\\normalfont \\raggedright
\\textbf}\n
\\setsubsecheadstyle{\\normalfont
\\raggedright \\emph}\n
\\setsubsubsecheadstyle{\\normalfont\\centering}\n
\\usepackage[font={small, it}]{caption}\n
\\usepackage{subcaption}\n
\\captionsetup[subfigure]{justification=centering}\n
\\usepackage{pdfpages}\n
\\pagestyle{myheadings}\n
\\usepackage{ccicons}\n
\\usepackage{nicefrac}\n
\\usepackage[authoryear]{natbib}\n
\\bibliographystyle{apalike}\n
\\usepackage{nohyperref}\n
\\usepackage{tikz}\n
\\usetikzlibrary{shapes.geometric, calc,
knots}\n \\usepackage{svg}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}"
. "\\subparagraph*{%s}"))
("crc"
"\\documentclass[krantz2]{krantz}\n
\\usepackage{lmodern}\n
\\usepackage[authoryear]{natbib}\n
\\usepackage{nicefrac}\n
\\usepackage[bf,singlelinecheck=off]{caption}\n
\\captionsetup[table]{labelsep=space}\n
\\captionsetup[figure]{labelsep=space}\n
\\usepackage{Alegreya}\n
\\usepackage[scale=.8]{sourcecodepro}\n
\\usepackage[breaklines=true]{minted}\n
\\usepackage{rotating}\n
\\usepackage[notbib,
nottoc,notlot,notlof]{tocbibind}\n
\\usepackage{amsfonts, tikz, tikz-layers}\n
\\usetikzlibrary{fadings, quotes, shapes,
calc, decorations.markings}\n
\\usetikzlibrary{patterns, shadows.blur}\n
\\usetikzlibrary{shapes,shapes.geometric,positioning}\n
\\usetikzlibrary{arrows, arrows.meta,
backgrounds}\n \\usepackage{imakeidx}
\\makeindex[intoc]\n
\\renewcommand{\\textfraction}{0.05}\n
\\renewcommand{\\topfraction}{0.8}\n
\\renewcommand{\\bottomfraction}{0.8}\n
\\renewcommand{\\floatpagefraction}{0.75}\n
\\renewcommand{\\eqref}[1]{(Equation
\\ref{#1})}\n
\\renewcommand{\\LaTeX}{LaTeX}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\paragraph*{%s}"))
("magictrick"
"\\documentclass[11pt, a4paper, twocolumn,
twoside]{article}\n\\usepackage{ccicons}\n\\usepackage{pdfpages}\n\\usepackage{times}\n\\usepackage{helvet}\n\\usepackage{geometry}\n\\geometry{a4paper,
total={170mm,250mm}, left=20mm, top=30mm}\n%
header 2008 x 332
px\n\\usepackage{titlesec}\n\\titleformat{\\section}\n
{\\bfseries}{\\thesection}{1em}{}\n\\titleformat{\\subsection}\n
{\\itshape}{\\thesection}{1em}{}\n\\usepackage{fancyhdr}\n\\usepackage[font={small,
it},
labelformat=empty]{caption}\n\\usepackage[hidelinks]{hyperref}\n\\pagestyle{fancy}\n\\renewcommand{\\headrulewidth}{0pt}\n\\renewcommand{\\footrulewidth}{0pt}\n\\setlength{\\parskip}{1em}\n\\renewcommand{\\baselinestretch}{1.1}\n\\setlength\\headheight{100.0pt}\n\\addtolength{\\textheight}{-100.0pt}\n\\fancyhead[LO]{\\Large{\\textsf{Magic
Perspectives Presents}}
\\includegraphics[width=\\textwidth]{header}}\n\\fancyhead[LE]{\\includegraphics[width=0.5\\textwidth]{header}}\n\\lfoot{Peter
Prevos}\n\\rfoot{\\href{https://magicperspectives.net}{magicperspectives.net}}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}"))
("ebook"
"\\documentclass[11pt,
oneside]{memoir}\n\\setstocksize{9in}{6in}\n\\settrimmedsize{\\stockheight}{\\stockwidth}{*}\n\\setlrmarginsandblock{2cm}{2cm}{*}
% Left and right
margin\n\\setulmarginsandblock{2cm}{2cm}{*}
% Upper and lower
margin\n\\checkandfixthelayout\n\\usepackage{times}\n\\OnehalfSpacing\n\\usepackage[authoryear]{natbib}\n\\bibliographystyle{apalike}\n\\setlength{\\bibsep}{1pt}\n\\usepackage[raggedright]{sidecap}\n\\setsecheadstyle{\\normalfont
\\raggedright
\\textbf}\n\\setsubsecheadstyle{\\normalfont
\\raggedright
\\emph}\n\\usepackage{subcaption}
\n\\usepackage[font={small,
it}]{caption}\n\\captionsetup[subfigure]{justification=centering}\n\\usepackage{pdfpages}\n\\usepackage[unicode=true,\n
bookmarks=true,bookmarksnumbered=false,bookmarksopen=true,\n
bookmarksopenlevel=1,
breaklinks=true,pdfborder={0 0
0},backref=false,colorlinks=false,pdfborderstyle={/S/U/W
.5}, allbordercolors={.8 .8
.8}]{hyperref}\n\\pagestyle{myheadings}\n\\setcounter{tocdepth}{0}\n\\usepackage{ccicons}\n\\usepackage{nicefrac}\n"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\subsubsection*{%s}"))
("article"
"\\documentclass[10pt]{article}\n
\\usepackage{tgpagella,eulervm}\n
\\usepackage{nicefrac}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}"
. "\\subparagraph*{%s}"))
("article" "\\documentclass[11pt]{article}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}"
. "\\subparagraph*{%s}"))
("report" "\\documentclass[11pt]{report}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\subsubsection*{%s}"))
("book" "\\documentclass[11pt]{book}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\subsubsection*{%s}"))
)
org-odt-format-headline-function
'org-odt-format-headline-default-function
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-cycle-hide-block-startup t
org-babel-tangle-lang-exts '(("latex" . "tex") ("julia" . "jl")
("python" . "py") ("emacs-lisp"
. "el")
("elisp" . "el"))
org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
org-confirm-elisp-link-function 'yes-or-no-p
org-agenda-window-setup 'current-window
org-latex-src-block-backend 'minted
org-cycle-separator-lines 0
org-cite-activate-processor 'citar
org-todo-keywords '((sequence "TODO(t)" "NEXT(n)" "WAITING(w@/!)"
"PROJECT(p)" "GOAL(g)" "|" "DONE(d/!)"
"CANCELLED(c@/!)")
)
org-latex-logfiles-extensions '("lof" "lot" "tex~" "aux" "idx"
"log" "out"
"toc" "nav" "snm" "vrb" "dvi"
"fdb_latexmk"
"blg" "brf" "fls" "entoc" "ps"
"spl" "bbl"
"tex" "bcf")
org-structure-template-alist '(("ss" . "src shell\n") ("sr"
. "src R\n")
("sp" . "src python\n")
("se" . "src elisp\n")
("a" . "export ascii") ("c"
. "center")
("C" . "comment") ("e"
. "example")
("E" . "export") ("h" . "export
html")
("l" . "export latex") ("q"
. "quote")
("s" . "src") ("v" . "verse"))
org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
org-html-format-inlinetask-function
'org-html-format-inlinetask-default-function
org-ascii-format-inlinetask-function
'org-ascii-format-inlinetask-default
org-modern-mode-hook '(org-modern-mode-set-explicitly)
org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME
CONTENTS)"]
org-confirm-babel-evaluate nil
org-fold-core-isearch-open-function
'org-fold-core--isearch-reveal
org-export-with-smart-quotes t
org-modern-keyword nil
org-cite-export-processors '((latex natbib "apalike2"
"authoryear")
(t csl "apa6.csl"))
org-preview-latex-default-process 'dvisvgm
org-latex-format-inlinetask-function
'org-latex-format-inlinetask-default-function
org-persist-before-write-hook
'(org-element--cache-persist-before-write)
org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-export-with-toc nil
org-link-shell-confirm-function 'yes-or-no-p
org-agenda-finalize-hook '(org-modern-agenda)
org-babel-pre-tangle-hook '(save-buffer)
org-agenda-loop-over-headlines-in-active-region nil
org-cite-global-bibliography
'("/home/peter/Documents/library/horizon-of-reason.bib"
"/home/peter/Documents/library/lucidmanager.bib"
"/home/peter/Documents/library/magic-science.bib"
"/home/peter/Documents/library/magic-tricks.bib"
"/home/peter/Documents/library/third-hemisphere.bib"
"/home/peter/Documents/library/zotero.bib"
"/home/peter/Documents/library/Kindle.json")
org-occur-hook '(org-first-headline-recenter)
org-capture-after-finalize-hook
'(denote-org-capture-delete-empty-file)
org-export-with-drawers nil
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-odt-preferred-output-format "doc"
org-link-parameters '(("attachment" :follow org-attach-follow
:complete
org-attach-complete-link)
("mu4e" :follow mu4e-org-open :store
mu4e-org-store-link)
("helpful" :store helpful--org-link-store)
("eww" :follow org-eww-open :store
org-eww-store-link)
("rmail" :follow org-rmail-open :store
org-rmail-store-link)
("mhe" :follow org-mhe-open :store
org-mhe-store-link)
("irc" :follow org-irc-visit :store
org-irc-store-link :export org-irc-export)
("info" :follow org-info-open :export
org-info-export
:store org-info-store-link
:insert-description
org-info-description-as-command)
("gnus" :follow org-gnus-open :store
org-gnus-store-link)
("docview" :follow org-docview-open :export
org-docview-export :store
org-docview-store-link)
("bbdb" :follow org-bbdb-open :export
org-bbdb-export
:complete org-bbdb-complete-link :store
org-bbdb-store-link)
("w3m" :store org-w3m-store-link)
("doi" :follow org-link-doi-open :export
org-link-doi-export)
("hugo" :complete
(lambda nil
(concat "{{% ref "
(file-name-nondirectory (read-file-name
"File: "))
" %}}")
)
:follow org-hugo-followlink)
("bibtex" :follow org-bibtex-open :store
org-bibtex-store-link)
("id" :follow org-id-open)
("nov" :follow nov-org-link-follow :store
nov-org-link-store)
("denote" :follow denote-link-ol-follow
:face
denote-faces-link :complete
denote-link-ol-complete
:store denote-link-ol-store :export
denote-link-ol-export)
("elfeed" :follow elfeed-link-open :store
elfeed-link-store-link)
("file+sys") ("file+emacs")
("shell" :follow org-link--open-shell)
("news" :follow
#[514 "\301\300\302Q\"\207"
["news" browse-url ":"] 6 "\n\n(fn URL
ARG)"]
)
("mailto" :follow
#[514 "\301\300\302Q\"\207"
["mailto" browse-url ":"] 6 "\n\n(fn URL
ARG)"]
)
("https" :follow
#[514 "\301\300\302Q\"\207"
["https" browse-url ":"] 6 "\n\n(fn URL
ARG)"]
)
("http" :follow
#[514 "\301\300\302Q\"\207"
["http" browse-url ":"] 6 "\n\n(fn URL
ARG)"]
)
("ftp" :follow
#[514 "\301\300\302Q\"\207"
["ftp" browse-url ":"] 6 "\n\n(fn URL
ARG)"]
)
("help" :follow helpful--org-link-follow
:store
org-link--store-help)
("file" :complete org-link-complete-file)
("elisp" :follow org-link--open-elisp))
org-html-format-headline-function
'org-html-format-headline-default-function
org-agenda-start-with-follow-mode t
org-metaup-hook '(org-babel-load-in-session-maybe)
org-modern-table nil
org-agenda-restore-windows-after-quit t
org-agenda-remove-tags t
org-num-format-function 'org-num-default-format
org-agenda-include-diary t
org-startup-with-inline-images t
org-latex-pdf-process '("pdflatex -interaction nonstopmode
-output-directory %o %f" "bibtex %b" "pdflatex -shell-escape
-interaction nonstopmode -output-directory %o %f" "pdflatex
-shell-escape -interaction nonstopmode -output-directory %o %f")
org-agenda-current-time-string "now - - - - - - - - - - - - - - -
- - - - - - - - - -"
org-agenda-block-separator 61
)
--
Dr Peter Prevos
---------------
peterprevos.com
^ permalink raw reply [relevance 3%]
* Re: Are 'placement' and 'float' "obsolete terms" in inline images exported to LaTeX?
@ 2023-10-04 14:34 7% ` Juan Manuel Macías
2023-10-06 16:29 0% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2023-10-04 14:34 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode
Ihor Radchenko writes:
> Further, we also provide :environment and :options attributes that do
> the same thing, but without special treatment of standard
> t/multicolumn/wrap/sideways/nil values in :float.
t/multicolumn/wrap/sideways/nil... and any arbitrary value (see lines 14125
and 14262 in org-manual.org).
>>> What we might do it to introduce something like a new :wrap attribute:
>>>
>>> #+attr_latex: :wrap subfigure,{\textwidht}
>
> So, it might be even better idea to extend :environment/:options
> attributes to more elements - their names make more sense and the values
> do not have a pre-defined special meanings.
Currently it is not possible in inline images (if I don't miss anything) this:
#+ATTR_LaTeX: :environment minipage :options {\textwidth}
[[file:/usr/share/texmf-dist/tex/latex/mwe/example-image-a.jpg]]
Implementing :environment/:options here would result in redundancy with:
#+ATTR_LaTeX: :float minipage :placement {\textwidth}
[[file:/usr/share/texmf-dist/tex/latex/mwe/example-image-a.jpg]]
which produces the same.
In tables there is more consistency because :float is a float
environment (table or any arbitrary value) and :environment is a table
environment (tabular or any arbitrary value). Here :placement :options
and :align act as what is expected of them:
#+ATTR_LaTeX: :environment foo :float var :placement [!h] :options [blah] :align cccc
|a|a|a|a|
===>
\begin{var}[!h]
\centering
\begin{foo}[blah]{cccc}
a & a & a & a\\[0pt]
\end{foo}
\end{var}
\end{document}
--
Juan Manuel Macías
https://juanmanuelmacias.com
https://lunotipia.juanmanuelmacias.com
https://gnutas.juanmanuelmacias.com
^ permalink raw reply [relevance 7%]
* Re: Are 'placement' and 'float' "obsolete terms" in inline images exported to LaTeX?
2023-10-04 14:34 7% ` Juan Manuel Macías
@ 2023-10-06 16:29 0% ` Ihor Radchenko
2023-10-06 18:35 0% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2023-10-06 16:29 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
Juan Manuel Macías <maciaschain@posteo.net> writes:
> Ihor Radchenko writes:
>
>> Further, we also provide :environment and :options attributes that do
>> the same thing, but without special treatment of standard
>> t/multicolumn/wrap/sideways/nil values in :float.
>
> t/multicolumn/wrap/sideways/nil... and any arbitrary value (see lines 14125
> and 14262 in org-manual.org).
My point is that actual "t", "multicolumn", "wrap", "sideways", and
"nil" LaTeX environments are not allowed.
>> So, it might be even better idea to extend :environment/:options
>> attributes to more elements - their names make more sense and the values
>> do not have a pre-defined special meanings.
>
> Currently it is not possible in inline images (if I don't miss anything) this:
>
> #+ATTR_LaTeX: :environment minipage :options {\textwidth}
> [[file:/usr/share/texmf-dist/tex/latex/mwe/example-image-a.jpg]]
Sure. But we might as well implement :environment support in addition to :float.
> Implementing :environment/:options here would result in redundancy with:
>
> #+ATTR_LaTeX: :float minipage :placement {\textwidth}
> [[file:/usr/share/texmf-dist/tex/latex/mwe/example-image-a.jpg]]
>
> which produces the same.
Sure. But didn't you motivate the change with the confusing _name_
:float? IMHO, :environment is more clear.
> In tables there is more consistency because :float is a float
> environment (table or any arbitrary value) and :environment is a table
> environment (tabular or any arbitrary value). Here :placement :options
> and :align act as what is expected of them:
>
> #+ATTR_LaTeX: :environment foo :float var :placement [!h] :options [blah] :align cccc
> |a|a|a|a|
>
> ===>
>
> \begin{var}[!h]
> \centering
> \begin{foo}[blah]{cccc}
> a & a & a & a\\[0pt]
> \end{foo}
> \end{var}
> \end{document}
This is not documented and is possibly a bug.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 0%]
* Re: Are 'placement' and 'float' "obsolete terms" in inline images exported to LaTeX?
2023-10-06 16:29 0% ` Ihor Radchenko
@ 2023-10-06 18:35 0% ` Juan Manuel Macías
0 siblings, 0 replies; 59+ results
From: Juan Manuel Macías @ 2023-10-06 18:35 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode
Ihor Radchenko writes:
>> In tables there is more consistency because :float is a float
>> environment (table or any arbitrary value) and :environment is a table
>> environment (tabular or any arbitrary value). Here :placement :options
>> and :align act as what is expected of them:
>>
>> #+ATTR_LaTeX: :environment foo :float var :placement [!h] :options [blah] :align cccc
>> |a|a|a|a|
>>
>> ===>
>>
>> \begin{var}[!h]
>> \centering
>> \begin{foo}[blah]{cccc}
>> a & a & a & a\\[0pt]
>> \end{foo}
>> \end{var}
>> \end{document}
>
> This is not documented and is possibly a bug.
I would say that it is the expected behavior: :float is for a float
environment and :environment is for the environment that builds the
table (by default tabular). According to the manual:
#+begin_quote
The table environments by default are not floats in LaTeX. To make
them floating objects use =:float= with one of the following
options: =t= (for a default =table= environment), =sideways= (for a
=sidewaystable= environment), =multicolumn= [...] and
=nil=. In addition to these three values, =:float= can pass through
any arbitrary value, for example a user-defined float type with the
=float= LaTeX package
#+end_quote
and (for :environment):
#+begin_quote
Set the default LaTeX table environment for the LaTeX export
backend to use when exporting Org tables. Common LaTeX table
environments are provided by these packages: tabularx, longtable,
array, tabu, and bmatrix. For packages, such as tabularx and tabu,
or any newer replacements
#+end_quote
The difference is that with images, except in cases of somewhat more
complex constructions where there are subfigures, there is only one
environment, "figure" by default or any other arbitrary one. There was a
commit a while ago, I don't remember when, that allowed :float to
support any arbitrary string as the float environment name, in images
and tables. In images ':float t' is figure (by default) and in tables it
is table (also by default).
Update: ah, I already have the commit located, because I also remember
that I myself sent a patch to update the documentation and correct a
regression that that commit introduced (:float t produced an environment
"t" (\begin{t}...\end{t}):
https://list.orgmode.org/878ruhrvfq.fsf@posteo.net/
^ permalink raw reply [relevance 0%]
* Regression in latex export of tables?
@ 2023-11-01 3:43 12% Vikas Rawal
2023-11-01 7:32 8% ` Vikas Rawal
2023-11-01 16:41 0% ` Max Nikulin
0 siblings, 2 replies; 59+ results
From: Vikas Rawal @ 2023-11-01 3:43 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 945 bytes --]
Hi all,
I am seeing a peculiar problem, and I would appreciate if somebody could check whether this is a bug or I am missing something.
The following table exports with a [0pt] at the end of each line.
* Test
| A | B | C |
|---+---+---|
| 1 | 2 | 3 |
| | | |
\section{Test}
\label{sec:orgb720d02}
\begin{center}
\begin{tabular}{rrr}
A & B & C\\[0pt]
\hline
1 & 2 & 3\\[0pt]
& & \\[0pt]
\end{tabular}
\end{center}
\end{document}
I have tried this by running emacs -q (to check if something in my config was messing up). With emacs -q, my org-version is: Org mode version 9.6.7 (release_9.6.7-13-g99cc96)
If I use my .emacs.d, my org-version is: Org mode version 9.7-pre (release_9.6.10-906-gee0961
Both give this strage [0pt] at the end of every line of the table.
Is this by design? This seems to be something recent. Am I missing something.
Thanks,
Vikas
[-- Attachment #2: Type: text/html, Size: 1144 bytes --]
^ permalink raw reply [relevance 12%]
* Re: Regression in latex export of tables?
2023-11-01 3:43 12% Regression in latex export of tables? Vikas Rawal
@ 2023-11-01 7:32 8% ` Vikas Rawal
2023-11-01 16:41 0% ` Max Nikulin
1 sibling, 0 replies; 59+ results
From: Vikas Rawal @ 2023-11-01 7:32 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 526 bytes --]
I am seeing a peculiar problem, and I would appreciate if somebody could check whether this is a bug or I am missing something.
The following table exports with a [0pt] at the end of each line.I can confirm that the problem disappears if I move to the following version of org-mode:
commit bed47b437d8cde7a98bafdb07996e248b40f70e6 (HEAD -> main, origin/main)
Author: Rudolf Adamkovič <salutis@me.com>
Date: Fri Oct 21 14:48:56 2022 +0200
Clearly, the problem has appeared more recently than this.
Vikas
[-- Attachment #2: Type: text/html, Size: 677 bytes --]
^ permalink raw reply [relevance 8%]
* Re: Regression in latex export of tables?
2023-11-01 3:43 12% Regression in latex export of tables? Vikas Rawal
2023-11-01 7:32 8% ` Vikas Rawal
@ 2023-11-01 16:41 0% ` Max Nikulin
2023-11-01 23:04 11% ` Vikas Rawal
1 sibling, 1 reply; 59+ results
From: Max Nikulin @ 2023-11-01 16:41 UTC (permalink / raw)
To: Vikas Rawal, emacs-orgmode
On 01/11/2023 10:43, Vikas Rawal wrote:
> Both give this strage [0pt] at the end of every line of the table.
>
> Is this by design? This seems to be something recent. Am I missing
> something.
If you believe that it is a regression then try to export something like
| (a,b) | open interval |
| [0,1] | closed interval |
https://list.orgmode.org/?q=%5B0pt%5D
^ permalink raw reply [relevance 0%]
* Re: Regression in latex export of tables?
2023-11-01 16:41 0% ` Max Nikulin
@ 2023-11-01 23:04 11% ` Vikas Rawal
2023-11-02 9:29 8% ` Fraga, Eric
0 siblings, 1 reply; 59+ results
From: Vikas Rawal @ 2023-11-01 23:04 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 680 bytes --]
On 01/11/2023 10:43, Vikas Rawal wrote:
> Both give this strage [0pt] at the end of every line of the table.
>
> Is this by design? This seems to be something recent. Am I missing
> something.
If you believe that it is a regression then try to export something like
| (a,b) | open interval |
| [0,1] | closed interval |
https://list.orgmode.org/?q=%5B0pt%5D
I am sorry, but I do not understand what are you pointing at. This is what I get:
----
\begin{center}
\begin{tabular}{ll}
(a,b) & open interval\\[0pt]
[0,1] & closed interval\\[0pt]
\end{tabular}
\end{center}
\end{document}
----
What is this [0pt] at the end?
[-- Attachment #2: Type: text/html, Size: 928 bytes --]
^ permalink raw reply [relevance 11%]
* Re: Regression in latex export of tables?
2023-11-01 23:04 11% ` Vikas Rawal
@ 2023-11-02 9:29 8% ` Fraga, Eric
2023-11-03 0:58 11% ` Vikas Rawal
0 siblings, 1 reply; 59+ results
From: Fraga, Eric @ 2023-11-02 9:29 UTC (permalink / raw)
To: Vikas Rawal; +Cc: Max Nikulin, emacs-orgmode@gnu.org
On Wednesday, 1 Nov 2023 at 19:04, Vikas Rawal wrote:
> I am sorry, but I do not understand what are you pointing at. This is
> what I get:
>
> ----
> \begin{center}
> \begin{tabular}{ll}
> (a,b) & open interval\\[0pt]
> [0,1] & closed interval\\[0pt]
> \end{tabular}
> \end{center}
> \end{document}
> ----
I think the point is that without the [0pt], the following line's [0,1]
gets interpreted as a length parameter for the line break, \\.
--
: Eric S Fraga, with org release_9.6.6-418-g294a4d in Emacs 30.0.50
^ permalink raw reply [relevance 8%]
* Re: Regression in latex export of tables?
2023-11-02 9:29 8% ` Fraga, Eric
@ 2023-11-03 0:58 11% ` Vikas Rawal
2023-11-03 2:30 8% ` Max Nikulin
0 siblings, 1 reply; 59+ results
From: Vikas Rawal @ 2023-11-03 0:58 UTC (permalink / raw)
To: Fraga, Eric; +Cc: Max Nikulin, emacs-orgmode@gnu.org
[-- Attachment #1: Type: text/plain, Size: 1202 bytes --]
On Thursday, November 02, 2023 14:59 IST, "Fraga, Eric" <e.fraga@ucl.ac.uk> wrote:
On Wednesday, 1 Nov 2023 at 19:04, Vikas Rawal wrote:
> I am sorry, but I do not understand what are you pointing at. This is
> what I get:
>
> ----
> \begin{center}
> \begin{tabular}{ll}
> (a,b) & open interval\\[0pt]
> [0,1] & closed interval\\[0pt]
> \end{tabular}
> \end{center}
> \end{document}
> ----
I think the point is that without the [0pt], the following line's [0,1]
gets interpreted as a length parameter for the line break, \\.
--
: Eric S Fraga, with org release_9.6.6-418-g294a4d in Emacs 30.0.50Earlier version gives me this:
\begin{center}
\begin{tabular}{ll}
(a,b) & open interval\\\empty
[0,1] & closed interval\\\empty
\end{tabular}
\end{center}
\end{document}
I have several export filters that break because of this [0pt]. For example, I use <mid> in a table row (created by an R source code) to mark wherever I want a midrule using this:
(defun org-export-midrule-filter-latex (row backend info)
(replace-regexp-in-string "\\(<mid>\\([[:blank:]]+\\&\\)+\\)[[:blank:]]\\\\\\\\" "\\\\midrule" row))
Now my \midrule becomes \midrule[0pt].
Vikas
[-- Attachment #2: Type: text/html, Size: 1512 bytes --]
^ permalink raw reply [relevance 11%]
* Re: Regression in latex export of tables?
2023-11-03 0:58 11% ` Vikas Rawal
@ 2023-11-03 2:30 8% ` Max Nikulin
2023-11-03 3:01 8% ` Vikas Rawal
0 siblings, 1 reply; 59+ results
From: Max Nikulin @ 2023-11-03 2:30 UTC (permalink / raw)
To: emacs-orgmode
On 03/11/2023 07:58, Vikas Rawal wrote:
> Earlier version gives me this:
> \begin{center}
> \begin{tabular}{ll}
> (a,b) & open interval\\\empty
> [0,1] & closed interval\\\empty
It was changed to avoid your inconvenience:
https://list.orgmode.org/874jw2conh.fsf@posteo.net/T/#u
Juan Manuel Macías. Re: Line breaks and brackets in LaTeX export. Mon,
17 Oct 2022 18:04:34 +0000
That moment there was no hope that tabularray would support \empty out
of the box. Perhaps some stable Linux distribution still have its
version unaware of \empty.
> (defun org-export-midrule-filter-latex (row backend info)
> (replace-regexp-in-string
> "\\(<mid>\\([[:blank:]]+\\&\\)+\\)[[:blank:]]\\\\\\\\" "\\\\midrule" row))
>
> Now my \midrule becomes \midrule[0pt].
Sorry, but your have to adjust the pattern and the replacement string to
allow either optional \empty or [0pt].
I still do not see a better solution that does not require substantional
changes of the org-export framework.
^ permalink raw reply [relevance 8%]
* Re: Regression in latex export of tables?
2023-11-03 2:30 8% ` Max Nikulin
@ 2023-11-03 3:01 8% ` Vikas Rawal
0 siblings, 0 replies; 59+ results
From: Vikas Rawal @ 2023-11-03 3:01 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 833 bytes --]
On 03/11/2023 07:58, Vikas Rawal wrote:
> Earlier version gives me this:
> \begin{center}
> \begin{tabular}{ll}
> (a,b) & open interval\\\empty
> [0,1] & closed interval\\\empty
It was changed to avoid your inconvenience:
https://list.orgmode.org/874jw2conh.fsf@posteo.net/T/#uOh, wow! Thank you all for having been so considerate of needs of even individual users like this. I did not notice this.
Org mode community does not cease to amaze me.
> (defun org-export-midrule-filter-latex (row backend info)
> (replace-regexp-in-string
> "\\(<mid>\\([[:blank:]]+\\&\\)+\\)[[:blank:]]\\\\\\\\" "\\\\midrule" row))
>
> Now my \midrule becomes \midrule[0pt].
Sorry, but your have to adjust the pattern and the replacement string to
allow either optional \empty or [0pt].Done
Thank you once again.
Vikas
[-- Attachment #2: Type: text/html, Size: 1206 bytes --]
^ permalink raw reply [relevance 8%]
* [BUG] ox-odt.el overrides auto-mode-alist defaults [9.6.6 (release_9.6.6 @ /usr/share/emacs/29.1/lisp/org/)]
@ 2023-12-09 5:18 3% Peter Prevos
0 siblings, 0 replies; 59+ results
From: Peter Prevos @ 2023-12-09 5:18 UTC (permalink / raw)
To: emacs-orgmode
Remember to cover the basics, that is, what you expected to happen
and
what in fact did happen. You don't know how to make a good
report? See
https://orgmode.org/manual/Feedback.html#Feedback
Your bug report will be posted to the Org mailing list.
------------------------------------------------------------------------
Hi,
ox-odt.el overrides the auto-mode-alist settings and instructs
Emacs to open od[fgpst] files in archive-mode instead of
doc-view-mode.
This line can be removed because it prevents Emacs from opening
LibreOffice files.
The test is to open a LibreOffice file in vanilla Emacs and when
ox-odt.el is activated.
Regards
P:)
Emacs : GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+
Version 3.24.38, cairo version 1.17.8)
Package: Org mode version 9.6.6 (release_9.6.6 @
/usr/share/emacs/29.1/lisp/org/)
current state:
==============
(setq
org-agenda-prefix-format '((dashboard-agenda . " %i %-12:c %s ")
(agenda . " %i %-12:c%?-12t% s")
(todo . " %i %-12:c")
(tags . " %i %-12:c")
(search . " %i %-12:c"))
org-archive-location
"~/Documents/notes/20230604T152600--gtd-archive__productivity.org::*
From %s"
org-link-elisp-confirm-function 'yes-or-no-p
org-directory "/home/peter/Documents/notes/"
org-cite-insert-processor 'citar
org-hide-emphasis-markers t
org-bibtex-headline-format-function #[257 "\300\236A\207"
[:title] 3 "\n\n(fn ENTRY)"]
org-log-done 'time
org-capture-bookmark nil
org-agenda-custom-commands '(("n" "Netherlands" ((tags-todo
"nl"))
((org-agenda-files
(denote-directory-files-matching-regexp
"_gtd")
)
)
)
("h" "Third Hemisphere"
((agenda ""
((org-agenda-span 3)
(org-agenda-start-on-weekday
nil))
)
(todo "NEXT"
((org-agenda-overriding-header
"Next Actions")
)
)
(todo "WAITING"
((org-agenda-overriding-header
"Waiting")
)
)
(stuck))
((org-agenda-files
(cl-remove-if
(lambda (f)
(string-match-p "_cw" f))
(denote-directory-files-matching-regexp
"_gtd")
)
)
)
)
("p" "Projects"
((todo "PROJECT")
(stuck ""
((org-agenda-sorting-strategy
'(alpha-up priority-down))
)
)
)
)
("c" "Work"
((agenda ""
((org-agenda-span 7)
(org-agenda-start-on-weekday 1))
)
(todo "NEXT") (todo "WAITING")
(stuck))
((org-agenda-files
(denote-directory-files-matching-regexp
"_cw.*_gtd")
)
)
)
)
org-log-into-drawer t
org-agenda-skip-scheduled-if-done t
org-agenda-files
'("/home/peter/Documents/notes/20220718T190010--notes-inbox__gtd.org"
"/home/peter/Documents/notes/20220719T125424--third-hemisphere-action-plan__gtd.org"
"/home/peter/Documents/notes/20230104T060726--lucid-manager-action-plan__gtd_lucidmanager.org"
"/home/peter/Documents/notes/20230104T193809--horizon-of-reason-action-plan__gtd.org"
"/home/peter/Documents/notes/20230115T083737--magic-perspectives-action-plan__gtd_magic.org"
"/home/peter/Documents/notes/20230821T094002--nederland__gjpc_gtd_nl.org"
"/home/peter/Documents/notes/20230925T150445--coliban-water-actions__cw_gtd.org")
org-capture-templates '(("f" "Fleeting note" item
(file+headline org-default-notes-file
"Notes")
"- %?")
("t" "New task" entry
(file+headline org-default-notes-file
"Tasks")
"* TODO %i%?")
("e" "Email task" entry
(file+headline org-default-notes-file
"Tasks")
"* TODO %:fromname: %a %?\nDEADLINE:
%(org-insert-time-stamp (org-read-date
nil t \"+2d\"))")
)
org-persist-after-read-hook
'(org-element--cache-persist-after-read)
org-export-before-parsing-hook '(org-attach-expand-links)
org-cycle-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-startup-with-latex-preview t
org-default-notes-file
"/home/peter/Documents/notes/20220718T190010--notes-inbox__gtd.org"
org-archive-hook '(org-attach-archive-delete-maybe)
org-cite-follow-processor 'citar
org-odt-format-inlinetask-function
'org-odt-format-inlinetask-default-function
org-ascii-format-drawer-function #[771 "\207" [] 4 "\n\n(fn NAME
CONTENTS WIDTH)"]
org-cycle-hook '(org-cycle-hide-archived-subtrees
org-cycle-show-empty-lines
org-cycle-optimize-window-after-visibility-change
org-cycle-display-inline-images)
org-export-with-broken-links t
org-persist-before-read-hook
'(org-element--cache-persist-before-read)
org-link-from-user-regexp "\\<peter@xps9315\\>\\|\\<Peter
Prevos\\>"
org-image-actual-width '(450)
org-mode-hook '(org-autolist-mode writegood-mode citar-capf-setup
#[0 "\301\211\207"
[imenu-create-index-function
org-imenu-get-tree]
2]
org-fragtog-mode global-org-modern-mode
org-appear-mode mixed-pitch-mode
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook
org-fold-show-all append local]
5]
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook
org-babel-show-result-all append local]
5]
org-babel-result-hide-spec
org-babel-hide-all-hashes)
org-babel-load-languages '((emacs-lisp . t) (R . t) (python . t)
(julia . t) (shell . t) (latex . t))
org-agenda-skip-deadline-if-done t
org-cite-csl-styles-dir "~/Documents/library/csl/"
org-modern-timestamp nil
org-modern-checkbox nil
org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _
CONTENTS)"]
org-ellipsis " ↲"
org-latex-format-headline-function
'org-latex-format-headline-default-function
org-confirm-shell-link-function 'yes-or-no-p
org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME
CONTENTS)"]
outline-isearch-open-invisible-function
'outline-isearch-open-invisible
org-use-sub-superscripts "{}"
org-export-with-todo-keywords nil
org-stuck-projects '("/PROJECT" ("NEXT" "WAITING") nil
"SCHEDULED\\|DEADLINE")
org-log-repeat nil
org-startup-indented t
org-fold-catch-invisible-edits 'error
org-latex-classes '(("apa6"
"\\documentclass[a4paper, jou,
11pt]{apa6}\n\\usepackage[nodoi]{apacite}\n\\usepackage[british]{babel}\n\\usepackage{inputenc}\n\\usepackage{amsmath}\n\\usepackage{graphicx}\n\\usepackage{csquotes}\n\\usepackage[hyphens]{url}\n\\usepackage[T1]{fontenc}\n\\usepackage{lmodern}\n\\usepackage{hyperref}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}"))
("trade"
"\\documentclass[11pt, twoside]{memoir}\n
\\setstocksize{9in}{6in}\n
\\settrimmedsize{\\stockheight}{\\stockwidth}{*}\n
\\setlrmarginsandblock{2cm}{2cm}{*} % Left
and right margin\n
\\setulmarginsandblock{2cm}{2cm}{*} % Upper
and lower margin\n
\\checkandfixthelayout\n
\\setcounter{tocdepth}{0}\n
\\OnehalfSpacing\n \\usepackage{times}\n
\\chapterstyle{bianchi}\n
\\setsecheadstyle{\\normalfont \\raggedright
\\textbf}\n
\\setsubsecheadstyle{\\normalfont
\\raggedright \\emph}\n
\\setsubsubsecheadstyle{\\normalfont\\centering}\n
\\usepackage[font={small, it}]{caption}\n
\\usepackage{subcaption}\n
\\captionsetup[subfigure]{justification=centering}\n
\\usepackage{pdfpages}\n
\\pagestyle{myheadings}\n
\\usepackage{ccicons}\n
\\usepackage{nicefrac}\n
\\usepackage[authoryear]{natbib}\n
\\bibliographystyle{apalike}\n
\\usepackage{nohyperref}\n
\\usepackage{tikz}\n
\\usetikzlibrary{shapes.geometric, calc,
knots}\n \\usepackage{svg}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}"
. "\\subparagraph*{%s}"))
("crc"
"\\documentclass[krantz2]{krantz}\n
\\usepackage{lmodern}\n
\\usepackage[authoryear]{natbib}\n
\\usepackage{nicefrac}\n
\\usepackage[bf,singlelinecheck=off]{caption}\n
\\captionsetup[table]{labelsep=space}\n
\\captionsetup[figure]{labelsep=space}\n
\\usepackage{Alegreya}\n
\\usepackage[scale=.8]{sourcecodepro}\n
\\usepackage[breaklines=true]{minted}\n
\\usepackage{rotating}\n
\\usepackage[notbib,
nottoc,notlot,notlof]{tocbibind}\n
\\usepackage{amsfonts, tikz, tikz-layers}\n
\\usetikzlibrary{fadings, quotes, shapes,
calc, decorations.markings}\n
\\usetikzlibrary{patterns, shadows.blur}\n
\\usetikzlibrary{shapes,shapes.geometric,positioning}\n
\\usetikzlibrary{arrows, arrows.meta,
backgrounds}\n \\usepackage{imakeidx}
\\makeindex[intoc]\n
\\renewcommand{\\textfraction}{0.05}\n
\\renewcommand{\\topfraction}{0.8}\n
\\renewcommand{\\bottomfraction}{0.8}\n
\\renewcommand{\\floatpagefraction}{0.75}\n
\\renewcommand{\\eqref}[1]{(Equation
\\ref{#1})}\n
\\renewcommand{\\LaTeX}{LaTeX}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}"
. "\\paragraph*{%s}"))
("magictrick"
"\\documentclass[11pt, a4paper, twocolumn,
twoside]{article}\n\\usepackage{ccicons}\n\\usepackage{pdfpages}\n\\usepackage{times}\n\\usepackage{helvet}\n\\usepackage{geometry}\n\\geometry{a4paper,
total={170mm,250mm}, left=20mm, top=30mm}\n%
header 2008 x 332
px\n\\usepackage{titlesec}\n\\titleformat{\\section}\n
{\\bfseries}{\\thesection}{1em}{}\n\\titleformat{\\subsection}\n
{\\itshape}{\\thesection}{1em}{}\n\\usepackage{fancyhdr}\n\\usepackage[font={small,
it},
labelformat=empty]{caption}\n\\usepackage[hidelinks]{hyperref}\n\\pagestyle{fancy}\n\\renewcommand{\\headrulewidth}{0pt}\n\\renewcommand{\\footrulewidth}{0pt}\n\\setlength{\\parskip}{1em}\n\\renewcommand{\\baselinestretch}{1.1}\n\\setlength\\headheight{100.0pt}\n\\addtolength{\\textheight}{-100.0pt}\n\\fancyhead[LO]{\\Large{\\textsf{Magic
Perspectives Presents}}
\\includegraphics[width=\\textwidth]{header}}\n\\fancyhead[LE]{\\includegraphics[width=0.5\\textwidth]{header}}\n\\lfoot{Peter
Prevos}\n\\rfoot{\\href{https://magicperspectives.net}{magicperspectives.net}}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}"))
("ebook"
"\\documentclass[11pt,
oneside]{memoir}\n\\setstocksize{9in}{6in}\n\\settrimmedsize{\\stockheight}{\\stockwidth}{*}\n\\setlrmarginsandblock{2cm}{2cm}{*}
% Left and right
margin\n\\setulmarginsandblock{2cm}{2cm}{*}
% Upper and lower
margin\n\\checkandfixthelayout\n\\usepackage{times}\n\\OnehalfSpacing\n\\usepackage[authoryear]{natbib}\n\\bibliographystyle{apalike}\n\\setlength{\\bibsep}{1pt}\n\\usepackage[raggedright]{sidecap}\n\\setsecheadstyle{\\normalfont
\\raggedright
\\textbf}\n\\setsubsecheadstyle{\\normalfont
\\raggedright
\\emph}\n\\usepackage{subcaption}
\n\\usepackage[font={small,
it}]{caption}\n\\captionsetup[subfigure]{justification=centering}\n\\usepackage{pdfpages}\n\\usepackage[unicode=true,\n
bookmarks=true,bookmarksnumbered=false,bookmarksopen=true,\n
bookmarksopenlevel=1,
breaklinks=true,pdfborder={0 0
0},backref=false,colorlinks=false,pdfborderstyle={/S/U/W
.5}, allbordercolors={.8 .8
.8}]{hyperref}\n\\pagestyle{myheadings}\n\\setcounter{tocdepth}{0}\n\\usepackage{ccicons}\n\\usepackage{nicefrac}\n"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
)
("article"
"\\documentclass[10pt]{article}\n
\\usepackage{tgpagella,eulervm}\n
\\usepackage{nicefrac}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}"
. "\\subparagraph*{%s}"))
("article" "\\documentclass[11pt]{article}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}"
. "\\subparagraph*{%s}"))
("report" "\\documentclass[11pt]{report}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
)
("book" "\\documentclass[11pt]{book}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
)
)
org-odt-format-headline-function
'org-odt-format-headline-default-function
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-cycle-hide-block-startup t
org-babel-tangle-lang-exts '(("latex" . "tex") ("julia" . "jl")
("python" . "py")
("emacs-lisp" . "el") ("elisp"
. "el"))
org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
org-confirm-elisp-link-function 'yes-or-no-p
org-agenda-window-setup 'current-window
org-latex-src-block-backend 'minted
org-cycle-separator-lines 0
org-cite-activate-processor 'citar
org-todo-keywords '((sequence "TODO(t)" "NEXT(n)" "WAITING(w@/!)"
"PROJECT(p)" "GOAL(g)" "|" "DONE(d/!)"
"CANCELLED(c@/!)")
)
org-latex-logfiles-extensions '("lof" "lot" "tex~" "aux" "idx"
"log" "out" "toc" "nav" "snm"
"vrb"
"dvi" "fdb_latexmk" "blg" "brf"
"fls" "entoc" "ps" "spl" "bbl"
"tex" "bcf")
org-structure-template-alist '(("ss" . "src shell\n")
("sr" . "src R\n")
("sp" . "src python\n")
("se" . "src elisp\n")
("a" . "export ascii")
("c" . "center") ("C" . "comment")
("e" . "example") ("E" . "export")
("h" . "export html")
("l" . "export latex")
("q" . "quote") ("s" . "src")
("v" . "verse"))
org-pretty-entities t
org-modern-block-name nil
org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
org-html-format-inlinetask-function
'org-html-format-inlinetask-default-function
org-ascii-format-inlinetask-function
'org-ascii-format-inlinetask-default
org-modern-mode-hook '(org-modern-mode-set-explicitly)
org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME
CONTENTS)"]
org-confirm-babel-evaluate nil
org-fold-core-isearch-open-function
'org-fold-core--isearch-reveal
org-export-with-smart-quotes t
org-modern-keyword nil
org-cite-export-processors '((latex natbib "apalike2"
"authoryear")
(t csl "apa6.csl"))
org-preview-latex-default-process 'dvisvgm
org-latex-format-inlinetask-function
'org-latex-format-inlinetask-default-function
org-persist-before-write-hook
'(org-element--cache-persist-before-write)
org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-export-with-toc nil
org-link-shell-confirm-function 'yes-or-no-p
org-agenda-finalize-hook '(org-modern-agenda)
org-babel-pre-tangle-hook '(save-buffer)
org-agenda-loop-over-headlines-in-active-region nil
org-cite-global-bibliography
'("/home/peter/Documents/library/horizon-of-reason.bib"
"/home/peter/Documents/library/lucidmanager.bib"
"/home/peter/Documents/library/magic-science.bib"
"/home/peter/Documents/library/magic-tricks.bib"
"/home/peter/Documents/library/third-hemisphere.bib"
"/home/peter/Documents/library/zotero.bib")
org-occur-hook '(org-first-headline-recenter)
org-capture-after-finalize-hook
'(denote-org-capture-delete-empty-file)
org-export-with-drawers nil
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-odt-preferred-output-format "doc"
org-link-parameters '(("attachment" :follow org-attach-follow
:complete org-attach-complete-link)
("mu4e" :follow mu4e-org-open :store
mu4e-org-store-link)
("helpful" :store helpful--org-link-store)
("eww" :follow org-eww-open :store
org-eww-store-link)
("rmail" :follow org-rmail-open :store
org-rmail-store-link)
("mhe" :follow org-mhe-open :store
org-mhe-store-link)
("irc" :follow org-irc-visit :store
org-irc-store-link :export org-irc-export)
("info" :follow org-info-open :export
org-info-export :store org-info-store-link
:insert-description
org-info-description-as-command)
("gnus" :follow org-gnus-open :store
org-gnus-store-link)
("docview" :follow org-docview-open :export
org-docview-export :store
org-docview-store-link)
("bbdb" :follow org-bbdb-open :export
org-bbdb-export :complete
org-bbdb-complete-link :store
org-bbdb-store-link)
("w3m" :store org-w3m-store-link)
("doi" :follow org-link-doi-open :export
org-link-doi-export)
("hugo" :complete
(lambda nil
(concat "{{% ref "
(file-name-nondirectory
(read-file-name "File: "))
" %}}")
)
:follow org-hugo-followlink)
("bibtex" :follow org-bibtex-open :store
org-bibtex-store-link)
("id" :follow org-id-open)
("nov" :follow nov-org-link-follow :store
nov-org-link-store)
("denote" :follow denote-link-ol-follow
:face
denote-faces-link :complete
denote-link-ol-complete :store
denote-link-ol-store :export
denote-link-ol-export)
("elfeed" :follow elfeed-link-open :store
elfeed-link-store-link)
("file+sys") ("file+emacs")
("shell" :follow org-link--open-shell)
("news" :follow
#[514 "\301\300\302Q\"\207"
["news" browse-url ":"] 6
"\n\n(fn URL ARG)"]
)
("mailto" :follow
#[514 "\301\300\302Q\"\207"
["mailto" browse-url ":"] 6
"\n\n(fn URL ARG)"]
)
("https" :follow
#[514 "\301\300\302Q\"\207"
["https" browse-url ":"] 6
"\n\n(fn URL ARG)"]
)
("http" :follow
#[514 "\301\300\302Q\"\207"
["http" browse-url ":"] 6
"\n\n(fn URL ARG)"]
)
("ftp" :follow
#[514 "\301\300\302Q\"\207"
["ftp" browse-url ":"] 6
"\n\n(fn URL ARG)"]
)
("help" :follow helpful--org-link-follow
:store org-link--store-help)
("file" :complete org-link-complete-file)
("elisp" :follow org-link--open-elisp))
org-html-format-headline-function
'org-html-format-headline-default-function
org-agenda-start-with-follow-mode t
org-metaup-hook '(org-babel-load-in-session-maybe)
org-modern-table nil
org-agenda-restore-windows-after-quit t
org-agenda-remove-tags t
org-num-format-function 'org-num-default-format
org-agenda-include-diary t
org-modern-table-horizontal nil
org-startup-with-inline-images t
org-latex-pdf-process '(“pdflatex -interaction nonstopmode
-output-directory %o %f” "bibtex %b"
“pdflatex -shell-escape -interaction
nonstopmode -output-directory %o %f”
“pdflatex -shell-escape -interaction
nonstopmode -output-directory %o %f”)
org-list-allow-alphabetical t
)
--
Dr Peter Prevos
---------------
peterprevos.com
^ permalink raw reply [relevance 3%]
* org table export to latex, longtable, code does not compile
@ 2024-01-02 17:20 10% Uwe Brauer
2024-01-02 17:58 8% ` [SOLVED] (was: org table export to latex, longtable, code does not compile) Uwe Brauer
0 siblings, 2 replies; 59+ results
From: Uwe Brauer @ 2024-01-02 17:20 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 2887 bytes --]
Hi
I am running emacs 29 and org mode 9.6.9
I have set (setq org-latex-line-break-safe "\\\\")
Nevertheless the following example
#+begin_src
#+ATTR_LATEX: :environment longtable
| / | <> | <> | <> | <> | <> | <> | <> |
|---+-----+-----------+--------------+--------------+--------------+--------------+--------------|
| | Num | Documento | <2024-04-26> | <2024-04-29> | <2024-05-06> | <2024-05-08> | <2024-05-10> |
|---+-----+-----------+--------------+--------------+--------------+--------------+--------------|
| | 1 | 12345678 | | | | | |
| | 2 | 12345678 | | | | | |
| | 3 | 12345678 | | | | | |
| | 4 | 12345678 | | | | | |
#+end_src
Will be translated to
#+begin_src
\begin{longtable}{|r|r|l|l|l|l|l|}
\hline
Num & Documento & \textit{26.04.2024} & \textit{29.04.2024} & \textit{06.05.2024} & \textit{08.05.2024} & \textit{10.05.2024}\\ \hline
\hline
\endfirsthead
\multicolumn{7}{l}{Continued from previous page} \\ \hline[0pt]
\hline
Num & Documento & \textit{26.04.2024} & \textit{29.04.2024} & \textit{06.05.2024} & \textit{08.05.2024} & \textit{10.05.2024} \\ \hline[0pt]
\hline
\endhead
\hline\multicolumn{7}{r}{Continued on next page} \\ \hline
\endfoot
\endlastfoot
\hline
1 & 12345678 & & & & & \\ \hline
2 & 12345678 & & & & & \\ \hline
3 & 12345678 & & & & & \\ \hline
4 & 12345678 & & & & & \\ \hline
\end{longtable}
#+end_src
#+begin_src
And this does not compile for TL2023, it gives the following error:
Overfull \hbox (64.42285pt too wide) in alignment at lines 28--32
[] [] [] [] [] [] []
./problem.tex:34: Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \penalty \@M \futurelet \@let@token \LT@@h...l.34 \hline
./problem.tex:35: Misplaced \omit.
\multispan ->\omit
\@multispan
l.35
./problem.tex:38: Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \penalty \@M \futurelet \@let@token \LT@@h...l.38 \hline
./problem.tex:39: Misplaced \omit.
\multispan ->\omit
\@multispan
l.39 \endhead
#+end_src
The problem are the lines \hline[0pt]
I can query replace them, but is there any other solution.
Regards
Uwe Brauer
--
I strongly condemn Hamas heinous despicable pogroms/atrocities on Israel
I strongly condemn Putin's war of aggression against Ukraine.
I support to deliver weapons to Ukraine's military.
I support the EU and NATO membership of Ukraine.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]
^ permalink raw reply [relevance 10%]
* [SOLVED] (was: org table export to latex, longtable, code does not compile)
2024-01-02 17:20 10% org table export to latex, longtable, code does not compile Uwe Brauer
@ 2024-01-02 17:58 8% ` Uwe Brauer
1 sibling, 0 replies; 59+ results
From: Uwe Brauer @ 2024-01-02 17:58 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 562 bytes --]
>>> "UB" == Uwe Brauer <oub@mat.ucm.es> writes:
> Hi
> I am running emacs 29 and org mode 9.6.9
> I have set (setq org-latex-line-break-safe "\\\\")
> Nevertheless the following example
This helped
(defun my-latex-insert-hline-always (row backend info)
"Add a hline to every row when exporting to LaTeX."
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "\\\\\\\\\\[0pt\\]\\|\\\\\\\\" "\\\\\\\\ \\\\hline" row)))
(add-to-list 'org-export-filter-table-row-functions 'my-latex-insert-hline-always)
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]
^ permalink raw reply [relevance 8%]
* [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
@ 2024-01-02 23:46 20% Juan Manuel Macías
2024-01-13 15:08 10% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-02 23:46 UTC (permalink / raw)
To: orgmode
Hi,
I recently discovered that if the last line of a LaTeX 'verse'
environment ends in '\\[0pt]', the space after the environment is
drastically altered. The space after a 'verse' environment (which is a
modified list environment) must be equivalent to
\partopsep+\topsep+\baselineskip. I have done the test with a document,
defining a rectangle of that height with tikz, where you can see the
difference in vertical space with and without '\\[0pt]':
https://i.imgur.com/khbboDZ.png
Naturally, this implies an issue when exporting the verse block to
LaTeX, since the presence of the '\\[0pt]' string alters the expected
result in the compiled PDF. My suggestion is that the last line of the
verse block is not exported with either the string '[0pt]' or the line
break mark '\\', since it makes no sense for that mark to be there: it
is the end of a paragraph and the very end of the environment.
Can anyone think of a possible scenario where removing the '\\[0pt]' in
the last line would cause a problem? If not, I might send a patch in the
next few days. (I'm afraid that going back to abusing
replace-regexp-in-string. I can't think of any other more elegant
solution...).
Best regards,
Juan Manuel
--
Juan Manuel Macías -- Composición tipográfica, tratamiento de datos, diseño editorial y ortotipografía
^ permalink raw reply [relevance 20%]
* Re: org table export to latex, longtable, code does not compile
@ 2024-01-03 15:56 11% ` Uwe Brauer
0 siblings, 0 replies; 59+ results
From: Uwe Brauer @ 2024-01-03 15:56 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: Uwe Brauer, emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 2066 bytes --]
>>> "IR" == Ihor Radchenko <yantar92@posteo.net> writes:
> Uwe Brauer <oub@mat.ucm.es> writes:
>> I am running emacs 29 and org mode 9.6.9
>>
>> I have set (setq org-latex-line-break-safe "\\\\")
>> ...
>> Will be translated to
>>
>> #+begin_src
>>
>> \begin{longtable}{|r|r|l|l|l|l|l|}
>> \hline
>> Num & Documento & \textit{26.04.2024} & \textit{29.04.2024} & \textit{06.05.2024} & \textit{08.05.2024} & \textit{10.05.2024}\\ \hline
> This is not what I am seeing with Emacs 29.
Very strange I have not set
org-export-filter-table-row-functions to nil
But still the above example gets exported as
\begin{longtable}{|r|r|l|l|l|l|l|}
\hline
Num & Documento & \textit{26.04.2024} & \textit{29.04.2024} & \textit{06.05.2024} & \textit{08.05.2024} & \textit{10.05.2024}\\
\hline
\endfirsthead
\multicolumn{7}{l}{Continued from previous page} \\[0pt]
\hline
Num & Documento & \textit{26.04.2024} & \textit{29.04.2024} & \textit{06.05.2024} & \textit{08.05.2024} & \textit{10.05.2024} \\[0pt]
\hline
\endhead
\hline\multicolumn{7}{r}{Continued on next page} \\
\endfoot
\endlastfoot
\hline
1 & 12345678 & & & & & \\
2 & 12345678 & & & & & \\
3 & 12345678 & & & & & \\
4 & 12345678 & & & & & \\
\end{longtable}
That compiles with TL2023.
Is this the same result as yours.
In my particular use case (I want \hline always) the solution is
--8<---------------cut here---------------start------------->8---
(defun my-latex-insert-hline-always (row backend info)
"Add a hline to every row when exporting to LaTeX."
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "\\\\\\\\\\[0pt\\]\\|\\\\\\\\" "\\\\\\\\ \\\\hline" row)))
--8<---------------cut here---------------end--------------->8---
--
I strongly condemn Hamas heinous despicable pogroms/atrocities on Israel
I strongly condemn Putin's war of aggression against Ukraine.
I support to deliver weapons to Ukraine's military.
I support the EU and NATO membership of Ukraine.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]
^ permalink raw reply [relevance 11%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-02 23:46 20% [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export Juan Manuel Macías
@ 2024-01-13 15:08 10% ` Ihor Radchenko
2024-01-13 16:05 18% ` Juan Manuel Macías
2024-01-20 10:27 10% ` Max Nikulin
0 siblings, 2 replies; 59+ results
From: Ihor Radchenko @ 2024-01-13 15:08 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
Juan Manuel Macías <maciaschain@posteo.net> writes:
> Can anyone think of a possible scenario where removing the '\\[0pt]' in
> the last line would cause a problem? If not, I might send a patch in the
> next few days. (I'm afraid that going back to abusing
> replace-regexp-in-string. I can't think of any other more elegant
> solution...).
In such scenario, we may technically violate what users ask us to do:
#+begin_verse
I really want newline here\\
#+end_verse
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-13 15:08 10% ` Ihor Radchenko
@ 2024-01-13 16:05 18% ` Juan Manuel Macías
2024-01-13 18:28 20% ` Ihor Radchenko
2024-01-20 10:27 10% ` Max Nikulin
1 sibling, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-13 16:05 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode
Ihor Radchenko writes:
>> Can anyone think of a possible scenario where removing the '\\[0pt]' in
>> the last line would cause a problem? If not, I might send a patch in the
>> next few days. (I'm afraid that going back to abusing
>> replace-regexp-in-string. I can't think of any other more elegant
>> solution...).
>
> In such scenario, we may technically violate what users ask us to do:
>
> #+begin_verse
> I really want newline here\\
> #+end_verse
I'm not sure if users asked for that specifically.
You want a new line when there is a new line.
This makes sense:
#+begin_verse
I really want newline here\\
blah...
#+end_verse
This does not:
#+begin_verse
I really want newline here\\
#+end_verse
For LaTeX it is the same as this:
#+begin_verse
I really want newline here
#+end_verse
But this specifically alters the expected result in LaTeX, modifying the
space after the environment:
#+begin_verse
I really want newline here\\[0pt]
#+end_verse
What is the cause? I don't know. But it happens.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-13 16:05 18% ` Juan Manuel Macías
@ 2024-01-13 18:28 20% ` Ihor Radchenko
2024-01-13 20:22 18% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-13 18:28 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
Juan Manuel Macías <maciaschain@posteo.net> writes:
>> In such scenario, we may technically violate what users ask us to do:
>>
>> #+begin_verse
>> I really want newline here\\
>> #+end_verse
>
> I'm not sure if users asked for that specifically.
> ...
> This does not:
>
> #+begin_verse
> I really want newline here\\
> #+end_verse
I am not sure.
What about
#+begin_verse
I really want newline here\\
#+end_verse
This must not be indented.
(Just trying to come up with valid uses of newline at the end of
LaTeX environment)
Although, the above causes Org export to fail...
\begin{verse}
This is test\\[0pt]\\[0pt]
\end{verse}
Paragraph.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 20%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-13 18:28 20% ` Ihor Radchenko
@ 2024-01-13 20:22 18% ` Juan Manuel Macías
2024-01-14 12:33 10% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-13 20:22 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode
Ihor Radchenko writes:
> Juan Manuel Macías <maciaschain@posteo.net> writes:
>
>>> In such scenario, we may technically violate what users ask us to do:
>>>
>>> #+begin_verse
>>> I really want newline here\\
>>> #+end_verse
>>
>> I'm not sure if users asked for that specifically.
>> ...
>> This does not:
>>
>> #+begin_verse
>> I really want newline here\\
>> #+end_verse
>
> I am not sure.
> What about
>
> #+begin_verse
> I really want newline here\\
> #+end_verse
>
> This must not be indented.
If I'm not mistaken, in TeX '\\' can only be used in horizontal mode:
that is, within a paragraph. At the end of an environment like verse
(\end{verse}) you are forced to enter vertical mode, and a new paragraph
starts. Doing something like this, for example, adds a new paragraph
after the environment:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\begin{verse}
Lorem ipsum dolor\\
\end{verse}
\lipsum[1]
\end{document}
Even this one produces the same result:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\begin{verse}
Lorem ipsum dolor\\
\end{verse}\lipsum[1]
\end{document}
If one wants, for example, that after a verse environment there is no
vertical space or indentation, the only way to do it is by modifying, globally or
locally (with another environment) the space after the environment and
adding a \noindent to the following paragraph:
\documentclass{article}
\usepackage{lipsum}
\setlength\partopsep{-\topsep}\addtolength\partopsep{0pt}
\begin{document}
\begin{verse}
Lorem ipsum dolor\\
\end{verse}
\noindent\lipsum[1]
\end{document}
(taking into account that within the verse environment there is also a
left indentation that would also have to be modified).
Therefore, I think that whether or not a verse environment ends with \\ is
irrelevant to LaTeX. The problem is that when it ends with \\[0pt], for
some reason that escapes me, the space after the environment is altered.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-13 20:22 18% ` Juan Manuel Macías
@ 2024-01-14 12:33 10% ` Ihor Radchenko
2024-01-14 21:58 18% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-14 12:33 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
Juan Manuel Macías <maciaschain@posteo.net> writes:
> If I'm not mistaken, in TeX '\\' can only be used in horizontal mode:
> that is, within a paragraph. At the end of an environment like verse
> (\end{verse}) you are forced to enter vertical mode, and a new paragraph
> starts.
Is it true for any environment? Or just some?
> Therefore, I think that whether or not a verse environment ends with \\ is
> irrelevant to LaTeX. The problem is that when it ends with \\[0pt], for
> some reason that escapes me, the space after the environment is altered.
I see. Although, I am not 100% if it is something we have to deal with
in Org mode. May it be better to report this as a bug to LaTeX devs?
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-14 12:33 10% ` Ihor Radchenko
@ 2024-01-14 21:58 18% ` Juan Manuel Macías
2024-01-16 14:09 18% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-14 21:58 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode
Ihor Radchenko writes:
> Juan Manuel Macías <maciaschain@posteo.net> writes:
>
>> If I'm not mistaken, in TeX '\\' can only be used in horizontal mode:
>> that is, within a paragraph. At the end of an environment like verse
>> (\end{verse}) you are forced to enter vertical mode, and a new paragraph
>> starts.
>
> Is it true for any environment? Or just some?
In principle, nothing prevents one from defining an environment for use
in horizontal mode (within the paragraph). E.g.:
\newenvironment{foo}{\itshape}{}
Lorem \begin{foo}ipsum\end{foo} dolor.
But the usual thing is that the beginning/end of an environment changes to
vertical mode, with \par or something more elaborate.
>> Therefore, I think that whether or not a verse environment ends with \\ is
>> irrelevant to LaTeX. The problem is that when it ends with \\[0pt], for
>> some reason that escapes me, the space after the environment is altered.
>
> I see. Although, I am not 100% if it is something we have to deal with
> in Org mode. May it be better to report this as a bug to LaTeX devs?
hmm... I don't know if this should be considered a bug. We may think
that \\[0pt] should never do anything, but we must keep in mind that the
end of the verse environment is the end of a paragraph, and it changes
to vertical mode. And the end of a paragraph is an illogical place to
put that command. But it seems that it also alters things when it is at
that point. Check out this reply from David Carlisle
(https://tex.stackexchange.com/a/82666):
#+begin_quote
\\ at the end of a paragraph causes bad output with an empty, maximally under-full, box,
and so you get a warning about badness 10000, the visual effect looks a bit like extra
vertical space but it is not: it is an extra spurious line at the end of the paragraph,
and for example it is not dropped at a page break and will break widow/club line
calculations.
#+end_quote
If there are environments that redefine \\, such as verse or tabular,
probably putting the optional argument of \\ with a value of 0pt at the
end of verse alters the calculation of the normal space after the
environment, making it shorter. I think that here we would not have a
LaTeX bug, because the syntax of the verse environment itself says that
the last line should not carry any \\ mark.
At the end of the tables I have not noticed any side effects. But in the
export of the verse block, I would be in favor of somehow eliminating
that last \\[0pt].
Best regards,
Juan Manuel
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-14 21:58 18% ` Juan Manuel Macías
@ 2024-01-16 14:09 18% ` Ihor Radchenko
2024-01-16 19:33 18% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-16 14:09 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
Juan Manuel Macías <maciaschain@posteo.net> writes:
>>> If I'm not mistaken, in TeX '\\' can only be used in horizontal mode:
>>> that is, within a paragraph. At the end of an environment like verse
>>> (\end{verse}) you are forced to enter vertical mode, and a new paragraph
>>> starts.
>>
>> Is it true for any environment? Or just some?
>
> In principle, nothing prevents one from defining an environment for use
> in horizontal mode (within the paragraph). E.g.:
> ...
> But the usual thing is that the beginning/end of an environment changes to
> vertical mode, with \par or something more elaborate.
This is annoying.
ox-latex has some transcoders that unconditionally add \\ at the
end: clocks and planning lines. If they happen to be at the end of an
environment, it can be problematic.
> hmm... I don't know if this should be considered a bug. We may think
> that \\[0pt] should never do anything, but we must keep in mind that the
> end of the verse environment is the end of a paragraph, and it changes
> to vertical mode. And the end of a paragraph is an illogical place to
> put that command. But it seems that it also alters things when it is at
> that point. Check out this reply from David Carlisle
> (https://tex.stackexchange.com/a/82666):
The very reason we use \\[0pt] is because it supposed to prevent
interpreting [...] at the new line/transcoded element as argument.
You demonstrated that it is yet not always safe enough.
May it be better to use something like
\newcommand\nothing{}
\newcommand{\safenewline}{\\\nothing}
And then use \safenewline instead of \\[0pt]
In my tests,
\begin{center}
\begin{tabular}{ll}
[t] & s\safenewline
[I] & A\safenewline
[m] & kg\safenewline
\end{tabular}
\end{center}
Does not suffer from misinterpreting new line as argument.
> If there are environments that redefine \\, such as verse or tabular,
> probably putting the optional argument of \\ with a value of 0pt at the
> end of verse alters the calculation of the normal space after the
> environment, making it shorter. I think that here we would not have a
> LaTeX bug, because the syntax of the verse environment itself says that
> the last line should not carry any \\ mark.
AFAIU, \safenewline should still use re-defined version of \\ according
to the context.
> At the end of the tables I have not noticed any side effects. But in the
> export of the verse block, I would be in favor of somehow eliminating
> that last \\[0pt].
`org-latex-verse-block' already has a giant regexp replacement:
;; In a verse environment, add a line break to each newline
;; character and change each white space at beginning of a line
;; into a normal space, calculated with `\fontdimen2\font'. One
;; or more blank lines between lines are exported as a single
;; blank line. If the `:lines' attribute is used, the last
;; verse of each stanza ends with the string `\\!', according to
;; the syntax of the `verse' package. The separation between
;; stanzas can be controlled with the length `\stanzaskip', of
;; the aforementioned package. If the `:literal' attribute is
;; used, all blank lines are preserved and exported as
;; `\vspace*{\baselineskip}', including the blank lines before
;; or after CONTENTS.
We may as well strip the trailing \\[0pt] there.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-16 14:09 18% ` Ihor Radchenko
@ 2024-01-16 19:33 18% ` Juan Manuel Macías
2024-01-17 13:00 17% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-16 19:33 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode
Ihor Radchenko writes:
> The very reason we use \\[0pt] is because it supposed to prevent
> interpreting [...] at the new line/transcoded element as argument.
>
> You demonstrated that it is yet not always safe enough.
>
> May it be better to use something like
>
> \newcommand\nothing{}
> \newcommand{\safenewline}{\\\nothing}
>
> And then use \safenewline instead of \\[0pt]
>
> In my tests,
>
> \begin{center}
> \begin{tabular}{ll}
> [t] & s\safenewline
> [I] & A\safenewline
> [m] & kg\safenewline
> \end{tabular}
> \end{center}
>
> Does not suffer from misinterpreting new line as argument.
I remember the thread where these issues were discussed and the long
discussion where many alternatives were proposed. After all, the \\[0pt]
solution still seems the safest to me. It seems that the problem is
located only in the verse environment, probably due to some particular
redefinition of the \\ macro that makes that environment.
In any case, square brackets are a problematic character in LaTeX
(think, e.g., of some environment that takes an optional argument). I
think pandoc chooses to always export them as {[}{]}:
#+begin_src sh :results latex
str="[hello world] [foo] [bar]"
pandoc -f org -t latex <<< $str
#+end_src
#+RESULTS:
#+begin_export latex
{[}hello world{]} {[}foo{]} {[}bar{]}
#+end_export
We could do the same, but I'm afraid it's too late if
org-latex-line-break-safe already exists... I don't remember if
something similar was proposed in that discussion, and it was rejected
for some reason.
> `org-latex-verse-block' already has a giant regexp replacement:
>
> ;; In a verse environment, add a line break to each newline
> ;; character and change each white space at beginning of a line
> ;; into a normal space, calculated with `\fontdimen2\font'. One
> ;; or more blank lines between lines are exported as a single
> ;; blank line. If the `:lines' attribute is used, the last
> ;; verse of each stanza ends with the string `\\!', according to
> ;; the syntax of the `verse' package. The separation between
> ;; stanzas can be controlled with the length `\stanzaskip', of
> ;; the aforementioned package. If the `:literal' attribute is
> ;; used, all blank lines are preserved and exported as
> ;; `\vspace*{\baselineskip}', including the blank lines before
> ;; or after CONTENTS.
>
> We may as well strip the trailing \\[0pt] there.
I think it would be best to remove the last \\[0pt] in the verse block.
I can prepare a patch, but I'm afraid that org-latex-verse-block is
becoming an homage to replace-regexp-in-string...
Best regards,
Juan Manuel
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-16 19:33 18% ` Juan Manuel Macías
@ 2024-01-17 13:00 17% ` Ihor Radchenko
2024-01-17 15:58 9% ` Max Nikulin
2024-01-17 17:50 13% ` Juan Manuel Macías
0 siblings, 2 replies; 59+ results
From: Ihor Radchenko @ 2024-01-17 13:00 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
Juan Manuel Macías <maciaschain@posteo.net> writes:
>> May it be better to use something like
>>
>> \newcommand\nothing{}
>> \newcommand{\safenewline}{\\\nothing}
>>
>> And then use \safenewline instead of \\[0pt]
>>
>> In my tests,
>>
>> \begin{center}
>> \begin{tabular}{ll}
>> [t] & s\safenewline
>> [I] & A\safenewline
>> [m] & kg\safenewline
>> \end{tabular}
>> \end{center}
>>
>> Does not suffer from misinterpreting new line as argument.
>
> I remember the thread where these issues were discussed and the long
> discussion where many alternatives were proposed. After all, the \\[0pt]
> solution still seems the safest to me. It seems that the problem is
> located only in the verse environment, probably due to some particular
> redefinition of the \\ macro that makes that environment.
We chose \\[0pt] simply because we did not find anything better.
In fact, Max expressed some concerns about \\[0pt] - in
https://list.orgmode.org/orgmode/tik0uf$td1$1@ciao.gmane.io/ and
https://list.orgmode.org/orgmode/tio0th$vn8$1@ciao.gmane.io/
If the idea with custom command does not have obvious downsides, it
might be a better option. In the previous thread, we only considered
redefining \\ itself - obviously a non-starter for environments that
re-define \\ by their own, like here.
> In any case, square brackets are a problematic character in LaTeX
> (think, e.g., of some environment that takes an optional argument). I
> think pandoc chooses to always export them as {[}{]}:
>
> #+begin_src sh :results latex
> str="[hello world] [foo] [bar]"
> pandoc -f org -t latex <<< $str
> #+end_src
>
> #+RESULTS:
> #+begin_export latex
> {[}hello world{]} {[}foo{]} {[}bar{]}
> #+end_export
>
> We could do the same, but I'm afraid it's too late if
> org-latex-line-break-safe already exists... I don't remember if
> something similar was proposed in that discussion, and it was rejected
> for some reason.
It is not too late.
AFAIR, we just decided not to dig deeper about pandoc's approach.
As for {[}{]}, it is a bit difficult to implement. Especially when we
also consider user filters and derived backends. If we have several
transcoders of consequent elements, there is always a risk that even
when a given filter/transcoder is generating a valid LaTeX code,
concatenating them may still cause issues like we have with \\.
I am wondering if there are other examples of commands with optional
arguments that may cause a similar problem with
\command
[unrelated text]
If there are, we may actually want to consider pandoc's approach
seriously.
>> We may as well strip the trailing \\[0pt] there.
>
> I think it would be best to remove the last \\[0pt] in the verse block.
> I can prepare a patch, but I'm afraid that org-latex-verse-block is
> becoming an homage to replace-regexp-in-string...
Not a big deal. Or, if you want, you can make changes via temporary
buffer; if that is cleaner.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 17%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-17 13:00 17% ` Ihor Radchenko
@ 2024-01-17 15:58 9% ` Max Nikulin
2024-01-17 17:50 13% ` Juan Manuel Macías
1 sibling, 0 replies; 59+ results
From: Max Nikulin @ 2024-01-17 15:58 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
On 17/01/2024 20:00, Ihor Radchenko wrote:
>>> \newcommand\nothing{}
>>> \newcommand{\safenewline}{\\\nothing}
[...]
>>> \begin{center}
>>> \begin{tabular}{ll}
>>> [t] & s\safenewline
[...]
> If the idea with custom command does not have obvious downsides
It does for tabularray https://github.com/lvjr/tabularray/issues/328
due to a custom parser, but probably it is safe for verse.
I think, it is necessary to wait a couple of years till the fix will
propagate to all stable Linux distributions.
Notice that an arbitrary custom command is not the same as \empty.
\safenewline would require more tricks, even \nothing would need
\NewTableCommand\nothing{}
Max Nikulin. Re: Line breaks and brackets in LaTeX export.
Fri, 21 Oct 2022 23:38:29 +0700.
https://list.orgmode.org/tiuhu5$nlp$2@ciao.gmane.io
or
\begin{tblr}[expand=\nothing]{rl}
Max Nikulin. Re: Line breaks and brackets in LaTeX export.
Thu, 20 Oct 2022 00:07:54 +0700.
https://list.orgmode.org/65a1c205-cd18-4abe-b36d-a93763d7f5e8@gmail.com
As to verse, I believe, \\... should be added at the end, but if a user
added it explicitly then it should not be stripped.
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-17 13:00 17% ` Ihor Radchenko
2024-01-17 15:58 9% ` Max Nikulin
@ 2024-01-17 17:50 13% ` Juan Manuel Macías
2024-01-18 13:05 15% ` Ihor Radchenko
1 sibling, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-17 17:50 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode, Max Nikulin
Ihor Radchenko writes:
> If the idea with custom command does not have obvious downsides, it
> might be a better option. In the previous thread, we only considered
> redefining \\ itself - obviously a non-starter for environments that
> re-define \\ by their own, like here.
I find several drawbacks to adding a new latex command like \nothing.
First, the standardization of the exported LaTeX code is lost. \\[0pt],
at least, always compiles. A new command obviously needs to be defined
first. Let's imagine that someone wants to simply share the LaTeX code
of a table... Then there is the problem of how to name the new command
so that it doesn't 'clash' with some user-defined command. In LaTeX it
is usually good practice to use the at sign character (@) in the name of
a command or macro that is not in user space, since this character can
only be used in a *.sty file. In a *.tex file, if you want to use the at
sign to define or redefine something, you have to enclose the code
between \makeatletter...\makeatother. And, in any case, I think that the
LaTeX code produced by org should be as 'universal' as possible (standard
LaTeX code + packages included in TeX live), and leave the definition of
new commands or environments to the user's discretion.
On the other hand, we are not sure that a command like \nothing does not
have some undesirable effect. I seem to remember that in the
aforementioned thread, adding \relax (the typical command that is used
to tell LaTeX do nothing) was also proposed as a solution, and it was
discarded for some reason.
>> In any case, square brackets are a problematic character in LaTeX
>> (think, e.g., of some environment that takes an optional argument). I
>> think pandoc chooses to always export them as {[}{]}:
>>
>> #+begin_src sh :results latex
>> str="[hello world] [foo] [bar]"
>> pandoc -f org -t latex <<< $str
>> #+end_src
>>
>> #+RESULTS:
>> #+begin_export latex
>> {[}hello world{]} {[}foo{]} {[}bar{]}
>> #+end_export
>>
>> We could do the same, but I'm afraid it's too late if
>> org-latex-line-break-safe already exists... I don't remember if
>> something similar was proposed in that discussion, and it was rejected
>> for some reason.
>
> It is not too late.
>
> AFAIR, we just decided not to dig deeper about pandoc's approach.
>
> As for {[}{]}, it is a bit difficult to implement. Especially when we
> also consider user filters and derived backends. If we have several
> transcoders of consequent elements, there is always a risk that even
> when a given filter/transcoder is generating a valid LaTeX code,
> concatenating them may still cause issues like we have with \\.
I see. I think pandoc's solution is what Leslie Lamport recommends
(naturally, Lamport doesn't say to enclose /all/ brackets in curly
braces).
> I am wondering if there are other examples of commands with optional
> arguments that may cause a similar problem with
>
> \command
> [unrelated text]
>
> If there are, we may actually want to consider pandoc's approach
> seriously.
In principle, any environment that takes an optional argument in a
"dangerous" position. Just do a simple test. Something like this:
#+begin_figure
[lorem] ipsum
#+end_figure
will throw an error like ''LaTeX Error: Unknown float option...''
Of course, putting an empty line after #+begin... usually solves it. But
the user may not know it.
There are also a number of commands with an optional argument. For
example \pagebreak. Something like this will give an error:
lorem @@latex:\pagebreak@@ [ipsum]
\item is another typical example, but in this case org adds \relax.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 13%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-17 17:50 13% ` Juan Manuel Macías
@ 2024-01-18 13:05 15% ` Ihor Radchenko
2024-01-19 17:28 10% ` Juan Manuel Macías
2024-01-20 10:09 18% ` Max Nikulin
0 siblings, 2 replies; 59+ results
From: Ihor Radchenko @ 2024-01-18 13:05 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
[-- Attachment #1: Type: text/plain, Size: 1866 bytes --]
Juan Manuel Macías <maciaschain@posteo.net> writes:
>> As for {[}{]}, it is a bit difficult to implement. Especially when we
>> also consider user filters and derived backends. If we have several
>> transcoders of consequent elements, there is always a risk that even
>> when a given filter/transcoder is generating a valid LaTeX code,
>> concatenating them may still cause issues like we have with \\.
>
> I see. I think pandoc's solution is what Leslie Lamport recommends
> (naturally, Lamport doesn't say to enclose /all/ brackets in curly
> braces).
This turned out to be a lot easier than I thought.
See the attached patch.
>> \command
>> [unrelated text]
>>
>> If there are, we may actually want to consider pandoc's approach
>> seriously.
>
> In principle, any environment that takes an optional argument in a
> "dangerous" position. Just do a simple test. Something like this:
>
> #+begin_figure
> [lorem] ipsum
> #+end_figure
>
> will throw an error like ''LaTeX Error: Unknown float option...''
>
> Of course, putting an empty line after #+begin... usually solves it. But
> the user may not know it.
>
> There are also a number of commands with an optional argument. For
> example \pagebreak. Something like this will give an error:
>
> lorem @@latex:\pagebreak@@ [ipsum]
>
> \item is another typical example, but in this case org adds \relax.
With the patch, I am getting the following:
* This is test
lorem @@latex:\pagebreak@@ [ipsum]
#+begin_figure
[lorem] figure
#+end_figure
| [foo] | 2 |
| [bar] | 3 |
- [bax]
- [aur]
exports to
lorem \pagebreak {[}ipsum]
\begin{figure}
{[}lorem] figure
\end{figure}
\begin{center}
\begin{tabular}{lr}
{[}foo] & 2\\[0pt]
{[}bar] & 3\\[0pt]
\end{tabular}
\end{center}
\begin{itemize}
\item {[}bax]
\item {[}aur]
\end{itemize}
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-ox-latex-Make-sure-that-text-is-not-misinterpreted-a.patch --]
[-- Type: text/x-patch, Size: 2511 bytes --]
From db3fa01d6f15b3d3f499f77e342a608a822029c8 Mon Sep 17 00:00:00 2001
Message-ID: <db3fa01d6f15b3d3f499f77e342a608a822029c8.1705583005.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Thu, 18 Jan 2024 14:01:32 +0100
Subject: [PATCH] ox-latex: Make sure that [text] is not misinterpreted as
LaTeX argument
* lisp/ox-latex.el (org-latex-plain-text): Protect plain text starting
from [. It might be misinterpreted as optional command argument if
previous exported fragment ends with a command accepting such.
*
testing/lisp/test-ox-latex.el (text-ox-latex/protect-square-brackets):
Add new test.
Link: https://orgmode.org/list/87o7dju9vn.fsf@posteo.net
---
lisp/ox-latex.el | 9 +++++++++
testing/lisp/test-ox-latex.el | 23 +++++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 432f09f4e..a3505c25f 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -3094,6 +3094,15 @@ (defun org-latex-plain-text (text info)
"\\(?:[ \t]*\\\\\\\\\\)?[ \t]*\n"
(concat org-latex-line-break-safe "\n")
output nil t)))
+ ;; Protect [foo] at the beginning of lines / beginning of the
+ ;; plain-text object. This prevents LaTeX from unexpectedly
+ ;; interpreting @@latex:\pagebreak@@ [foo] as a command with
+ ;; optional argument.
+ (setq output (replace-regexp-in-string
+ (rx bol (0+ space) (group "["))
+ "{[}"
+ output
+ nil nil 1))
;; Return value.
output))
diff --git a/testing/lisp/test-ox-latex.el b/testing/lisp/test-ox-latex.el
index 41df1b823..237ad97ec 100644
--- a/testing/lisp/test-ox-latex.el
+++ b/testing/lisp/test-ox-latex.el
@@ -29,6 +29,29 @@ (unless (featurep 'ox-latex)
\f
+(ert-deftest text-ox-latex/protect-square-brackets ()
+ "Test [foo] being interpreted as plain text even after LaTeX commands."
+ (org-test-with-exported-text
+ 'latex
+ "* This is test
+lorem @@latex:\\pagebreak@@ [ipsum]
+
+#+begin_figure
+[lorem] figure
+#+end_figure
+
+| [foo] | 2 |
+| [bar] | 3 |
+
+- [bax]
+- [aur]
+"
+ (goto-char (point-min))
+ (should (search-forward "lorem \\pagebreak {[}ipsum]"))
+ (should (search-forward "{[}lorem] figure"))
+ (should (search-forward "{[}foo]"))
+ (should (search-forward "\\item {[}bax]"))))
+
(ert-deftest test-ox-latex/verse ()
"Test verse blocks."
(org-test-with-exported-text
--
2.43.0
[-- Attachment #3: Type: text/plain, Size: 224 bytes --]
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply related [relevance 15%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-18 13:05 15% ` Ihor Radchenko
@ 2024-01-19 17:28 10% ` Juan Manuel Macías
2024-01-20 12:34 10% ` Ihor Radchenko
2024-01-20 10:09 18% ` Max Nikulin
1 sibling, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-19 17:28 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode, Max Nikulin
Ihor Radchenko writes:
> This turned out to be a lot easier than I thought.
> See the attached patch.
>
>>> \command
>>> [unrelated text]
>>>
>>> If there are, we may actually want to consider pandoc's approach
>>> seriously.
>>
>> In principle, any environment that takes an optional argument in a
>> "dangerous" position. Just do a simple test. Something like this:
>>
>> #+begin_figure
>> [lorem] ipsum
>> #+end_figure
>>
>> will throw an error like ''LaTeX Error: Unknown float option...''
>>
>> Of course, putting an empty line after #+begin... usually solves it. But
>> the user may not know it.
>>
>> There are also a number of commands with an optional argument. For
>> example \pagebreak. Something like this will give an error:
>>
>> lorem @@latex:\pagebreak@@ [ipsum]
>>
>> \item is another typical example, but in this case org adds \relax.
>
> With the patch, I am getting the following:
>
> * This is test
> lorem @@latex:\pagebreak@@ [ipsum]
>
> #+begin_figure
> [lorem] figure
> #+end_figure
>
> | [foo] | 2 |
> | [bar] | 3 |
>
> - [bax]
> - [aur]
>
> exports to
>
> lorem \pagebreak {[}ipsum]
>
> \begin{figure}
> {[}lorem] figure
> \end{figure}
>
> \begin{center}
> \begin{tabular}{lr}
> {[}foo] & 2\\[0pt]
> {[}bar] & 3\\[0pt]
> \end{tabular}
> \end{center}
>
> \begin{itemize}
> \item {[}bax]
> \item {[}aur]
> \end{itemize}
Great! Simple and effective. And more surgical than pandoc's global
solution. But now a question arises... Your code clearly solves the
problem that led to the declaration of org-latex-line-break-safe,
without foreseeing any unwanted effects, since it is the solution that
is usually recommended from LaTeX. So, if this code is included in Org,
what is the future of org-latex-line-break-safe?
Best regards,
Juan Manuel
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-18 13:05 15% ` Ihor Radchenko
2024-01-19 17:28 10% ` Juan Manuel Macías
@ 2024-01-20 10:09 18% ` Max Nikulin
2024-01-20 10:57 10% ` Juan Manuel Macías
2024-01-20 12:41 9% ` Ihor Radchenko
1 sibling, 2 replies; 59+ results
From: Max Nikulin @ 2024-01-20 10:09 UTC (permalink / raw)
To: emacs-orgmode
On 18/01/2024 20:05, Ihor Radchenko wrote:
> With the patch, I am getting the following:[...]
> \begin{center}
> \begin{tabular}{lr}
> {[}foo] & 2\\[0pt]
> {[}bar] & 3\\[0pt]
> \end{tabular}
> \end{center}
It means that [0pt] is not necessary any more. However users will have
adjust their filters once more. I have no idea if many of them will
complain concerning {[} where it is not really required. (/[omitted]/).
To have an additional excuse, it is better to add a note that it is
inspired by pandoc strategy.
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 10:09 18% ` Max Nikulin
@ 2024-01-20 10:57 10% ` Juan Manuel Macías
2024-01-20 12:41 9% ` Ihor Radchenko
1 sibling, 0 replies; 59+ results
From: Juan Manuel Macías @ 2024-01-20 10:57 UTC (permalink / raw)
To: Max Nikulin; +Cc: Ihor Radchenko, orgmode
Max Nikulin writes:
> On 18/01/2024 20:05, Ihor Radchenko wrote:
>> With the patch, I am getting the following:[...]
>> \begin{center}
>> \begin{tabular}{lr}
>> {[}foo] & 2\\[0pt]
>> {[}bar] & 3\\[0pt]
>> \end{tabular}
>> \end{center}
>
> It means that [0pt] is not necessary any more. However users will have
> adjust their filters once more. I have no idea if many of them will
> complain concerning {[} where it is not really required.
> (/[omitted]/).
>
> To have an additional excuse, it is better to add a note that it is
> inspired by pandoc strategy.
I agree with the note. Perhaps both strategies could coexist: by
default, Ihor's code; and org-latex-line-break-safe with value "\\\\".
And, after some time, the latter could become obsolete, unless a new
''raison d'etre'' is found for it...
In any case, I would no longer see it necessary to modify
org-latex-verse-block anymore.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-13 15:08 10% ` Ihor Radchenko
2024-01-13 16:05 18% ` Juan Manuel Macías
@ 2024-01-20 10:27 10% ` Max Nikulin
2024-01-20 12:35 10% ` Ihor Radchenko
1 sibling, 1 reply; 59+ results
From: Max Nikulin @ 2024-01-20 10:27 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
On 13/01/2024 22:08, Ihor Radchenko wrote:
> Juan Manuel Macías writes:
>
>> Can anyone think of a possible scenario where removing the '\\[0pt]' in
>> the last line would cause a problem?
I would suggest to strip leading and trailing newlines before processing
of the block content.
> In such scenario, we may technically violate what users ask us to do:
>
> #+begin_verse
> I really want newline here\\
> #+end_verse
I really want newline here@@latex:\\%@@
P.S. Juan Manuel, I have sent another message to this thread without
your address in Cc.
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-19 17:28 10% ` Juan Manuel Macías
@ 2024-01-20 12:34 10% ` Ihor Radchenko
2024-01-20 13:22 9% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-20 12:34 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
Juan Manuel Macías <maciaschain@posteo.net> writes:
>> \begin{itemize}
>> \item {[}bax]
>> \item {[}aur]
>> \end{itemize}
>
> Great! Simple and effective. And more surgical than pandoc's global
> solution. But now a question arises... Your code clearly solves the
> problem that led to the declaration of org-latex-line-break-safe,
> without foreseeing any unwanted effects, since it is the solution that
> is usually recommended from LaTeX. So, if this code is included in Org,
> what is the future of org-latex-line-break-safe?
It is still useful in situations like
Paragraph\\
#+begin_export latex
[foo]
#+end_export
or
Paragraph\\
@@latex:[foo]@@
My patch does not do anything about verbatim environments.
We may remove the use of `org-latex-line-break-safe' from some places,
but not all.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 10:27 10% ` Max Nikulin
@ 2024-01-20 12:35 10% ` Ihor Radchenko
2024-01-21 5:44 9% ` Max Nikulin
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-20 12:35 UTC (permalink / raw)
To: Max Nikulin; +Cc: Juan Manuel Macías, orgmode
Max Nikulin <manikulin@gmail.com> writes:
>>> Can anyone think of a possible scenario where removing the '\\[0pt]' in
>>> the last line would cause a problem?
>
> I would suggest to strip leading and trailing newlines before processing
> of the block content.
May you elaborate?
>> In such scenario, we may technically violate what users ask us to do:
>>
>> #+begin_verse
>> I really want newline here\\
>> #+end_verse
>
> I really want newline here@@latex:\\%@@
This implies that Org mode does not follow its own markup. I disagree
with such suggestion.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 10%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 10:09 18% ` Max Nikulin
2024-01-20 10:57 10% ` Juan Manuel Macías
@ 2024-01-20 12:41 9% ` Ihor Radchenko
2024-01-21 5:56 20% ` Max Nikulin
1 sibling, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-20 12:41 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
Max Nikulin <manikulin@gmail.com> writes:
> It means that [0pt] is not necessary any more. However users will have
> adjust their filters once more. I have no idea if many of them will
> complain concerning {[} where it is not really required. (/[omitted]/).
We do not promise the exact way the exported LaTeX file looks like. User
filters are too flexible - we cannot reasonably guarantee that they will
keep working if they rely on the way Org mode transcodes to LaTeX in
specific Org version.
> To have an additional excuse, it is better to add a note that it is
> inspired by pandoc strategy.
I can add it to the code comment, but for different reason. We do not
give "excuses" to make breaking changes - https://bzg.fr/en/the-software-maintainers-pledge/
But we do keep the flexibility to make changes where Org mode behavior
is undefined. Like in this case.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 12:34 10% ` Ihor Radchenko
@ 2024-01-20 13:22 9% ` Juan Manuel Macías
2024-01-20 13:46 9% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-20 13:22 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode, Max Nikulin
Ihor Radchenko writes:
> Juan Manuel Macías <maciaschain@posteo.net> writes:
>
>>> \begin{itemize}
>>> \item {[}bax]
>>> \item {[}aur]
>>> \end{itemize}
>>
>> Great! Simple and effective. And more surgical than pandoc's global
>> solution. But now a question arises... Your code clearly solves the
>> problem that led to the declaration of org-latex-line-break-safe,
>> without foreseeing any unwanted effects, since it is the solution that
>> is usually recommended from LaTeX. So, if this code is included in Org,
>> what is the future of org-latex-line-break-safe?
>
> It is still useful in situations like
>
> Paragraph\\
>
> #+begin_export latex
> [foo]
> #+end_export
>
> or
>
> Paragraph\\
> @@latex:[foo]@@
But since in both cases it is literal LaTeX code, the correct thing
would be for the user to be in charge of adding the curly braces to the
square brackets. I mean in such scenario it is LaTeX code, not Org.
Anyway, in both examples it does not make sense for LaTeX to end a
paragraph with the \\ macro, which is why we commented in previous
messages in the thread. The \\ macro is only used in horizontal mode;
this macro does not add a new paragraph but rather a forced line break
within the paragraph.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 13:22 9% ` Juan Manuel Macías
@ 2024-01-20 13:46 9% ` Ihor Radchenko
2024-01-20 15:41 9% ` Juan Manuel Macías
0 siblings, 1 reply; 59+ results
From: Ihor Radchenko @ 2024-01-20 13:46 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
Juan Manuel Macías <maciaschain@posteo.net> writes:
>> Paragraph\\
>> @@latex:[foo]@@
>
> But since in both cases it is literal LaTeX code, the correct thing
> would be for the user to be in charge of adding the curly braces to the
> square brackets. I mean in such scenario it is LaTeX code, not Org.
Not really. Because we do not give guarantees about the details of LaTeX
export, we should try hard to not break things that users may put into
literal export snippets.
> Anyway, in both examples it does not make sense for LaTeX to end a
> paragraph with the \\ macro, which is why we commented in previous
> messages in the thread. The \\ macro is only used in horizontal mode;
> this macro does not add a new paragraph but rather a forced line break
> within the paragraph.
In the example with @@latex:[foo]@@, \\ is not at the end of a paragraph
- it is inside paragraph.
Another alternative could be modifying how inline latex snippet is
exported, but that's worse IMHO - we should try hard not to touch what
users tell Org to do explicitly.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 13:46 9% ` Ihor Radchenko
@ 2024-01-20 15:41 9% ` Juan Manuel Macías
2024-01-20 18:47 9% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-20 15:41 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode, Max Nikulin
Ihor Radchenko writes:
> Juan Manuel Macías <maciaschain@posteo.net> writes:
>
>>> Paragraph\\
>>> @@latex:[foo]@@
>>
>> But since in both cases it is literal LaTeX code, the correct thing
>> would be for the user to be in charge of adding the curly braces to the
>> square brackets. I mean in such scenario it is LaTeX code, not Org.
>
> Not really. Because we do not give guarantees about the details of LaTeX
> export, we should try hard to not break things that users may put into
> literal export snippets.
>
>> Anyway, in both examples it does not make sense for LaTeX to end a
>> paragraph with the \\ macro, which is why we commented in previous
>> messages in the thread. The \\ macro is only used in horizontal mode;
>> this macro does not add a new paragraph but rather a forced line break
>> within the paragraph.
>
> In the example with @@latex:[foo]@@, \\ is not at the end of a paragraph
> - it is inside paragraph.
What I mean is that literal LaTeX code is LaTeX code, despite the
redundancy. IMHO, Org's only duty in that case is to export such literal
code as valid LaTeX code, but Org "does not know" what that literal code
consists of. The user who enters the literal LaTeX code is the one who
has the duty to add the necessary elements to that code so that it is
compiled correctly by LaTeX. Let's look at this as a territorial
question:
Scenario A:
@@LaTeX:\libebreak@@ [ipsum] ==> the problem is in Org territory
Scenario B:
lorem\\ @@latex:[ipsum]@@ ==> the problem is in the user's territory
Best regards,
Juan Manuel
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 15:41 9% ` Juan Manuel Macías
@ 2024-01-20 18:47 9% ` Ihor Radchenko
2024-01-20 20:27 18% ` Juan Manuel Macías
2024-01-21 6:06 18% ` Max Nikulin
0 siblings, 2 replies; 59+ results
From: Ihor Radchenko @ 2024-01-20 18:47 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
Juan Manuel Macías <maciaschain@posteo.net> writes:
> Scenario B:
>
> lorem\\ @@latex:[ipsum]@@ ==> the problem is in the user's territory
I see your point.
Although I am still a bit hesitant to remove
`org-latex-line-break-safe'.
What would be the benefit of removing it? For now, I mostly just see
that it will make the life harder for users in Scenario B.
For verse blocks, AFAIU, even \\ is problematic. (Correct me if I am wrong)
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 18:47 9% ` Ihor Radchenko
@ 2024-01-20 20:27 18% ` Juan Manuel Macías
2024-01-21 13:42 35% ` Ihor Radchenko
2024-01-21 6:06 18% ` Max Nikulin
1 sibling, 1 reply; 59+ results
From: Juan Manuel Macías @ 2024-01-20 20:27 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode, Max Nikulin
Ihor Radchenko writes:
> I see your point.
> Although I am still a bit hesitant to remove
> `org-latex-line-break-safe'.
> What would be the benefit of removing it? For now, I mostly just see
> that it will make the life harder for users in Scenario B.
It's a complicated situation, because we now have two solutions to the
same problem... It certainly sounds a bit abrupt to remove
org-latex-line-break-safe (at least for now). I see no problem in both
solutions coexisting. After all, the user can always give an "\\\\"
value to org-latex-line-break-safe. The other possibility is that
org-latex-line-break-safe is selectively deleted, as you mentioned in a
previous email. In tables and verse blocks, unless I'm missing
something, I think adding [0pt] would be unnecessary, with the new
solution.
> For verse blocks, AFAIU, even \\ is problematic. (Correct me if I am wrong)
From the tests I have done, the problem of the vertical space being
altered after the verse environment only appears when the last line ends
in \\[0pt]. If it ends in \\ the problem does not appear. It is not
recommended that a verse environment ends in \\, but it does not seem to
influence the output. In fact, that was how it was in Org in the days
pre org-latex-line-break-safe and there were never any problems.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 12:35 10% ` Ihor Radchenko
@ 2024-01-21 5:44 9% ` Max Nikulin
2024-01-31 15:09 9% ` Ihor Radchenko
0 siblings, 1 reply; 59+ results
From: Max Nikulin @ 2024-01-21 5:44 UTC (permalink / raw)
To: emacs-orgmode; +Cc: Juan Manuel Macías
On 20/01/2024 19:35, Ihor Radchenko wrote:
> Max Nikulin writes:
>
>>>> Can anyone think of a possible scenario where removing the '\\[0pt]' in
>>>> the last line would cause a problem?
>>
>> I would suggest to strip leading and trailing newlines before processing
>> of the block content.
>
> May you elaborate?
I expect that
#+BEGIN_VERSE
From fairest creatures we desire increase,
That thereby beauty’s rose might never die,
#+END_VERSE
is exported to
\begin{verse}
From fairest creatures we desire increase,\\
That thereby beauty’s rose might never die,
\end{verse}
and internally at some point it is represented as
"From fairest creatures we desire increase,\nThat thereby beauty’s rose
might never die,"
without leading and trailing newlines.
>>> In such scenario, we may technically violate what users ask us to do:
>>>
>>> #+begin_verse
>>> I really want newline here\\
>>> #+end_verse
>>
>> I really want newline here@@latex:\\%@@
>
> This implies that Org mode does not follow its own markup. I disagree
> with such suggestion.
I do not see any use case for "\\" at the last line. Perhaps it might
even cause an org-lint warning. From my point of view, it is preferable
to require more verbose markup in special cases to make intentions explicit.
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 12:41 9% ` Ihor Radchenko
@ 2024-01-21 5:56 20% ` Max Nikulin
0 siblings, 0 replies; 59+ results
From: Max Nikulin @ 2024-01-21 5:56 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: emacs-orgmode
On 20/01/2024 19:41, Ihor Radchenko wrote:
> Max Nikulin writes:
>
>> To have an additional excuse, it is better to add a note that it is
>> inspired by pandoc strategy.
>
> I can add it to the code comment, but for different reason. We do not
> give "excuses" to make breaking changes - https://bzg.fr/en/the-software-maintainers-pledge/
> But we do keep the flexibility to make changes where Org mode behavior
> is undefined. Like in this case.
De-facto \\[0pt] was a breaking change despite formal contracts. I do
not consider it as a wrong decision though. It is the case when where
was no good choice, instead just ones that may cause some troubles
(including leaving everything as is).
I recall some threads (besides ones started by Juan Manuel) where users
considered [0pt] as an undesired consequence of some other changes. That
is why I wrote "excuse".
^ permalink raw reply [relevance 20%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 18:47 9% ` Ihor Radchenko
2024-01-20 20:27 18% ` Juan Manuel Macías
@ 2024-01-21 6:06 18% ` Max Nikulin
1 sibling, 0 replies; 59+ results
From: Max Nikulin @ 2024-01-21 6:06 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode
On 21/01/2024 01:47, Ihor Radchenko wrote:
> Juan Manuel Macías writes:
>>
>> lorem\\ @@latex:[ipsum]@@ ==> the problem is in the user's territory
I agree with Juan Manuel.
> I see your point.
> Although I am still a bit hesitant to remove
> `org-latex-line-break-safe'.
> What would be the benefit of removing it? For now, I mostly just see
> that it will make the life harder for users in Scenario B.
An option might be disabling it by default without removing the code
completely. Depending on user feedback it may be removed later.
Users, who need to submit LaTeX code, consider [0pt] as undesired noise.
I see their point of view.
^ permalink raw reply [relevance 18%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-20 20:27 18% ` Juan Manuel Macías
@ 2024-01-21 13:42 35% ` Ihor Radchenko
2024-01-21 19:25 9% ` Juan Manuel Macías
2024-01-31 11:39 10% ` Ihor Radchenko
0 siblings, 2 replies; 59+ results
From: Ihor Radchenko @ 2024-01-21 13:42 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
[-- Attachment #1: Type: text/plain, Size: 1386 bytes --]
Juan Manuel Macías <maciaschain@posteo.net> writes:
>> Although I am still a bit hesitant to remove
>> `org-latex-line-break-safe'.
>> What would be the benefit of removing it? For now, I mostly just see
>> that it will make the life harder for users in Scenario B.
>
> It's a complicated situation, because we now have two solutions to the
> same problem... It certainly sounds a bit abrupt to remove
> org-latex-line-break-safe (at least for now). I see no problem in both
> solutions coexisting. After all, the user can always give an "\\\\"
> value to org-latex-line-break-safe. The other possibility is that
> org-latex-line-break-safe is selectively deleted, as you mentioned in a
> previous email. In tables and verse blocks, unless I'm missing
> something, I think adding [0pt] would be unnecessary, with the new
> solution.
Upon looking closer into selective removal, it turned out to be more
tricky than I thought. I'm afraid that using \\[0pt] only in some places
may become a bit of headache to maintain - we may accidentally break
certain regexp replacements in `org-latex-verse-block'. In particular,
when verse contents is not straightforward and uses \\[0pt].
Given that `org-latex-line-break-safe' also introduced the problem with
verse blocks, I decided that it is better to remove it at the end.
See the attached tentative patchset.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v2-0001-ox-latex-Make-sure-that-text-is-not-misinterprete.patch --]
[-- Type: text/x-patch, Size: 2518 bytes --]
From d2e74cc2734eaf8d782f5acf66b11956d6ffa47e Mon Sep 17 00:00:00 2001
Message-ID: <d2e74cc2734eaf8d782f5acf66b11956d6ffa47e.1705844367.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Thu, 18 Jan 2024 14:01:32 +0100
Subject: [PATCH v2 1/2] ox-latex: Make sure that [text] is not misinterpreted
as LaTeX argument
* lisp/ox-latex.el (org-latex-plain-text): Protect plain text starting
from [. It might be misinterpreted as optional command argument if
previous exported fragment ends with a command accepting such.
*
testing/lisp/test-ox-latex.el (text-ox-latex/protect-square-brackets):
Add new test.
Link: https://orgmode.org/list/87o7dju9vn.fsf@posteo.net
---
lisp/ox-latex.el | 9 +++++++++
testing/lisp/test-ox-latex.el | 23 +++++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index df20345f8..a64dd5a87 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -3095,6 +3095,15 @@ (defun org-latex-plain-text (text info)
"\\(?:[ \t]*\\\\\\\\\\)?[ \t]*\n"
(concat org-latex-line-break-safe "\n")
output nil t)))
+ ;; Protect [foo] at the beginning of lines / beginning of the
+ ;; plain-text object. This prevents LaTeX from unexpectedly
+ ;; interpreting @@latex:\pagebreak@@ [foo] as a command with
+ ;; optional argument.
+ (setq output (replace-regexp-in-string
+ (rx bol (0+ space) (group "["))
+ "{[}"
+ output
+ nil nil 1))
;; Return value.
output))
diff --git a/testing/lisp/test-ox-latex.el b/testing/lisp/test-ox-latex.el
index 41df1b823..237ad97ec 100644
--- a/testing/lisp/test-ox-latex.el
+++ b/testing/lisp/test-ox-latex.el
@@ -29,6 +29,29 @@ (unless (featurep 'ox-latex)
\f
+(ert-deftest text-ox-latex/protect-square-brackets ()
+ "Test [foo] being interpreted as plain text even after LaTeX commands."
+ (org-test-with-exported-text
+ 'latex
+ "* This is test
+lorem @@latex:\\pagebreak@@ [ipsum]
+
+#+begin_figure
+[lorem] figure
+#+end_figure
+
+| [foo] | 2 |
+| [bar] | 3 |
+
+- [bax]
+- [aur]
+"
+ (goto-char (point-min))
+ (should (search-forward "lorem \\pagebreak {[}ipsum]"))
+ (should (search-forward "{[}lorem] figure"))
+ (should (search-forward "{[}foo]"))
+ (should (search-forward "\\item {[}bax]"))))
+
(ert-deftest test-ox-latex/verse ()
"Test verse blocks."
(org-test-with-exported-text
--
2.43.0
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: v2-0002-ox-latex-Remove-org-latex-line-break-safe.patch --]
[-- Type: text/x-patch, Size: 11526 bytes --]
From dd4618b31dc5070d6802e484fd58cf50f5d3606d Mon Sep 17 00:00:00 2001
Message-ID: <dd4618b31dc5070d6802e484fd58cf50f5d3606d.1705844367.git.yantar92@posteo.net>
In-Reply-To: <d2e74cc2734eaf8d782f5acf66b11956d6ffa47e.1705844367.git.yantar92@posteo.net>
References: <d2e74cc2734eaf8d782f5acf66b11956d6ffa47e.1705844367.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Sun, 21 Jan 2024 14:21:33 +0100
Subject: [PATCH v2 2/2] ox-latex: Remove org-latex-line-break-safe
This reverts commit 3f60acff7717e472d06833e9cf9fff6ca3d59337 and
subsequent relevant comments.
* lisp/ox-latex.el (org-latex-line-break-safe): Remove constant. The
\\[0pt] is actually not safe to use in some scenarios. We use a
different approach to avoid plain text [...] being interpreted as
LaTeX optional argument - we escape [ like {[}; that's what pandoc
does.
(org-latex-clock):
(org-latex-line-break):
(org-latex-plain-text):
(org-latex-planning):
(org-latex--org-table):
(org-latex--math-table):
(org-latex-table-row):
(org-latex-verse-block):
* testing/lisp/test-org-table.el (test-org-table/to-latex):
* testing/lisp/test-ox-latex.el (test-ox-latex/verse):
(test-ox-latex/longtable): Remove references to
`org-latex-line-break-safe'.
* etc/ORG-NEWS (=ox-latex=: ~org-latex-line-break-safe~ is removed):
Announce removal.
* lisp/org-compat.el (org-latex-line-break-safe): Make obsolete.
Link: https://orgmode.org/list/878r4jg37s.fsf@posteo.net
---
etc/ORG-NEWS | 10 +++++++
lisp/org-compat.el | 18 +++++++++++++
lisp/ox-latex.el | 49 ++++++++++++----------------------
testing/lisp/test-org-table.el | 6 ++---
testing/lisp/test-ox-latex.el | 16 +++++------
5 files changed, 56 insertions(+), 43 deletions(-)
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 847ddf614..46f1e66a7 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -13,6 +13,16 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
* Version 9.7 (not released yet)
** Important announcements and breaking changes
+*** =ox-latex=: ~org-latex-line-break-safe~ is removed
+
+~org-latex-line-break-safe~ constant was previously introduced to deal
+with edge cases when LaTeX interprets [...] as LaTeX command
+argument. However, it caused a number of other issues and proved
+itself not to be as "safe" as it supposed to be.
+
+We now use a Pandoc's approach to deal with the same problem,
+utilizing ={[}= to escape =[...]= instances where needed.
+
*** ~org-agenda-search-headline-for-time~ now ignores all the timestamp in headings
Previously, ~org-agenda-search-headline-for-time~ made Org agenda
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index 17f07db9d..27d094b07 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -629,6 +629,24 @@ (define-obsolete-variable-alias 'org-reveal-start-hook
(define-obsolete-function-alias 'org-file-url-p 'org-url-p "9.6")
(define-obsolete-variable-alias 'org-plantuml-executable-args 'org-plantuml-args
"Org 9.6")
+
+(defconst org-latex-line-break-safe "\\\\[0pt]"
+ "Linebreak protecting the following [...].
+
+Without \"[0pt]\" it would be interpreted as an optional argument to
+the \\\\.
+
+This constant, for example, makes the below code not err:
+
+\\begin{tabular}{c|c}
+ [t] & s\\\\[0pt]
+ [I] & A\\\\[0pt]
+ [m] & kg
+\\end{tabular}")
+(make-obsolete 'org-latex-line-break-safe
+ "should not be used - it is not safe in all the scenarios."
+ "9.7")
+
(defun org-in-fixed-width-region-p ()
"Non-nil if point in a fixed-width region."
(save-match-data
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index a64dd5a87..d6e74cb45 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -298,23 +298,10 @@ (defconst org-latex-language-alist
- `:script-tag' the script otf tag.")
-(defconst org-latex-line-break-safe "\\\\[0pt]"
- "Linebreak protecting the following [...].
-Without \"[0pt]\" it would be interpreted as an optional argument to
-the \\\\.
-
-This constant, for example, makes the below code not err:
-
-\\begin{tabular}{c|c}
- [t] & s\\\\[0pt]
- [I] & A\\\\[0pt]
- [m] & kg
-\\end{tabular}")
-
-(defconst org-latex-table-matrix-macros `(("bordermatrix" . "\\cr")
+(defconst org-latex-table-matrix-macros '(("bordermatrix" . "\\cr")
("qbordermatrix" . "\\cr")
- ("kbordermatrix" . ,org-latex-line-break-safe))
+ ("kbordermatrix" . "\\\\"))
"Alist between matrix macros and their row ending.")
(defconst org-latex-math-environments-re
@@ -2124,7 +2111,7 @@ (defun org-latex-clock (clock _contents info)
(concat (org-timestamp-translate (org-element-property :value clock))
(let ((time (org-element-property :duration clock)))
(and time (format " (%s)" time)))))
- org-latex-line-break-safe))
+ "\\\\"))
;;;; Code
@@ -2722,7 +2709,7 @@ ;;;; Line Break
(defun org-latex-line-break (_line-break _contents _info)
"Transcode a LINE-BREAK object from Org to LaTeX.
CONTENTS is nil. INFO is a plist holding contextual information."
- (concat org-latex-line-break-safe "\n"))
+ "\\\\\n")
;;;; Link
@@ -3092,9 +3079,7 @@ (defun org-latex-plain-text (text info)
;; Handle break preservation if required.
(when (plist-get info :preserve-breaks)
(setq output (replace-regexp-in-string
- "\\(?:[ \t]*\\\\\\\\\\)?[ \t]*\n"
- (concat org-latex-line-break-safe "\n")
- output nil t)))
+ "\\(?:[ \t]*\\\\\\\\\\)?[ \t]*\n" "\\\\\n" output nil t)))
;; Protect [foo] at the beginning of lines / beginning of the
;; plain-text object. This prevents LaTeX from unexpectedly
;; interpreting @@latex:\pagebreak@@ [foo] as a command with
@@ -3139,7 +3124,7 @@ (defun org-latex-planning (planning _contents info)
(format (plist-get info :latex-active-timestamp-format)
(org-timestamp-translate scheduled)))))))
" ")
- org-latex-line-break-safe))
+ "\\\\"))
;;;; Property Drawer
@@ -3919,11 +3904,11 @@ (defun org-latex--org-table (table contents info)
(format "\\begin{%s}%s{%s}\n" table-env width alignment)
(and above?
(org-string-nw-p caption)
- (concat caption org-latex-line-break-safe "\n"))
+ (concat caption "\\\\\n"))
contents
(and (not above?)
(org-string-nw-p caption)
- (concat caption org-latex-line-break-safe "\n"))
+ (concat caption "\\\\\n"))
(format "\\end{%s}" table-env)
(and fontsize "}"))))
(t
@@ -4008,7 +3993,7 @@ (defun org-latex--math-table (table info)
(lambda (cell)
(substring (org-element-interpret-data cell) 0 -1))
(org-element-map row 'table-cell #'identity info) "&")
- (or (cdr (assoc env org-latex-table-matrix-macros)) org-latex-line-break-safe)
+ (or (cdr (assoc env org-latex-table-matrix-macros)) "\\\\")
"\n")))
(org-element-map table 'table-row #'identity info) "")))
(concat
@@ -4083,7 +4068,7 @@ (defun org-latex-table-row (table-row contents info)
(setq table-head-cache (make-hash-table :test #'eq))
(plist-put info :org-latex-table-head-cache table-head-cache))
(if-let ((head-contents (gethash (org-element-parent table-row) table-head-cache)))
- (puthash (org-element-parent table-row) (concat head-contents org-latex-line-break-safe "\n" contents)
+ (puthash (org-element-parent table-row) (concat head-contents "\\\\\n" contents)
table-head-cache)
(puthash (org-element-parent table-row) contents table-head-cache))))
;; Return LaTeX string as the transcoder.
@@ -4092,7 +4077,7 @@ (defun org-latex-table-row (table-row contents info)
;; hline was specifically marked.
(and booktabsp (not (org-export-get-previous-element table-row info))
"\\toprule\n")
- contents org-latex-line-break-safe "\n"
+ contents "\\\\\n"
(cond
;; Special case for long tables. Define header and footers.
((and longtablep (org-export-table-row-ends-header-p table-row info))
@@ -4100,9 +4085,9 @@ (defun org-latex-table-row (table-row contents info)
(org-element-lineage table-row 'table) info))))
(format "%s
\\endfirsthead
-\\multicolumn{%d}{l}{%s} \\\\[0pt]
+\\multicolumn{%d}{l}{%s} \\\\
%s
-%s \\\\[0pt]\n
+%s \\\\\n
%s
\\endhead
%s\\multicolumn{%d}{r}{%s} \\\\
@@ -4211,15 +4196,15 @@ (defun org-latex-verse-block (verse-block contents info)
(replace-regexp-in-string
(if (not lit)
(rx-to-string
- `(seq (group ,org-latex-line-break-safe "\n")
- (1+ (group line-start (0+ space) ,org-latex-line-break-safe "\n"))))
- (concat "^[ \t]*" (regexp-quote org-latex-line-break-safe) "$"))
+ `(seq (group "\\\\\n")
+ (1+ (group line-start (0+ space) "\\\\\n"))))
+ "^[ \t]*\\\\$")
(if (not lit)
(if lin "\\\\!\n\n" "\n\n")
"\\vspace*{\\baselineskip}")
(replace-regexp-in-string
"\\([ \t]*\\\\\\\\\\)?[ \t]*\n"
- (concat org-latex-line-break-safe "\n")
+ "\\\\\n"
(if (not lit)
(concat (org-trim contents t) "\n")
contents)
diff --git a/testing/lisp/test-org-table.el b/testing/lisp/test-org-table.el
index 92ccd2a05..6ee790894 100644
--- a/testing/lisp/test-org-table.el
+++ b/testing/lisp/test-org-table.el
@@ -1633,11 +1633,11 @@ (ert-deftest test-org-table/to-generic ()
(ert-deftest test-org-table/to-latex ()
"Test `orgtbl-to-latex' specifications."
(should
- (equal "\\begin{tabular}{l}\na\\\\[0pt]\n\\end{tabular}"
+ (equal "\\begin{tabular}{l}\na\\\\\n\\end{tabular}"
(orgtbl-to-latex (org-table-to-lisp "| a |") nil)))
;; Test :environment parameter.
(should
- (equal "\\begin{tabularx}{l}\na\\\\[0pt]\n\\end{tabularx}"
+ (equal "\\begin{tabularx}{l}\na\\\\\n\\end{tabularx}"
(orgtbl-to-latex (org-table-to-lisp "| a |")
'(:environment "tabularx"))))
;; Test :booktabs parameter.
@@ -1646,7 +1646,7 @@ (ert-deftest test-org-table/to-latex ()
"\\toprule" (orgtbl-to-latex (org-table-to-lisp "| a |") '(:booktabs t))))
;; Handle LaTeX snippets.
(should
- (equal "\\begin{tabular}{l}\n\\(x\\)\\\\[0pt]\n\\end{tabular}"
+ (equal "\\begin{tabular}{l}\n\\(x\\)\\\\\n\\end{tabular}"
(orgtbl-to-latex (org-table-to-lisp "| $x$ |") nil)))
;; Test pseudo objects and :raw parameter.
(should
diff --git a/testing/lisp/test-ox-latex.el b/testing/lisp/test-ox-latex.el
index 237ad97ec..d0be4e5a4 100644
--- a/testing/lisp/test-ox-latex.el
+++ b/testing/lisp/test-ox-latex.el
@@ -71,14 +71,14 @@ (ert-deftest test-ox-latex/verse ()
(should
(search-forward
"\\begin{verse}
-lorem ipsum dolor\\\\[0pt]
+lorem ipsum dolor\\\\
lorem ipsum dolor
-lorem ipsum dolor\\\\[0pt]
+lorem ipsum dolor\\\\
lorem ipsum dolor
-lorem ipsum dolor\\\\[0pt]
-lorem ipsum dolor\\\\[0pt]
+lorem ipsum dolor\\\\
+lorem ipsum dolor\\\\
\\end{verse}"))))
(ert-deftest test-ox-latex/longtable ()
@@ -98,15 +98,15 @@ (ert-deftest test-ox-latex/longtable ()
(should
(search-forward
"\\begin{longtable}{lr}
-First & Second\\\\[0pt]
-Column & Column\\\\[0pt]
+First & Second\\\\
+Column & Column\\\\
\\hline
\\endfirsthead"))
(goto-char (point-min))
(should
(search-forward
- "First & Second\\\\[0pt]
-Column & Column \\\\[0pt]
+ "First & Second\\\\
+Column & Column \\\\
\\hline
\\endhead"))
--
2.43.0
[-- Attachment #4: Type: text/plain, Size: 224 bytes --]
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply related [relevance 35%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-21 13:42 35% ` Ihor Radchenko
@ 2024-01-21 19:25 9% ` Juan Manuel Macías
2024-01-31 11:39 10% ` Ihor Radchenko
1 sibling, 0 replies; 59+ results
From: Juan Manuel Macías @ 2024-01-21 19:25 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: orgmode, Max Nikulin
Ihor Radchenko writes:
> Upon looking closer into selective removal, it turned out to be more
> tricky than I thought. I'm afraid that using \\[0pt] only in some places
> may become a bit of headache to maintain - we may accidentally break
> certain regexp replacements in `org-latex-verse-block'. In particular,
> when verse contents is not straightforward and uses \\[0pt].
>
> Given that `org-latex-line-break-safe' also introduced the problem with
> verse blocks, I decided that it is better to remove it at the end.
LaTeX code generated without org-latex-line-break-safe is much cleaner.
The decision to make this variable obsolete seems correct to me, if
there is already a better and more discreet solution. I don't know if it
will cause many problems with custom settings and filters written in
relation to this variable, as Maxim commented in a previous email... I
hope not. I have a couple of filters written already, but I don't think
it will take much work for me to readjust them.
Best regards,
Juan Manuel
^ permalink raw reply [relevance 9%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-21 13:42 35% ` Ihor Radchenko
2024-01-21 19:25 9% ` Juan Manuel Macías
@ 2024-01-31 11:39 10% ` Ihor Radchenko
1 sibling, 0 replies; 59+ results
From: Ihor Radchenko @ 2024-01-31 11:39 UTC (permalink / raw)
To: Juan Manuel Macías; +Cc: orgmode, Max Nikulin
Ihor Radchenko <yantar92@posteo.net> writes:
> Given that `org-latex-line-break-safe' also introduced the problem with
> verse blocks, I decided that it is better to remove it at the end.
>
> See the attached tentative patchset.
Applied, onto main.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=03b383df8
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 10%]
* Re: An academic journal entirely made in Org-Mode
@ 2024-01-31 14:30 4% ` Juan Manuel Macías
0 siblings, 0 replies; 59+ results
From: Juan Manuel Macías @ 2024-01-31 14:30 UTC (permalink / raw)
To: Dr. Arne Babenhauserheide; +Cc: emacs-orgmode
Hi, Arne, thank you for your comments.
Dr. Arne Babenhauserheide writes:
> Hi,
>
> Juan Manuel Macías <maciaschain@posteo.net> writes:
>
>> Org-Publish and LuaTeX. If anyone is interested in the code I used for
>> specific aspects of the publication, I can share it here :-).
>
> That sounds very interesting! I’m writing roleplaying books and my
> website with org-mode and since there are many small pieces I found over
> the years, I expect that the solved problems for a journal will be very
> educational!
I am currently responsible for the production of five academic journals,
and I have ended up developing a fairly productive workflow using
org/luatex. A little background on the matter: in my editorial design
work I used to work only in (La)TeX, but I discovered that org can
function as a fairly competent high-level interface to LaTeX. One of the
main advantages is the clarity that a light markup language brings to
the content, since pure LaTeX code is cumbersome. I know LaTeX code
reasonably well (in fact, I'm working on a couple of packages for
LuaLaTeX), but it's not comfortable for me to work on content.
Naturally, for heavy and complex jobs, post-processing is always
necessary. Org is still very useful as it is not only a lightweight
markup language but also a set of tools. And, loosely speaking, a work
environment on Emacs (which in itself is a work environment).
The main challenge of this workflow is obtaining the content, the data,
from the Word documents that the authors deliver, since, unfortunately,
everyone uses Word. Pandoc does a good job, as long as the Word
documents arrive reasonably well structured. Unfortunately, this is not
the case, at least in Humanities. Word documents usually have the
following defects:
- abuse of direct format;
- absence of applied styles, therefore it is impossible to obtain a
hierarchical outline of the document;
- absence of an automated system of bibliographies and citations.
Humanities authors don't even use "friendly" things like Zotero. That
is, Humanities authors make citations and bibliographies by hand (!!),
which means multiplying inconsistencies and typos.
Therefore, it is necessary to subject the original Word documents to a
cleaning process. Then I run pandoc using some templates and some custom
lua filters.
The journal is basically an org-publish project, where only the articles
and other parts are exported to *.tex files. There is a master document
that I export and compile using a function that runs latexmk in
interactive mode. This way I have more control over the parts, I can
deactivate nodes, etc. Each node, therefore, is an article, with a
series of properties: author, email, orcid-id, doi, title in English,
etc. In a sty document created ad hoc I have defined a series of LaTeX
variables, and then incorporated them into each heading. E.g.:
#+begin_src latex
\def\@author{}
\newcommand\author[1]{\def\@author{#1}}
\def\@mail{}
\newcommand\mail[1]{\def\@mail{#1}}
\def\@doi{}
\newcommand\doi[1]{\def\@doi{DOI: #1}}
etc...
#+end_src
I use org-capture to populate the nodes in the master document with all
that information.
>> https://recyt.fecyt.es/index.php/rel/issue/view/4327/948
>
> One small thing: the boxes for the abstract look pretty nice! How to
> create the complex tables on page 109ff would also be great to know.
The boxes are made with the mdframed package, which is very versatile for this type of
objets. The code used:
#+begin_src latex
\usepackage[framemethod=tikz,everyline=true]{mdframed}
#+end_src
A box style:
#+begin_src latex
\colorlet{background}{gray!7}
\mdfdefinestyle{mdabstracts}{%
linewidth=.3pt,
topline = true,
leftline =true,
rightline = true,
bottomline = true,
skipabove=0pt,
skipbelow=2\bigskipamount,
leftmargin=0em,
backgroundcolor=background,
roundcorner = 5pt,
innerleftmargin=1.5em,
rightmargin=0em,
innerrightmargin=1.5em,
innertopmargin=1em,
splittopskip=\topskip,
innerbottommargin=1em,
}
#+end_src
And an environment:
#+begin_src latex
\newmdenv[style=mdabstracts]{abstracts}
#+end_src
As for tables, I always try to apply the ideas of Edward Tufte. I use the booktabs package
with some modifications. An example of a table:
https://i.imgur.com/70NtdGb.png
Here I use these two macros:
#+macro: cmd @@latex:\cmidrule(rl){$1}@@
#+macro: mc @@latex:\multicolumn{$1}{$2}{$3}@@
And this filter for multicolumn rows (simply, the cells that contain "!!" are removed:
#+BIND: org-export-filter-table-functions (my-multicolumn-filter)
#+begin_src emacs-lisp :exports results :results none
(defun my-multicolumn-flilter (texto backend info)
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "&\s+!!" "" texto)))
#+end_src
Best regards,
Juan Manuel
^ permalink raw reply [relevance 4%]
* Re: [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export
2024-01-21 5:44 9% ` Max Nikulin
@ 2024-01-31 15:09 9% ` Ihor Radchenko
0 siblings, 0 replies; 59+ results
From: Ihor Radchenko @ 2024-01-31 15:09 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode, Juan Manuel Macías
Max Nikulin <manikulin@gmail.com> writes:
>>> I would suggest to strip leading and trailing newlines before processing
>>> of the block content.
>>
>> May you elaborate?
>
> I expect that
>
> #+BEGIN_VERSE
>
>
> From fairest creatures we desire increase,
> That thereby beauty’s rose might never die,
>
>
>
> #+END_VERSE
>
> is exported to
>
> \begin{verse}
> From fairest creatures we desire increase,\\
> That thereby beauty’s rose might never die,
> \end{verse}
>
> and internally at some point it is represented as
> "From fairest creatures we desire increase,\nThat thereby beauty’s rose
> might never die,"
> without leading and trailing newlines.
This has nothing to do with what happens when exporting verse blocks.
If you try a simple example like
#+options: toc:nil
* Heading
First.
Foo
#+BEGIN_VERSE
From fairest creatures we desire increase,
That thereby beauty’s rose might never die,
#+END_VERSE
Bar
Foo
#+BEGIN_VERSE
From fairest creatures we desire increase,
That thereby beauty’s rose might never die,
#+END_VERSE
Bar
you will see that lading and trailing spaces are insignificant:
\section{Heading}
\label{sec:orgc54e19b}
First.
Foo
\begin{verse}
\hspace*{1\fontdimen2\font}From fairest creatures we desire increase,\\
That thereby beauty’s rose might never die,\\
\end{verse}
Bar
Foo
\begin{verse}
\hspace*{1\fontdimen2\font}From fairest creatures we desire increase,\\
That thereby beauty’s rose might never die,\\
\end{verse}
Bar
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [relevance 9%]
* figures not exported properly by ox-latex
@ 2024-02-02 11:39 8% mahmood sheikh
2024-07-09 20:15 0% ` Karthik Chikmagalur
0 siblings, 1 reply; 59+ results
From: mahmood sheikh @ 2024-02-02 11:39 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 612 bytes --]
im on tecosaur's dev branch (version 9.7-pre)
i have the following in an org file:
```org
#+name: fig-switching-circuit-1
#+caption: implementation of \(p\)
[[attachment:circuit.svg]]
```
it gets turned into this
```
\includesvg[width=.9\linewidth]{/home/mahmooz/brain/notes/data/9e/5ba2ce-c383-4396-a2cb-891465f14d51/circuit}\\[0pt]
```
which isnt the behavior described in the docs:
> When captions follow the method as described in Captions, the LaTeX
export back-end wraps the picture in a floating ‘figure’ environment.
this is from https://orgmode.org/manual/Images-in-LaTeX-export.html
[-- Attachment #2: Type: text/html, Size: 788 bytes --]
^ permalink raw reply [relevance 8%]
* [BUG]: elusive vertical white-space errors in engraved source block export
@ 2024-02-15 9:18 17% gerard.vermeulen
0 siblings, 0 replies; 59+ results
From: gerard.vermeulen @ 2024-02-15 9:18 UTC (permalink / raw)
To: Emacs orgmode, Ihor Radchenko
[-- Attachment #1: Type: text/plain, Size: 845 bytes --]
Hi,
attached you'll find a pdf file showing the elusive vertical white-space
errors
using the engraved source block export backend that I demonstrated
yesterday
evening.
I also attached the org demonstration file and the mini-library that
makes the
demonstration file work.
You can find also everything at https://github.com/gav451/org-exp-exp
(except for the pdf).
I checked that the errors are also present in a minimal "clean"
environment
where the only installed packages are engrave-faces, auctex, and
pdf-tools.
I have also seen these kind of errors on Gentoo systems, but I have no
access
to those anymore.
I have a patch which is unacceptable because it limits the font size to
"normalsize" and it requires visible draw boxes around floating
listings.
Nevertheless, I attach it to show where I got stuck.
Regards -- Gerard
[-- Attachment #2: any-backend.org --]
[-- Type: application/octet-stream, Size: 26890 bytes --]
#+title: Switch to any Org LaTeX source block export backend
#+author: Gerard Vermeulen
#+latex-class: article
#+latex_class_options: [11pt,a4paper,english,svgnames]
#+property: header-args:emacs-lisp :tangle any-backend.el
#+options: ^:{} date:nil toc:2 timestamp:nil
#+startup: showeverything
#+begin_src latex :noweb yes :results raw
,#+latex_header: <<lst:latex-header>>
#+end_src
* Introduction
:PROPERTIES:
:CUSTOM_ID: sec:introduction
:END:
This document demonstrates how to switch between the four different Org LaTeX
export source code block backends ~verbatim~, ~listings~, ~minted~ and
~engraved~. In order to explore a bug in the ~engraved~ backend, the
sub-backends ~plain-engraved~, ~fixed-engraved~, and ~boxed-engraved~ replace
the ~engraved~ backend in the entry point [[ab-do-it]].
Sub-backend ~plain-engraved~ selects Org upstream, sub-backend ~fixed-engraved~
selects a bug work-around, and sub-backend ~boxed-engraved~ selects a bug
amplification which may lead to terrible ~pdf~ output.
Execution of the entry point listing [[ab-do-it]] assumes tangling of this file to
[[./any-backend.el]] and evaluation of [[./any-backend.el]] or installation of
[[./any-backend.el]] by means of ~package-install-from-buffer~.
* Minimal setup :noexport:
:PROPERTIES:
:CUSTOM_ID: sec:minimal-setup
:END:
Listing [[lst:insert-init]] uses ~ab-org-babel-file-as-block-body~ to insert the
contents of [[~/org-emacs/init.el][~/org-emacs/init.el]] into listing [[lst:insert-init-result]].
#+caption[Insert minimal dot-emacs]:
#+caption: Insert minimal dot-emacs.
#+header: :wrap "src emacs-lisp -n :eval never :tangle no"
#+name: lst:insert-init
#+header: :var filename="~/org-emacs/init.el"
#+begin_src emacs-lisp -n :eval no-export :exports both :tangle no
(unless (or (featurep 'any-backend)
(require 'any-backend nil 'noerror))
(user-error "Evaluate or install `any-backend.el' (after tangling?)"))
(ab-org-babel-file-as-block-body filename)
#+end_src
#+caption[Minimal dot-emacs]:
#+caption: Minimal dot-emacs.
#+name: lst:insert-init-result
#+RESULTS: lst:insert-init
#+begin_src emacs-lisp -n :eval never :tangle no
;; Almost everybody should edit the next line.
(push (expand-file-name "~/VCS/org-mode/lisp") load-path)
;; Undo calling `org-ctags-enable'.
(defun org-ctags-disable ()
"Undo calling `org-ctags-enable'."
(put 'org-mode 'find-tag-default-function nil)
(setq org-ctags-enabled-p nil)
(setq org-open-link-functions nil))
(with-eval-after-load 'org-ctags
(org-ctags-disable))
;; `tab'-related options affect `engrave-faces'.
(setopt tab-always-indent 'complete
tab-width 8
tool-bar-mode nil)
(when (eq system-type 'darwin)
(setopt ns-alternate-modifier nil
ns-command-modifier 'meta
ns-right-command-modifier 'super))
;; Ensure to load all relevant `Org' libraries.
(dolist (lib '(org ob-core ob-latex org-src ox-latex))
(require lib))
;; Setting `org-confirm-babel-evaluate' to `nil' is DANGEROUS.
(setopt org-adapt-indention nil
org-confirm-babel-evaluate nil
org-latex-compiler "lualatex"
org-latex-prefer-user-labels t
org-latex-src-block-backend 'engraved)
;; Install a minimum of other packages:
;; `engrave-faces' is absolutely necessary.
;; `auctex' and `pdf-tools' are nice to have.
;; First `pdf-tools' install may fail. FIX: exit Emacs to restart Emacs.
(setopt package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
("gnu-devel" . "https://elpa.gnu.org/devel/")
("melpa" . "https://melpa.org/packages/")
("nongnu" . "https://elpa.nongnu.org/nongnu/"))
package-pinned-packages '((auctex . "gnu")
(engrave-faces . "gnu-devel")
(pdf-tools . "melpa")))
(dolist (pkg '(auctex engrave-faces pdf-tools))
(unless (package-installed-p pkg)
(package-install pkg)))
;; `pdf-tools' has clickable links out of the box, contrary to `docview'.
;; `pdf-loader-install' ensures compilation of the `epdfinfo.c' server.
(when (fboundp 'pdf-loader-install)
(pdf-loader-install))
#+end_src
* LaTeX preamble with page layout and float barriers
:PROPERTIES:
:CUSTOM_ID: sec:latex-preamble
:END:
The geometry in listing [[lst:latex-header]] makes that the line length in all
listings fits within the LaTeX length ~\textwidth~. Listing [[lst:latex-header]]
also introduces float barriers to prevent floating figures and listings from
floating outside their ~[sub-][sub-]sections~.
#+caption[LaTeX preamble with page layout and float barriers]:
#+caption: LaTeX preamble with page layout and float barriers.
#+name: lst:latex-header
#+begin_src latex -n :exports code
% BEGIN: lst:latex-header
\usepackage{biblatex} % LaTeX compilation fails without this package.
% PAGE LAYOUT: https://www.overleaf.com/learn/latex/Page_size_and_margins
\usepackage{geometry}
\usepackage{layout}
\geometry{
a4paper,
total={480pt,680pt},
top=60pt,
left=60pt,
}
% FLOAT BARRIERS:
% https://tex.stackexchange.com/questions/118662/use-placeins-for-subsections
% Make section an implicit float barrier:
\usepackage[section]{placeins}
% Make subsection an implicit float barrier:
\makeatletter
\AtBeginDocument{%
\expandafter\renewcommand\expandafter\subsection\expandafter{%
\expandafter\@fb@secFB\subsection
}%
}
\makeatother
% Make subsubsection an implicit float barrier:
\makeatletter
\AtBeginDocument{%
\expandafter\renewcommand\expandafter\subsubsection\expandafter{%
\expandafter\@fb@secFB\subsubsection
}%
}
% END: lst:latex-header
#+end_src
* Noweb templates
:PROPERTIES:
:CUSTOM_ID: sec:noweb-templates
:END:
Listing [[plain-engraved]], [[fixed-engraved]], [[boxed-engraved]], [[listings]], [[minted]], and
[[verbatim]] are ~noweb~ templates for listing [[ab-do-it]] and [[ab-do-it-result]].
#+caption: Noweb ~plain-engraved~ template.
#+name: plain-engraved
#+begin_src latex -n :exports code
% Backend (PLAIN) ENGRAVED requires no packages.
#+end_src
#+caption: Noweb ~fixed-engraved~ template.
#+name: fixed-engraved
#+begin_src latex -n :exports code
% Backend (FIXED) ENGRAVED requires no packages.
#+end_src
#+caption: Noweb ~boxed-engraved~ template.
#+name: boxed-engraved
#+begin_src latex -n :exports code
% Backend (BOXED) ENGRAVED requires no packages.
#+end_src
#+caption: Noweb ~listings~ template.
#+name: listings
#+begin_src latex -n :exports code
% Source block backend LISTINGS requires two packages.
\usepackage{listings}
\usepackage{color}
#+end_src
#+caption: Noweb ~minted~ template.
#+name: minted
#+begin_src latex -n :exports code
% Backend MINTED requires one package.
\usepackage{minted}
#+end_src
#+caption: Noweb ~verbatim~ template.
#+name: verbatim
#+begin_src latex -n :exports code
% Backend VERBATIM requires no packages.
#+end_src
* Switch backend and explore an ~engraved~ export backend bug
:PROPERTIES:
:CUSTOM_ID: sec:switch-and-explore
:END:
Listing [[ab-header]], [[ab-file-as-body]], [[ab-filter]], [[ab-org-setup]], [[ab-setup]], and
[[defun-ab-do-it]], and [[ab-footer]] tangle into [[./any-backend.el]].
#+caption: Library file header.
#+name: ab-header
#+begin_src emacs-lisp -n :eval never
;;; any-backend.el --- demonstrate any block backend -*- lexical-binding:t -*-
;; Author: Gerard Vermeulen <gerard.vermeulen@posteo.net>
;; Version: 0.0.1
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file is the tangled output of `any-backend.org' tailored for
;; use with `any-backend.el'. Users should go to the "Export to
;; LaTeX" section of `any-backend.org' and execute the `ab-do-it'
;; source block after evaluation or installation of `any-backend.el'.
;;; Code:
(require 'ox-latex)
#+end_src
#+caption[Copy file contents to an indented source block body]:
#+caption: Copy file contents to an indented source block body.
#+name: ab-file-as-body
#+begin_src emacs-lisp -n :results silent
(defun ab-org-babel-file-as-block-body (filename)
"Copy FILENAME contents to an indented Org Babel source block body."
(when (file-readable-p filename)
(let ((delete-trailing-whitespace t)
(n (if org-src-preserve-indentation
0 org-edit-src-content-indentation)))
(with-temp-buffer
(insert-file-contents filename)
(string-rectangle (point-min) (point-max)
(make-string n ?\s))
(delete-trailing-whitespace (point-min) (point-max))
(buffer-substring (point-min) (point-max))))))
#+end_src
#+caption[Define ~ab-org-latex-engrave-source-block-filter~]:
#+caption: Define a source block filter function.
#+name: ab-filter
#+begin_src emacs-lisp -n :results silent
(defun ab-org-latex-engraved-source-block-filter (data _backend _info)
"Replace \"Code\" with \"Breakable\" in non-floating DATA environments.
Set `org-latex-engraved-preamble' to define a Breakable (non-floating)
environment and an unbreakable Code (floating) environment."
(unless (string-match "^\\\\DeclareTColorBox\\[\\]{Breakable}"
org-latex-engraved-preamble)
(user-error
"`org-latex-engraved-preamble' defines no `Breakable' environment"))
(when (eq org-latex-src-block-backend 'engraved)
;; Transform only blocks matching at position 0. Therefore, do
;; not transform blocks that are listing environments.
(when (string-match "\\`\\\\begin{Code}\n" data)
(setq data (replace-match "\\begin{Breakable}\n" t 'literal data))
(if (string-match "^\\\\end{Code}\n" data)
(setq data (replace-match "\\end{Breakable}\n" t 'literal data))
(error "Match `^\\\\end{Code}' failure")))))
#+end_src
#+caption[Define ~ab-org-latex-setup~.]:
#+caption: Define ~ab-org-latex-setup~.
#+name: ab-org-setup
#+begin_src emacs-lisp -n :results silent
(defun ab-org-latex-setup (how main)
"Set `org-latex-src-block-backend' and `org-latex-toc-command'.
HOW selects the sub-backend and MAIN selects which Org features to use."
(cond
((memq how '(minted plain-engraved fixed-engraved boxed-engraved))
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\listoflistings\n\\newpage\n"))
((eq how 'listings)
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\lstlistoflistings\n\\newpage\n"))
((eq how 'verbatim)
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\listoffigures\\newpage\n"))
(t (user-error "Correct argument `%S' for `ab-setup'" how)))
(if (memq how '(plain-engraved fixed-engraved boxed-engraved))
(setq-local org-latex-src-block-backend 'engraved)
(setq-local org-latex-src-block-backend how))
(if main (setq-local org-latex-packages-alist nil)
(setq-local org-latex-packages-alist
(or (and (eq how 'minted) '(("" "minted")))
(and (eq how 'listings) '(("" "listings")
("" "color")))))))
#+end_src
#+caption[Define ~ab-setup~]:
#+caption: Define ~ab-setup~.
#+caption: *Line 41* depends on ~how~ being ~fixed-engraved~ or ~boxed-engraved~.
#+name: ab-setup
#+begin_src emacs-lisp -n :results silent
(defun ab-setup (how main)
"Set `org-latex-src-block-backend', `org-latex-toc-command',
`org-latex-engraved-preamble', and `org-export-filter-src-block-functions'.
HOW selects the sub-backend and MAIN selects which Org features to use."
(ab-org-latex-setup how main)
(if (memq how '(verbatim listings minted plain-engraved))
(progn (setq-local org-latex-engraved-preamble
(default-toplevel-value 'org-latex-engraved-preamble))
(setq-local org-export-filter-src-block-functions nil))
(setq-local org-latex-engraved-preamble
(format "\\usepackage{fvextra}
[FVEXTRA-SETUP]
%% Make code and line numbers normalsize. Make line numbers grey.
\\renewcommand\\theFancyVerbLine{
\\normalsize\\color{black!40!white}\\arabic{FancyVerbLine}}
%% Do not rely on an eventual call to `engrave-faces-latex-gen-preamble'.
\\usepackage{xcolor}
\\providecolor{EfD}{HTML}{f7f7f7}
\\providecolor{EFD}{HTML}{28292e}
%% Define a breakable Code environment to prettily wrap the fontified code.
\\usepackage[breakable,xparse]{tcolorbox}
\\DeclareTColorBox[]{Breakable}{o}{
colback=EfD, colframe=EFD, colupper=EFD,
fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
IfNoValueTF={#1}{
boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=1.0pt
}{
boxsep=2.5pt, arc=0pt, outer arc=0pt, boxrule=0pt, leftrule=1.5pt
},
left=2pt, right=2pt, top=1pt, bottom=0.5pt, breakable
}
%% Define an unbreakable Code environment to fontify code inside floats.
\\DeclareTColorBox[]{Code}{o}{
colback=EfD, colframe=EFD, colupper=EFD,
fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
IfNoValueTF={#1}{
boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=1.0pt
}{
boxsep=2.5pt, arc=0pt, outer arc=0pt, boxrule=0pt, leftrule=1pt
},
left=2pt, right=2pt, top=1pt, bottom=1pt, %s
}
[LISTINGS-SETUP]" (or (and (eq how 'fixed-engraved) "unbreakable")
(and (eq how 'boxed-engraved) "breakable")
(user-error "(ab-setup `%S') yells BOOM!" how))))
(setq-local org-export-filter-src-block-functions
'(ab-org-latex-engraved-source-block-filter)))
org-latex-src-block-backend)
#+end_src
#+caption[Define ~ab-select-how-and-export-to-latex~]:
#+caption: Define ~ab-select-how-and-export-to-latex~.
#+name: defun-ab-do-it
#+begin_src emacs-lisp -n :exports code :results silent
;;;###autoload
(defun ab-select-how-and-export-to-latex (main)
"Export Org buffer to LaTeX file after prompting how to export.
In case MAIN is non-nil use org-9.7pre features, or in case MAIN is nil
use org-9.16 features, to export to LaTeX.
The `engraved' source block export backend may lead to defects in
compiled `pdf' for floating listings where vertical line spacing may not
be constant. Option `plain-engraved' selects Org upstream, option
`fixed-engraved' selects a bug work-around, and option `boxed-engraved'
selects a bug amplification which may lead to terrible `pdf' output.
The other choices are `verbatim', `listings', and `minted' to select the
other backends."
(interactive)
(let ((how
(intern-soft
(completing-read
"How: " '(plain-engraved fixed-engraved boxed-engraved
verbatim listings minted)
nil t)))
(seconds 1))
(ab-setup how main)
(run-with-timer seconds nil #'org-latex-export-to-latex)
(if main
(format "#+latex_header: <<%s>>" how)
(format "%% %s" how))))
#+end_src
#+caption[Library file footer]:
#+caption: Library file footer.
#+name: ab-footer
#+begin_src emacs-lisp -n :eval never
(provide 'any-backend)
;;; any-backend.el ends here
#+end_src
* Export to LaTeX
:PROPERTIES:
:CUSTOM_ID: sec:any-backend-usage
:END:
Originally, I had written this document to explore ~noweb~, but that exposed a
bug fixed since ~2024-02-05~. Execution of the listing [[ab-do-it]] source block
uses ~noweb~ in case of setting "~:var main='t~" in this source block and
execution of the listing [[ab-do-it]] source block does not use ~noweb~ in case of
setting "~:var main='nil~". The latter setting has the effect of exporting the
body of listing [[ab-do-it-result]].
#+caption[Call ~ab-select-how-and-export-to-latex~]:
#+caption: Call ~ab-select-how-and-export-to-latex~.
#+name: ab-do-it
#+header: :var main='nil
#+header: :wrap "src latex -n :exports both :noweb yes :results raw"
#+begin_src emacs-lisp -n :exports both :results raw :eval no-export :tangle no
(unless (or (featurep 'any-backend)
(require 'any-backend nil 'noerror))
(user-error "Evaluate or install `any-backend.el' (after tangling?)"))
(ab-select-how-and-export-to-latex main)
#+end_src
#+caption[Run ~ab-select-how-and-export-to-latex~ result]:
#+caption: Run ~ab-select-how-and-export-to-latex~ result.
#+name: ab-do-it-result
#+RESULTS: ab-do-it
#+begin_src latex -n :exports both :noweb yes :results raw
% plain-engraved
#+end_src
#+RESULTS: ab-do-it-result
#+latex_header: % Backend (PLAIN) ENGRAVED requires no packages.
* Make never "broken" non-floating listing
:PROPERTIES:
:CUSTOM_ID: sec:make-non-floating-listing
:END:
#+caption[Insert ~any-backend.el~]:
#+caption: Insert ~any-backend.el~.
#+header: :wrap "src emacs-lisp -n :eval never :tangle no"
#+name: insert-non-float
#+header: :var filename="any-backend.el"
#+begin_src emacs-lisp -n :eval no-export :exports both :tangle no
(unless (or (featurep 'any-backend)
(require 'any-backend nil 'noerror))
(user-error "Evaluate or install `any-backend.el' (after tangling?)"))
(ab-org-babel-file-as-block-body filename)
#+end_src
** List never "broken" non-floating listing
:PROPERTIES:
:CUSTOM_ID: sec:list-non-floating-listing
:END:
The next non-floating listing occupies a space of more than two pages.
#+name: list-non-float-result
#+RESULTS: insert-non-float
#+begin_src emacs-lisp -n :eval never :tangle no
;;; any-backend.el --- demonstrate any block backend -*- lexical-binding:t -*-
;; Author: Gerard Vermeulen <gerard.vermeulen@posteo.net>
;; Version: 0.0.1
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file is the tangled output of `any-backend.org' tailored for
;; use with `any-backend.el'. Users should go to the "Export to
;; LaTeX" section of `any-backend.org' and execute the `ab-do-it'
;; source block after evaluation or installation of `any-backend.el'.
;;; Code:
(require 'ox-latex)
(defun ab-org-babel-file-as-block-body (filename)
"Copy FILENAME contents to an indented Org Babel source block body."
(when (file-readable-p filename)
(let ((delete-trailing-whitespace t)
(n (if org-src-preserve-indentation
0 org-edit-src-content-indentation)))
(with-temp-buffer
(insert-file-contents filename)
(string-rectangle (point-min) (point-max)
(make-string n ?\s))
(delete-trailing-whitespace (point-min) (point-max))
(buffer-substring (point-min) (point-max))))))
(defun ab-org-latex-engraved-source-block-filter (data _backend _info)
"Replace \"Code\" with \"Breakable\" in non-floating DATA environments.
Set `org-latex-engraved-preamble' to define a Breakable (non-floating)
environment and an unbreakable Code (floating) environment."
(unless (string-match "^\\\\DeclareTColorBox\\[\\]{Breakable}"
org-latex-engraved-preamble)
(user-error
"`org-latex-engraved-preamble' defines no `Breakable' environment"))
(when (eq org-latex-src-block-backend 'engraved)
;; Transform only blocks matching at position 0. Therefore, do
;; not transform blocks that are listing environments.
(when (string-match "\\`\\\\begin{Code}\n" data)
(setq data (replace-match "\\begin{Breakable}\n" t 'literal data))
(if (string-match "^\\\\end{Code}\n" data)
(setq data (replace-match "\\end{Breakable}\n" t 'literal data))
(error "Match `^\\\\end{Code}' failure")))))
(defun ab-org-latex-setup (how main)
"Set `org-latex-src-block-backend' and `org-latex-toc-command'.
HOW selects the sub-backend and MAIN selects which Org features to use."
(cond
((memq how '(minted plain-engraved fixed-engraved boxed-engraved))
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\listoflistings\n\\newpage\n"))
((eq how 'listings)
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\lstlistoflistings\n\\newpage\n"))
((eq how 'verbatim)
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\listoffigures\\newpage\n"))
(t (user-error "Correct argument `%S' for `ab-setup'" how)))
(if (memq how '(plain-engraved fixed-engraved boxed-engraved))
(setq-local org-latex-src-block-backend 'engraved)
(setq-local org-latex-src-block-backend how))
(if main (setq-local org-latex-packages-alist nil)
(setq-local org-latex-packages-alist
(or (and (eq how 'minted) '(("" "minted")))
(and (eq how 'listings) '(("" "listings")
("" "color")))))))
(defun ab-setup (how main)
"Set `org-latex-src-block-backend', `org-latex-toc-command',
`org-latex-engraved-preamble', and `org-export-filter-src-block-functions'.
HOW selects the sub-backend and MAIN selects which Org features to use."
(ab-org-latex-setup how main)
(if (memq how '(verbatim listings minted plain-engraved))
(progn (setq-local org-latex-engraved-preamble
(default-toplevel-value 'org-latex-engraved-preamble))
(setq-local org-export-filter-src-block-functions nil))
(setq-local org-latex-engraved-preamble
(format "\\usepackage{fvextra}
[FVEXTRA-SETUP]
%% Make code and line numbers normalsize. Make line numbers grey.
\\renewcommand\\theFancyVerbLine{
\\normalsize\\color{black!40!white}\\arabic{FancyVerbLine}}
%% Do not rely on an eventual call to `engrave-faces-latex-gen-preamble'.
\\usepackage{xcolor}
\\providecolor{EfD}{HTML}{f7f7f7}
\\providecolor{EFD}{HTML}{28292e}
%% Define a breakable Code environment to prettily wrap the fontified code.
\\usepackage[breakable,xparse]{tcolorbox}
\\DeclareTColorBox[]{Breakable}{o}{
colback=EfD, colframe=EFD, colupper=EFD,
fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
IfNoValueTF={#1}{
boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=1.0pt
}{
boxsep=2.5pt, arc=0pt, outer arc=0pt, boxrule=0pt, leftrule=1.5pt
},
left=2pt, right=2pt, top=1pt, bottom=0.5pt, breakable
}
%% Define an unbreakable Code environment to fontify code inside floats.
\\DeclareTColorBox[]{Code}{o}{
colback=EfD, colframe=EFD, colupper=EFD,
fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
IfNoValueTF={#1}{
boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=1.0pt
}{
boxsep=2.5pt, arc=0pt, outer arc=0pt, boxrule=0pt, leftrule=1pt
},
left=2pt, right=2pt, top=1pt, bottom=1pt, %s
}
[LISTINGS-SETUP]" (or (and (eq how 'fixed-engraved) "unbreakable")
(and (eq how 'boxed-engraved) "breakable")
(user-error "(ab-setup `%S') yells BOOM!" how))))
(setq-local org-export-filter-src-block-functions
'(ab-org-latex-engraved-source-block-filter)))
org-latex-src-block-backend)
;;;###autoload
(defun ab-select-how-and-export-to-latex (main)
"Export Org buffer to LaTeX file after prompting how to export.
In case MAIN is non-nil use org-9.7pre features, or in case MAIN is nil
use org-9.16 features, to export to LaTeX.
The `engraved' source block export backend may lead to defects in
compiled `pdf' for floating listings where vertical line spacing may not
be constant. Option `plain-engraved' selects Org upstream, option
`fixed-engraved' selects a bug work-around, and option `boxed-engraved'
selects a bug amplification which may lead to terrible `pdf' output.
The other choices are `verbatim', `listings', and `minted' to select the
other backends."
(interactive)
(let ((how
(intern-soft
(completing-read
"How: " '(plain-engraved fixed-engraved boxed-engraved
verbatim listings minted)
nil t)))
(seconds 1))
(ab-setup how main)
(run-with-timer seconds nil #'org-latex-export-to-latex)
(if main
(format "#+latex_header: <<%s>>" how)
(format "%% %s" how))))
(provide 'any-backend)
;;; any-backend.el ends here
#+end_src
The previous non-floating listing occupies a space of more than two pages.
* Conclusion: summary of constraints and limitations
:PROPERTIES:
:CUSTOM_ID: sec:conclusion
:END:
1. Placement of floating listings:
- It is impossible to have more than three floating listings on a page,
neither with ~minted~ nor with ~engraved~.
- Float barriers help to control the placement of floating listing.
- Mixing floating and non-floating listings in the same ~[sub-][sub-]section~
gives visually weird results: floating listings may float between the parts
of non-floating listings.
2. Table of contents:
- the ~verbatim~ backend produces a "List of Figures" instead of a "List of
Listings".
3. Sub-backend ~plain-engraved~ moving target defects:
- Listing [[plain-engraved]] is in a botched state.
- Listing [[ab-filter]] shows too much vertical spacing after line 13.
- Listing [[ab-org-setup]] shows too much vertical spacing after line 13.
- Listing [[ab-setup]] shows too much vertical spacing after line 13, 26, and 39.
- Listing [[defun-ab-do-it]] shows too much vertical spacing after line 13.
4. Sub-backend ~boxed-engraved~ moving target defects:
- Listing [[ab-org-setup]] shows too much vertical spacing after line 19.
- Listing [[ab-setup]] shows too much vertical spacing after line 19, and 38.
- Listing [[defun-ab-do-it]] shows too much vertical spacing after line 19.
*Fixing ~engraved~ requires:*
1. ~unbreakable~ floating listings.
2. ~\normalsize~ font size.
3. visible boxes.
Points (2) and (3) are unacceptable, IMO.
# Emacs looks for "Local variables:" after the last "newline-formfeed".
\f
# Local Variables:
# compile-command: "latexmk -interaction=nonstopmode -lualatex -pvc -shell-escape any-backend.tex"
# fill-column: 80
# org-edit-src-content-indentation: 2
# End:
[-- Attachment #3: any-backend.el --]
[-- Type: application/octet-stream, Size: 6886 bytes --]
;;; any-backend.el --- demonstrate any block backend -*- lexical-binding:t -*-
;; Author: Gerard Vermeulen <gerard.vermeulen@posteo.net>
;; Version: 0.0.1
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file is the tangled output of `any-backend.org' tailored for
;; use with `any-backend.el'. Users should go to the "Export to
;; LaTeX" section of `any-backend.org' and execute the `ab-do-it'
;; source block after evaluation or installation of `any-backend.el'.
;;; Code:
(require 'ox-latex)
(defun ab-org-babel-file-as-block-body (filename)
"Copy FILENAME contents to an indented Org Babel source block body."
(when (file-readable-p filename)
(let ((delete-trailing-whitespace t)
(n (if org-src-preserve-indentation
0 org-edit-src-content-indentation)))
(with-temp-buffer
(insert-file-contents filename)
(string-rectangle (point-min) (point-max)
(make-string n ?\s))
(delete-trailing-whitespace (point-min) (point-max))
(buffer-substring (point-min) (point-max))))))
(defun ab-org-latex-engraved-source-block-filter (data _backend _info)
"Replace \"Code\" with \"Breakable\" in non-floating DATA environments.
Set `org-latex-engraved-preamble' to define a Breakable (non-floating)
environment and an unbreakable Code (floating) environment."
(unless (string-match "^\\\\DeclareTColorBox\\[\\]{Breakable}"
org-latex-engraved-preamble)
(user-error
"`org-latex-engraved-preamble' defines no `Breakable' environment"))
(when (eq org-latex-src-block-backend 'engraved)
;; Transform only blocks matching at position 0. Therefore, do
;; not transform blocks that are listing environments.
(when (string-match "\\`\\\\begin{Code}\n" data)
(setq data (replace-match "\\begin{Breakable}\n" t 'literal data))
(if (string-match "^\\\\end{Code}\n" data)
(setq data (replace-match "\\end{Breakable}\n" t 'literal data))
(error "Match `^\\\\end{Code}' failure")))))
(defun ab-org-latex-setup (how main)
"Set `org-latex-src-block-backend' and `org-latex-toc-command'.
HOW selects the sub-backend and MAIN selects which Org features to use."
(cond
((memq how '(minted plain-engraved fixed-engraved boxed-engraved))
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\listoflistings\n\\newpage\n"))
((eq how 'listings)
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\lstlistoflistings\n\\newpage\n"))
((eq how 'verbatim)
(setq-local
org-latex-toc-command
"\\tableofcontents\\label{toc}\n\\listoffigures\\newpage\n"))
(t (user-error "Correct argument `%S' for `ab-setup'" how)))
(if (memq how '(plain-engraved fixed-engraved boxed-engraved))
(setq-local org-latex-src-block-backend 'engraved)
(setq-local org-latex-src-block-backend how))
(if main (setq-local org-latex-packages-alist nil)
(setq-local org-latex-packages-alist
(or (and (eq how 'minted) '(("" "minted")))
(and (eq how 'listings) '(("" "listings")
("" "color")))))))
(defun ab-setup (how main)
"Set `org-latex-src-block-backend', `org-latex-toc-command',
`org-latex-engraved-preamble', and `org-export-filter-src-block-functions'.
HOW selects the sub-backend and MAIN selects which Org features to use."
(ab-org-latex-setup how main)
(if (memq how '(verbatim listings minted plain-engraved))
(progn (setq-local org-latex-engraved-preamble
(default-toplevel-value 'org-latex-engraved-preamble))
(setq-local org-export-filter-src-block-functions nil))
(setq-local org-latex-engraved-preamble
(format "\\usepackage{fvextra}
[FVEXTRA-SETUP]
%% Make code and line numbers normalsize. Make line numbers grey.
\\renewcommand\\theFancyVerbLine{
\\normalsize\\color{black!40!white}\\arabic{FancyVerbLine}}
%% Do not rely on an eventual call to `engrave-faces-latex-gen-preamble'.
\\usepackage{xcolor}
\\providecolor{EfD}{HTML}{f7f7f7}
\\providecolor{EFD}{HTML}{28292e}
%% Define a breakable Code environment to prettily wrap the fontified code.
\\usepackage[breakable,xparse]{tcolorbox}
\\DeclareTColorBox[]{Breakable}{o}{
colback=EfD, colframe=EFD, colupper=EFD,
fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
IfNoValueTF={#1}{
boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=1.0pt
}{
boxsep=2.5pt, arc=0pt, outer arc=0pt, boxrule=0pt, leftrule=1.5pt
},
left=2pt, right=2pt, top=1pt, bottom=0.5pt, breakable
}
%% Define an unbreakable Code environment to fontify code inside floats.
\\DeclareTColorBox[]{Code}{o}{
colback=EfD, colframe=EFD, colupper=EFD,
fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
IfNoValueTF={#1}{
boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=1.0pt
}{
boxsep=2.5pt, arc=0pt, outer arc=0pt, boxrule=0pt, leftrule=1pt
},
left=2pt, right=2pt, top=1pt, bottom=1pt, %s
}
[LISTINGS-SETUP]" (or (and (eq how 'fixed-engraved) "unbreakable")
(and (eq how 'boxed-engraved) "breakable")
(user-error "(ab-setup `%S') yells BOOM!" how))))
(setq-local org-export-filter-src-block-functions
'(ab-org-latex-engraved-source-block-filter)))
org-latex-src-block-backend)
;;;###autoload
(defun ab-select-how-and-export-to-latex (main)
"Export Org buffer to LaTeX file after prompting how to export.
In case MAIN is non-nil use org-9.7pre features, or in case MAIN is nil
use org-9.16 features, to export to LaTeX.
The `engraved' source block export backend may lead to defects in
compiled `pdf' for floating listings where vertical line spacing may not
be constant. Option `plain-engraved' selects Org upstream, option
`fixed-engraved' selects a bug work-around, and option `boxed-engraved'
selects a bug amplification which may lead to terrible `pdf' output.
The other choices are `verbatim', `listings', and `minted' to select the
other backends."
(interactive)
(let ((how
(intern-soft
(completing-read
"How: " '(plain-engraved fixed-engraved boxed-engraved
verbatim listings minted)
nil t)))
(seconds 1))
(ab-setup how main)
(run-with-timer seconds nil #'org-latex-export-to-latex)
(if main
(format "#+latex_header: <<%s>>" how)
(format "%% %s" how))))
(provide 'any-backend)
;;; any-backend.el ends here
[-- Attachment #4: any-backend.pdf --]
[-- Type: application/pdf, Size: 85057 bytes --]
[-- Attachment #5: 0001-Unacceptable-engraved-backend-fix.patch --]
[-- Type: application/octet-stream, Size: 3924 bytes --]
From 211db75966232616e43af55672edd78d114172e0 Mon Sep 17 00:00:00 2001
From: Gerard Vermeulen <gerard.vermeulen@posteo.net>
Date: Wed, 14 Feb 2024 18:41:42 +0100
Subject: [PATCH] Unacceptable engraved backend fix
This fixes the unbreakable/breakable for floating/non-floating
listings, but it also requires normalsize font size and visible boxes
around the listings. This makes the patch unacceptable for general
use.
---
lisp/ox-latex.el | 35 ++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index cfa2b8178..6bffe7f1c 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1190,7 +1190,8 @@ will produce
[FVEXTRA-SETUP]
% Make line numbers smaller and grey.
-\\renewcommand\\theFancyVerbLine{\\footnotesize\\color{black!40!white}\\arabic{FancyVerbLine}}
+\\renewcommand\\theFancyVerbLine{
+ \\normalsize\\color{black!40!white}\\arabic{FancyVerbLine}}
\\usepackage{xcolor}
@@ -1200,17 +1201,13 @@ will produce
% Define a Code environment to prettily wrap the fontified code.
\\usepackage[breakable,xparse]{tcolorbox}
-\\DeclareTColorBox[]{Code}{o}%
-{colback=EfD!98!EFD, colframe=EfD!95!EFD,
- fontupper=\\footnotesize\\setlength{\\fboxsep}{0pt},
- colupper=EFD,
- IfNoValueTF={#1}%
- {boxsep=2pt, arc=2.5pt, outer arc=2.5pt,
- boxrule=0.5pt, left=2pt}%
- {boxsep=2.5pt, arc=0pt, outer arc=0pt,
- boxrule=0pt, leftrule=1.5pt, left=0.5pt},
- right=2pt, top=1pt, bottom=0.5pt,
- breakable}
+\\DeclareTColorBox[]{Code}{s}{
+ colback=EfD, colframe=EFD, colupper=EFD,
+ fontupper=\\normalsize\\setlength{\\fboxsep}{0pt},
+ boxsep=2pt, arc=2.5pt, outer arc=2.5pt, boxrule=0.5pt,
+ IfNoValueTF={#1}{unbreakable}{breakable},
+ left=2pt, right=2pt, top=1pt, bottom=0.5pt
+}
[LISTINGS-SETUP]"
"Preamble content injected when using engrave-faces-latex for source blocks.
@@ -3530,13 +3527,18 @@ and FLOAT are extracted from SRC-BLOCK and INFO in `org-latex-src-block'."
(when (eq mathescape 'yes)
(or engrave-faces-latex-mathescape t)))))
-(defun org-latex-src--engrave-code (content lang &optional theme options inline)
+(defun org-latex-src--engrave-code
+ (content lang &optional theme options inline caption)
"Engrave CONTENT to LaTeX in a LANG-mode buffer, and give the result.
When the THEME symbol is non-nil, that theme will be used.
When INLINE is nil, a Verbatim environment wrapped in a Code
environment will be used. When t, a Verb command will be used.
+When CAPTION is nil, make a breakable Code environment for non-floating
+listings. Otherwise, make an unbreakable Code environment for floating
+listings.
+
When OPTIONS is provided, as either a string or list of key-value
pairs accepted by `org-latex--make-option-string', it is passed
to the Verbatim environment or Verb command."
@@ -3568,7 +3570,10 @@ to the Verbatim environment or Verb command."
(engraved-wrapped
(if inline
(concat "\\Verb" engraved-options "{" engraved-code "}")
- (concat "\\begin{Code}\n\\begin{Verbatim}" engraved-options "\n"
+ ;; IME, only caption determines float or non-float.
+ (concat (if caption "\\begin{Code}\n\\begin{Verbatim}"
+ "\\begin{Code}*\n\\begin{Verbatim}")
+ engraved-options "\n"
engraved-code "\n\\end{Verbatim}\n\\end{Code}"))))
(kill-buffer engraved-buffer)
(if theme
@@ -3637,7 +3642,7 @@ and FLOAT are extracted from SRC-BLOCK and INFO in `org-latex-src-block'."
(org-latex-src--engrave-code
content lang
(when engraved-theme (intern engraved-theme))
- options))))
+ options nil caption))))
(concat (car float-env) body (cdr float-env))))
(cl-defun org-latex-src-block--listings
--
2.42.0
^ permalink raw reply related [relevance 17%]
* Re: [Pre-PATCH] Overhaul of the LaTeX preview system
@ 2024-04-18 20:13 9% ` Yaroslav Drachov
0 siblings, 0 replies; 59+ results
From: Yaroslav Drachov @ 2024-04-18 20:13 UTC (permalink / raw)
To: Karthik Chikmagalur; +Cc: orgmode, emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 6122 bytes --]
My system-configuration-features are
"ACL GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM XWIDGETS ZLIB".
RSVG is in the list.
org-latex-preview-check-health diagnostic info:
(:image-converters (("convert" "Version: ImageMagick 7.1.1-29 Q16-HDRI x86_64 21991 https://imagemagick.org" "/usr/local/bin/convert") ("dvisvgm" "dvisvgm 3.2.2" "/Library/TeX/Distributions/Programs/texbin/dvisvgm") ("dvipng" "This is dvipng 1.17 Copyright 2002-2015, 2019 Jan-Ake Larsson" "/Library/TeX/Distributions/Programs/texbin/dvipng")) :latex-processors (("lualatex" "This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)" "/Library/TeX/Distributions/Programs/texbin/lualatex") ("xelatex" "XeTeX 3.141592653-2.6-0.999996 (TeX Live 2024)" "/Library/TeX/Distributions/Programs/texbin/xelatex") ("pdflatex" "pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)" "/Library/TeX/Distributions/Programs/texbin/pdflatex")) :interactive t :org-version "9.7-pre" :modified ((org-latex-preview-appearance-options :foreground auto :background "Transparent" :scale 1.6 :zoom 1.2 :page-width 0.8 :matchers ("begin" "$1" "$" "$$" "\\(" "\\[")) (org-persist-after-read-hook org-element--cache-persist-after-read) (org-latex-engraved-theme . modus-operandi) (org-latex-minted-langs (jupyter-Wolfram\ Language "Wolfram Language") (jupyter-python "python") (emacs-lisp "common-lisp") (cc "c++") (cperl "perl") (shell-script "bash") (caml "ocaml")) (org-persist-before-read-hook org-element--cache-persist-before-read) (org-latex-format-drawer-function . #[514 "\207" [] 3 "
(fn _ CONTENTS)"]) (org-latex-format-headline-function . org-latex-format-headline-default-function) (org-latex-preview-live-debounce . 0.25) (org-latex-preview-process-alist (dvipng :programs ("latex" "dvipng") :description "dvi > png" :message "you need to install the programs: latex and dvipng." :image-input-type "dvi" :image-output-type "png" :latex-compiler ("%l -interaction nonstopmode -output-directory %o %f") :latex-precompiler ("%l -output-directory %o -ini -jobname=%b \"&%L\" mylatexformat.ltx %f") :image-converter ("dvipng --follow -D %D -T tight --depth --height -o %B-%%09d.png %f") :transparent-image-converter ("dvipng --follow -D %D -T tight -bg Transparent --depth --height -o %B-%%09d.png %f")) (dvisvgm :programs ("latex" "dvisvgm") :description "dvi > svg" :message "you need to install the programs: latex and dvisvgm." :image-input-type "dvi" :image-output-type "svg" :latex-compiler ("%l -interaction nonstopmode -output-directory %o %f") :latex-precompiler ("%l -output-directory %o -ini -jobname=%b \"&%L\" mylatexformat.ltx %f") :image-converter ("dvisvgm --page=1- --optimize --clipjoin --relative --no-fonts -v3 --message='processing page {?pageno}: output written to {?svgfile}' --bbox=preview -o %B-%%9p.svg %f")) (imagemagick :programs ("pdflatex" "convert") :description "pdf > png" :message "you need to install the programs: latex and imagemagick." :image-input-type "pdf" :image-output-type "png" :latex-compiler ("pdflatex -interaction nonstopmode -output-directory %o %f") :latex-precompiler ("pdftex -output-directory %o -ini -jobname=%b \"&pdflatex\" mylatexformat.ltx %f") :image-converter ("convert -density %D -trim -antialias %f -quality 100 %B-%%09d.png"))) (org-latex-classes ("tikzposter" "\\documentclass[]{tikzposter}" ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) ("extarticle" "\\documentclass[14pt]{extarticle}" ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) ("article" "\\documentclass[11pt]{article}" ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) ("report" "\\documentclass[11pt]{report}" ("\\part{%s}" . "\\part*{%s}") ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}")) ("book" "\\documentclass[11pt]{book}" ("\\part{%s}" . "\\part*{%s}") ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) (org-latex-engraved-preamble . "\\usepackage{fvextra}
[FVEXTRA-SETUP]
% Make line numbers smaller and grey.
\\renewcommand\\theFancyVerbLine{\\footnotesize\\color{black!40!white}\\arabic{FancyVerbLine}}
\\usepackage{xcolor}
% In case engrave-faces-latex-gen-preamble has not been run.
\\providecolor{EfD}{HTML}{f7f7f7}
\\providecolor{EFD}{HTML}{28292e}
% Define a Code environment to prettily wrap the fontified code.
\\usepackage[breakable,xparse]{tcolorbox}
\\tcbset{nobeforeafter, enlarge top initially by=7pt}
\\DeclareTColorBox[]{Code}{o}%
{colback=EfD!98!EFD, colframe=EfD!95!EFD,
fontupper=\\footnotesize\\setlength{\\fboxsep}{0pt},
colupper=EFD,
IfNoValueTF={#1}%
{boxsep=2pt, arc=2.5pt, outer arc=2.5pt,
boxrule=0.5pt, left=2pt}%
{boxsep=2.5pt, arc=0pt, outer arc=0pt,
boxrule=0pt, leftrule=1.5pt, left=0.5pt},
right=2pt, top=1pt, bottom=0.5pt,
breakable}
[LISTINGS-SETUP]") (org-latex-src-block-backend . engraved) (org-latex-preview-auto-ignored-commands previous-line next-line) (org-latex-preview-process-default . dvipng) (org-latex-caption-above) (org-latex-format-inlinetask-function . org-latex-format-inlinetask-default-function) (org-persist-before-write-hook org-element--cache-persist-before-write) (org-latex-preview-live . t)))
Best wishes,
Yaroslav
> 18 апр. 2024 г., в 23:04, Karthik Chikmagalur <karthikchikmagalur@gmail.com> написал(а):
>
> system-configuration-features
[-- Attachment #2: Type: text/html, Size: 7967 bytes --]
^ permalink raw reply [relevance 9%]
* Re: [PATCH] lisp/org.el: Obsolete `org-cached-entry-get' in favor of `org-entry-get'
@ 2024-05-01 17:14 7% ` Morgan Smith
0 siblings, 0 replies; 59+ results
From: Morgan Smith @ 2024-05-01 17:14 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 1063 bytes --]
Ihor Radchenko <yantar92@posteo.net> writes:
>
> However, please move the obsolete function definition to org-compat
> instead of removing it completely. We do it to avoid unexpected breakage
> for people and libraries who happen to use this public function.
Done. See attached
> Also, with the old approach, if you observe slowdowns, you likely have
> some property being calculated slowly (like BLOCKED in my case). Do you
> happen to know which property is it for your setup?
According to my profiler, I think it's using 30% of the CPU time during
my custom org-clock-sum just to get ITEM. I suppose it's because it
thinks it has to grab and cache everything when all I'm after is ITEM.
I don't see anything else that looks suspicious in the profiler so I
suspect you're seeing a much worse case then I am. I'll copy paste my
previous performance numbers here again just so you can see my slowdown
is only between 1.5x and 3x.
org-cached-entry-get
1st run: 26.868990287
2nd run: 16.043983143
org-entry-get
1st run: 18.209056578
2nd run: 5.003186764
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Obsolete-org-cached-entry-get-in-favor-of-org-entry-.patch --]
[-- Type: text/x-patch, Size: 3679 bytes --]
From 5d9cef1250ef1eb656b84d3168ebfecb0e9c9c5c Mon Sep 17 00:00:00 2001
From: Morgan Smith <Morgan.J.Smith@outlook.com>
Date: Wed, 1 May 2024 12:36:40 -0400
Subject: [PATCH] Obsolete `org-cached-entry-get' in favor of `org-entry-get'
We have a better performing cache mechanism in `org-entry-get'.
* lisp/org.el (org-make-tags-matcher): Replace uses of
`org-cached-entry-get' with `org-entry-get'.
(org-cached-entry-get): Move to ...
* lisp/org-compat.el (org-cached-entry-get): ... here. Obsolete in
favor of `org-entry-get'.
---
lisp/org-compat.el | 20 ++++++++++++++++++++
lisp/org.el | 20 ++------------------
2 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index 11eb905ee..b73cfc910 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -649,6 +649,26 @@ Counting starts at 1."
(define-obsolete-variable-alias 'org-plantuml-executable-args 'org-plantuml-args
"Org 9.6")
+(defvar org-cached-props nil)
+(defun org-cached-entry-get (pom property)
+ (if (or (eq t org-use-property-inheritance)
+ (and (stringp org-use-property-inheritance)
+ (let ((case-fold-search t))
+ (string-match-p org-use-property-inheritance property)))
+ (and (listp org-use-property-inheritance)
+ (member-ignore-case property org-use-property-inheritance)))
+ ;; Caching is not possible, check it directly.
+ (org-entry-get pom property 'inherit)
+ ;; Get all properties, so we can do complicated checks easily.
+ (cdr (assoc-string property
+ (or org-cached-props
+ (setq org-cached-props (org-entry-properties pom)))
+ t))))
+
+(make-obsolete 'org-cached-entry-get
+ "Performs badly. Instead use `org-entry-get' with the argument INHERIT set to `selective'"
+ "9.7")
+
(defconst org-latex-line-break-safe "\\\\[0pt]"
"Linebreak protecting the following [...].
diff --git a/lisp/org.el b/lisp/org.el
index 2d1a2055f..36b52b0ab 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -11480,22 +11480,6 @@ are also TODO tasks."
(defalias 'org-tags-sparse-tree 'org-match-sparse-tree)
-(defvar org-cached-props nil)
-(defun org-cached-entry-get (pom property)
- (if (or (eq t org-use-property-inheritance)
- (and (stringp org-use-property-inheritance)
- (let ((case-fold-search t))
- (string-match-p org-use-property-inheritance property)))
- (and (listp org-use-property-inheritance)
- (member-ignore-case property org-use-property-inheritance)))
- ;; Caching is not possible, check it directly.
- (org-entry-get pom property 'inherit)
- ;; Get all properties, so we can do complicated checks easily.
- (cdr (assoc-string property
- (or org-cached-props
- (setq org-cached-props (org-entry-properties pom)))
- t))))
-
(defun org-global-tags-completion-table (&optional files)
"Return the list of all tags in all agenda buffer/files.
Optional FILES argument is a list of files which can be used
@@ -11670,7 +11654,7 @@ See also `org-scan-tags'."
("CATEGORY"
'(org-get-category (point)))
("TODO" 'todo)
- (p `(org-cached-entry-get nil ,p))))
+ (p `(org-entry-get (point) ,p 'selective))))
;; Determine operand (aka. property
;; value).
(pv (match-string 8 term))
@@ -11707,7 +11691,7 @@ See also `org-scan-tags'."
(setq term rest)))
(push `(and ,@tagsmatcher) orlist)
(setq tagsmatcher nil))
- (setq tagsmatcher `(progn (setq org-cached-props nil) (or ,@orlist)))))
+ (setq tagsmatcher `(or ,@orlist))))
;; Make the TODO matcher.
(when (org-string-nw-p todomatch)
--
2.41.0
^ permalink raw reply related [relevance 7%]
* Re: SMART goals and bolding the first letter
@ 2024-05-27 16:21 8% ` Dr. Arne Babenhauserheide
0 siblings, 0 replies; 59+ results
From: Dr. Arne Babenhauserheide @ 2024-05-27 16:21 UTC (permalink / raw)
To: Sharon Kimble; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 871 bytes --]
Sharon Kimble <boudiccas@skimble09.plus.com> writes:
> How can I bold the first letter of a word please? I'm trying to do this -
>
> ````
> - - *S*pecific - You don’t want a vague goal.
> ````
>
> Its part of a section explaining SMART goals.
>
> Any ideas please?
I don’t know a pure org method, but if this is for LaTeX, you can use:
@@latex:\textbf{@@S@@latex:}\nobreak\hspace{0pt}@@pecific.
(for the cleaner looking method: https://tex.stackexchange.com/a/267806 )
If this is HTML, you can CSS it:
#+html: <style>.first-letter-bold li::first-letter {font-weight: bold}</style>
#+attr_html: :class first-letter-bold
- Specific
- Measurable
- ...
See https://developer.mozilla.org/en-US/docs/Web/CSS/::first-letter
Best wishes,
Arne
--
Unpolitisch sein
heißt politisch sein,
ohne es zu merken.
draketo.de
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]
^ permalink raw reply [relevance 8%]
* Re: figures not exported properly by ox-latex
2024-02-02 11:39 8% figures not exported properly by ox-latex mahmood sheikh
@ 2024-07-09 20:15 0% ` Karthik Chikmagalur
2024-07-11 8:39 0% ` mahmood sheikh
0 siblings, 1 reply; 59+ results
From: Karthik Chikmagalur @ 2024-07-09 20:15 UTC (permalink / raw)
To: mahmood sheikh, emacs-orgmode
> im on tecosaur's dev branch (version 9.7-pre)
> i have the following in an org file:
> ```org
> #+name: fig-switching-circuit-1
> #+caption: implementation of \(p\)
> [[attachment:circuit.svg]]
> ```
> it gets turned into this
> ```
> \includesvg[width=.9\linewidth]{/home/mahmooz/brain/notes/data/9e/5ba2ce-c383-4396-a2cb-891465f14d51/circuit}\\[0pt]
> ```
Cannot reproduce. I get the following:
\begin{figure}[htbp]
\centering
\includesvg[width=.9\linewidth]{/tmp/circuit}
\caption{\label{fig-switching-circuit-1}implementation of \(p\)}
\end{figure}
Perhaps you have customized the LaTeX export process in some way? Also
note that we don't touch any of the LaTeX generation code in ox-latex
except the parts handling LaTeX preview images.
Karthik
^ permalink raw reply [relevance 0%]
* Re: figures not exported properly by ox-latex
2024-07-09 20:15 0% ` Karthik Chikmagalur
@ 2024-07-11 8:39 0% ` mahmood sheikh
0 siblings, 0 replies; 59+ results
From: mahmood sheikh @ 2024-07-11 8:39 UTC (permalink / raw)
To: Karthik Chikmagalur; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 1277 bytes --]
it might've been fixed for figures as its been a while, but shouldnt latex
environments with #+caption: and #+name: above them be exported as figures?
because currently the user has to write \begin{figure} and \end{figure}
explicitly which would work but may not be as practical for other ox
backends like html i think? perhaps im wrong.
On Tue, Jul 9, 2024 at 11:15 PM Karthik Chikmagalur <
karthikchikmagalur@gmail.com> wrote:
> > im on tecosaur's dev branch (version 9.7-pre)
> > i have the following in an org file:
> > ```org
> > #+name: fig-switching-circuit-1
> > #+caption: implementation of \(p\)
> > [[attachment:circuit.svg]]
> > ```
> > it gets turned into this
> > ```
> >
> \includesvg[width=.9\linewidth]{/home/mahmooz/brain/notes/data/9e/5ba2ce-c383-4396-a2cb-891465f14d51/circuit}\\[0pt]
> > ```
>
> Cannot reproduce. I get the following:
>
> \begin{figure}[htbp]
> \centering
> \includesvg[width=.9\linewidth]{/tmp/circuit}
> \caption{\label{fig-switching-circuit-1}implementation of \(p\)}
> \end{figure}
>
> Perhaps you have customized the LaTeX export process in some way? Also
> note that we don't touch any of the LaTeX generation code in ox-latex
> except the parts handling LaTeX preview images.
>
> Karthik
>
[-- Attachment #2: Type: text/html, Size: 1651 bytes --]
^ permalink raw reply [relevance 0%]
* [BUG] wrong side of point [9.7.13 (9.7.13-8566bc @ /Users/jaydixit/.emacs.d/elpa/develop/org-9.7.13/)]
@ 2024-10-24 16:00 10% Jay Dixit
0 siblings, 0 replies; 59+ results
From: Jay Dixit @ 2024-10-24 16:00 UTC (permalink / raw)
To: org-mode org
[-- Attachment #1: Type: text/plain, Size: 106915 bytes --]
Emacs : GNU Emacs 29.1 (build 1, aarch64-apple-darwin23.6.0, Carbon
Version 170 AppKit 2487.7)
of 2024-08-22
Package: Org mode version 9.7.13 (9.7.13-8566bc @
/Users/jaydixit/.emacs.d/elpa/develop/org-9.7.13/)
current state:
==============
(setq
org-agenda-prefix-format '((agenda .
" %?-12t% s")
(timeline . " % s")
(todo . " %i %-12:c")
(tags . " %i %-12:c")
(search .
" %i %-12:c")
)
org-archive-location "archive/%s_archive::"
org-roam-db-location "/Users/jay/dropbox/roam/org-roam.db"
org-link-elisp-confirm-function 'yes-or-no-p
org-hierarchical-todo-statistics nil
org-directory "~/Dropbox/writing/notationaldata/"
org-hide-emphasis-markers t
org-bibtex-headline-format-function 'org-bibtex-headline-format-default
org-yank-adjusted-subtrees t
org-twbs-htmlize-output-type 'css
org-attach-id-to-path-function-list '(org-attach-id-ts-folder-format
org-attach-id-uuid-folder-format)
org-roam-dailies-capture-templates '(("j"
"default"
entry
"* %?"
:target
(file+head
"%<%Y-%m-%d>.org" "#+TITLE:
%<%Y-%m-%d>\n#+FILETAGS: :journal:\n- Links :: \n\n* %<%A, %B %d,
%Y>\n\n\n** Today [0/1]\n")
)
)
org-agenda-custom-commands '(("r" "Review items"
agenda ""
((org-agenda-skip-function
'(org-agenda-skip-entry-if 'notregexp
"::review::")
)
(org-agenda-prefix-format " %i
%-12:c%?-12t% s")
(org-agenda-overriding-header "Items to
review")
)
)
("n"
"Agenda and all TODOs"
((agenda "")
(alltodo "")
)
)
)
org-twbs-format-drawer-function '(lambda
(name contents)
contents)
org-startup-folded nil
org-babel-after-execute-hook '(spacemacs/ob-fix-inline-images)
org-startup-align-all-tables t
org-roam-node-display-template #("${title:*} ${tags:15}" 11 21 (face
org-tag))
org-indent-mode-turns-on-hiding-stars nil
org-persist-after-read-hook '(org-element--cache-persist-after-read)
org-latex-toc-command "\\tableofcontents\n\\newpage\n"
org-refile-targets '((my-org-files-list
:maxlevel . 4)
)
org-roam-file-exclude-regexp '("data/")
org-export-before-parsing-hook '(org-export-id-link-removal
(lambda
(backend)
(replace-regexp "^\\([A-Za-z]+:\\)\\([^/]\\|/[^/]\\|$\\)" "*\\1*\\2")
)
org-attach-expand-links)
org-clone-delete-id t
org-cycle-tab-first-hook '(yas-org-very-safe-expand
org-babel-hide-result-toggle-maybe org-babel-header-arg-expand)
org-tag-alist '(("important" . 105)
("urgent" . 117))
org-html-doctype "html5"
org-default-notes-file "~/Dropbox/writing/notationaldata/notes.txt"
org-export-async-init-file
"/Users/jaydixit/.emacs.d/layers/+emacs/org/local/org-async-init.el"
org-roam-find-file-hook '(org-roam-buffer--setup-redisplay-h
org-roam--register-completion-functions-h
org-roam--replace-roam-links-on-save-h
org-roam-db-autosync--setup-update-on-save-h)
org-refile-use-outline-path t
org-publish-timestamp-directory "~/.emacs.d/.cache/.org-timestamps/"
org-transclusion-after-add-functions
'(org-translusion-indent-add-properties)
org-finalize-agenda-hook '((lambda nil
(remove-text-properties
(point-min)
(point-max)
'(mouse-face t))
)
)
org-archive-hook '(my/org-archive-file
org-attach-archive-delete-maybe)
org-html-postamble nil
org-edit-src-content-indentation 4
org-ascii-format-drawer-function #[771 " \207" [] 4 "\n\n(fn NAME CONTENTS
WIDTH)"]
org-cycle-hook '(org-cycle-hide-archived-subtrees
org-cycle-show-empty-lines
org-cycle-optimize-window-after-visibility-change
org-cycle-display-inline-images)
org-clocktable-defaults '(:maxlevel 3 :lang "en"
:scope file :block nil
:wstart 1 :mstart 1
:tstart nil :tend nil
:step nil :stepskip0
nil :fileskip0 nil
:tags nil :emphasize
nil :link nil :narrow
40! :indent t :formula
nil :timestamp nil
:level nil :tcolumns
nil :formatter nil)
org-enforce-todo-checkbox-dependencies t
org-export-with-clocks t
org-persist-before-read-hook '(org-element--cache-persist-before-read)
org-font-lock-set-keywords-hook '(org-transclusion-font-lock-set)
org-cycle-emulate-tab nil
org-twbs-preamble nil
org-modules '(org-habit ol-doi ol-w3m ol-bbdb
ol-bibtex ol-docview ol-gnus
ol-info ol-irc ol-mhe ol-rmail
ol-eww)
org-yank-image-file-name-function 'org-yank-image-autogen-filename
org-image-actual-width nil
org-mode-hook '((lambda nil
(setq captain-predicate
#'(lambda nil t))
)
capitalist-mode-on
context-menu-mode
(lambda nil (redbold))
(lambda nil
(add-hook
'window-configuration-change-hook
'activate-olivetti-in-split nil t)
)
(lambda nil
(org-superstar-mode 1))
#[0 "\301\211 \207"
[imenu-create-index-function
org-imenu-get-tree]
2]
(lambda nil
(define-key org-mode-map
(kbd "DEL")
'new-org-delete-backward-char)
)
wrap-region-mode
(lambda nil (auto-fill-mode -1))
turn-on-visual-line-mode
flycheck-mode
(lambda nil
(flyspell-lazy-mode 1))
turn-on-flyspell dubcaps-mode
org-clock-load org-tempo-setup
(lambda nil
(make-variable-buffer-local
'yas--trigger-key)
(setq yas-trigger-key [tab])
(add-to-list
'org-tab-first-hook
'yas-org-very-safe-expand)
(define-key yas-keymap [tab]
'yas-next-field)
)
wc-mode hl-todo-mode
setup-org-mode-keys
#[0 "\300\301\302\303\304$\207"
[add-hook
change-major-mode-hook
org-fold-show-all append
local]
5]
#[0 "\300\301\302\303\304$\207"
[add-hook
change-major-mode-hook
org-babel-show-result-all
append local]
5]
org-babel-result-hide-spec
org-babel-hide-all-hashes
flyspell-mode
spacemacs/load-yasnippet
toc-org-enable
org-superstar-mode
dotspacemacs//prettify-spacemacs-docs)
org-babel-load-languages '((python . t)
(emacs-lisp . t))
org-src-window-setup 'current-window
org-ctrl-k-protect-subtree t
org-id-locations-file "~/.emacs.d/.cache/.org-id-locations"
org-highlight-links '(bracket plain radio tag
date footnote)
org-transclusion-include-first-section nil
org-html-head "<style
type=\"text/css\">\n<!--/*--><![CDATA[/*><!--*/\nbody, p, h1, h2, h3, h4,
h5, h6, a, li, span, div {\n font-family: \"Helvetica Neue\", Helvetica,
sans-serif !important;\n font-size: 13px
!important;\n}\n/*]]>*/-->\n</style>\n"
org-roam-ref-annotation-function 'org-roam-ref-read--annotation
org-roam-directory "/Users/jaydixit/Dropbox/roam"
org-twbs-format-inlinetask-function 'ignore
org-export-allow-bind-keywords t
org-latex-format-drawer-function '(closure
(engrave-faces-latex-mathescape
engrave-faces-current-preset-style engrave-faces-latex-output-style t)
(_ contents)
contents)
org-ellipsis " 🪜 "
org-custom-properties '(">")
org-roam-db-node-include-function #[0 "\300\207" [t] 1]
org-export-exclude-tags '("noexport" "extra")
org-latex-format-headline-function
'org-latex-format-headline-default-function
org-confirm-shell-link-function 'yes-or-no-p
org-present-mode-hook '(spacemacs//org-present-start)
org-projectile-per-project-filepath "TODOs.org"
org-export-with-section-numbers nil
org-present-mode-quit-hook '(spacemacs//org-present-end)
org-tempo-keywords-alist '(("l " .
"src emacs-lisp ")
("H" . "html")
("A" . "ascii")
("i" . "index"))
org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"]
outline-isearch-open-invisible-function 'outline-isearch-open-invisible
org-roam-dailies-directory "journal/"
org-startup-indented t
org-export-before-processing-hook '(my-org-inline-css-hook)
org-ascii-headline-spacing '(1 . 1)
org-latex-classes '(("blue-invoice-letterhead"
"\n\n\\documentclass[12pt]{article}\n\\usepackage[includeheadfoot,margin=1.0in,hmargin=1.0in,vmargin=0.5in]{geometry}\n\\usepackage{float}\n\\usepackage{changepage}\n\n\\usepackage{algorithm}\n\\usepackage{amsmath}\n\\usepackage{ifxetex}\n\\ifxetex\n
\\usepackage{fontspec,xltxtra,xunicode}\n
\\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}\n\n\\usepackage{fontspec}\n\n%
define Helvetica Now font weights\n\\setmainfont{HelveticaNow}[\n Path =
/Users/jay/Library/Fonts/,\n UprightFont = HelveticaNowText-Light,\n
BoldFont = HelveticaNowDisplay-Bold,\n ItalicFont =
HelveticaNowText-LightItalic,\n BoldItalicFont =
HelveticaNowDisplay-BoldIta,\n Extension =
.ttf\n]\n\n\\setromanfont{HelveticaNowText-Light}\n\\setsansfont{HelveticaNowDisplay-Regular}\n\n%
define sans font\n\\setsansfont{Helvetica Neue LT Pro}[\n Path =
/Users/jay/Library/Fonts/,\nUprightFont = HelveticaNeueLTPro-MdCn,\n
BoldFont = HelveticaNeueLTPro-BdCn,\n Extension =
.otf\n]\n\n\\newfontfamily{\\thindisplayfont}{HelveticaNowDisplay-Light}\n\\setmonofont{Myriad
Pro}\n\n\n\\usepackage{fancyhdr}\n\\pagestyle{fancy}\n\\renewcommand{\\headrulewidth}{0pt}
% Removes the default horizontal\n\n\\else\n
\\usepackage[mathletters]{ucs}\n
\\usepackage[utf8x]{inputenc}\n\\fi\n\\usepackage{url}\n\\usepackage{paralist}\n\\usepackage{graphicx}\n%\\usepackage{tikz}\n\\usepackage{calc}\n\\usepackage{eso-pic}\n\\usepackage{etoolbox}\n\\usepackage{xcolor}\n\\PassOptionsToPackage{hyperref,x11names}{xcolor}\n\\definecolor{pinterestred}{HTML}{C92228}\n\\definecolor{ulyssesbutterflyblue}{HTML}{1464F4}\n\\definecolor{signalflare}{HTML}{FB782C}\n\\definecolor{niceorange}{HTML}{77CC6D}\n\\definecolor{ghostlygrey}{HTML}{000000}\n\\definecolor{firstcolor}{HTML}{00ADEF}\n\\definecolor{secondcolor}{HTML}{DD3E74}\n\\definecolor{periodblue}{HTML}{12239e}\n\\definecolor{denimblue}{HTML}{3A5F90}\n\\definecolor{electricblue}{HTML}{05ADF3}\n\\definecolor{resonateblue}{HTML}{005778}\n\\definecolor{resonateorange}{HTML}{da7635}\n\\definecolor{resonategrey}{HTML}{4d4d4c}\n\\definecolor{nliblue}{HTML}{2f9ed3}\n\\definecolor{elegantblue}{HTML}{1792d1}\n\\definecolor{ideablue}{HTML}{55C1E7}\n\\definecolor{libertyblue}{HTML}{73b0be}\n\\definecolor{darklibertyblue}{HTML}{19455b}\n\n\n\\newtoks\\leftheader\n\\newtoks\\leftheaderurl\n\\newtoks\\coverimage\n\\newtoks\\rightheader\n\n\\raggedright\n\\hyphenpenalty=5000\n\\tolerance=1000\n\n\n\\renewcommand{\\contentsname}{Invoice}\n\n\n\n%This
macro is to make cleaner the specification of the titling
font\n\\newfontfamily\\mytitlefont[Color={libertyblue}]{Arial}\n\\newfontfamily\\myauthorfont[Color={libertyblue}]{Arial}\n\\newfontfamily\\mybluefont[Color=libertyblue]{Arial}\n\n%Define
Bold
face\n\\DeclareTextFontCommand{\\textbf}{\\sffamily\\bfseries}\n\\DeclareTextFontCommand{\\textit}{\\itshape}\n\n\\usepackage{textcase}\n\n\\pagenumbering{arabic}\n\\makeatletter\n\n\n\\setcounter{secnumdepth}{0}\n\n\n\\usepackage[labelformat=empty]{caption}\n\n\n\\usepackage{fancyhdr}\n\\pagestyle{fancy}\n\\renewcommand{\\headrulewidth}{0pt}
% Removes the default horizontal line in the header\n\n\n\\fancyhead[C]{%\n
\\begin{minipage}[c][1in][c]{1\\linewidth}\n
\\includegraphics[height=1in,keepaspectratio]{/Users/jay/Dropbox/github/
incandescentman.github.io/assets/images/2023-10-final-new-logo_high-res-no-text.png}\n
\\end{minipage}%\n \\hspace{0in} % Reducing space to 0 inches between the
logo and the text\n \\begin{minipage}[c][1in][c]{0.3\\linewidth}\n
\\raggedright % Left-align the text in the minipage\n
\\raisebox{0.59in}[0pt][0pt]{ % Raise the text by 0.7 inches\n
{\\fontsize{73}{82}\\sffamily\\color{darklibertyblue} STORYTELLING.NYC}\n
}\n \\end{minipage}%\n \\hspace{2.7in} % Move the text 1 inch to the
left\n}\n\n\n\n\\rhead{}\n\\lfoot{}\n\\cfoot{}\n\\rfoot{}\n\n\n\\usepackage{listings}\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{12pt
plus 2pt minus 1pt} % space between paragraphs\n\n% spacing: how to read
{12pt plus 4pt minus 2pt}\n% 12pt is what we would like the
spacing to be\n% plus 4pt means that TeX can stretch it by at
most 4pt\n% minus 2pt means that TeX can shrink it by at most
2pt\n% This is one example of the concept of, 'glue', in
TeX\n\n\\usepackage{fancyvrb}\n\\usepackage{enumerate}\n\\usepackage{ctable}\n\\setlength{\\paperwidth}{8.5in}\n\\setlength{\\paperheight}{11in}\n
\\tolerance=1000\n\\usepackage{tocloft}\n\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}\n\\usepackage[normalem]{ulem}\n\n\n\\makeatletter\n\\newcommand{\\globalcolor}[1]{%\n
\\color{#1}\\global\\let\\default@color\\current@color\n}\n\\makeatother\n\n\\newcommand{\\textsubscr}[1]{\\ensuremath{_{\\scriptsize\\textrm{#1}}}}\n\n\\usepackage{enumitem}\n\n\\newlist{mylist}{enumerate}{10}\n\n\n%
control line spacing in bulleted list\n\\setlist{noitemsep, topsep=-8pt,
after=\\vspace{12pt}} % for no spacing between list items\n% see:
https://tex.stackexchange.com/questions/199118/modifying-whitespace-before-and-after-list-separately-using-enumitem-package\n%\\setlist{topsep=0pt}
% for a line between list items\n\n\n\\renewcommand{\\labelitemi}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiv}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemv}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvi}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemviii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemix}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemx}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\n\\setlistdepth{10}\n\\setlist[itemize,1]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,2]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,3]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,4]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,5]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,6]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,7]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,8]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,9]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,10]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\renewlist{itemize}{itemize}{10}\n\n\n\n\n\n\\definecolor{azure}{HTML}{f2feff}\n\n\\usepackage{lipsum}\n\\usepackage{tikz}\n\\usetikzlibrary{backgrounds}\n\\makeatletter\n\n\\tikzset{%\n
fancy quotes/.style={\n text width=\\fq@width pt,\n align=justify,\n
inner sep=1em,\n anchor=north west,\n minimum width=\\linewidth,\n
},\n fancy quotes width/.initial={.8\\linewidth},\n fancy quotes
marks/.style={\n scale=8,\n text=black,\n inner sep=0pt,\n },\n
fancy quotes opening/.style={\n fancy quotes marks,\n },\n fancy
quotes closing/.style={\n fancy quotes marks,\n },\n fancy quotes
background/.style={\n show background rectangle,\n inner frame
xsep=0pt,\n background rectangle/.style={\n fill=azure,\n
rounded corners,\n },\n
}\n}\n\n\\newenvironment{fancyquotes}[1][]{%\n\\noindent\n\\tikzpicture[fancy
quotes background]\n\\node[fancy quotes opening,anchor=north west] (fq@ul)
at (0,0) {``};\n\\tikz@scan@one@point\\pgfutil@firstofone(fq@ul.east
)\n\\pgfmathsetmacro{\\fq@width}{\\linewidth - 2*\\pgf@x}\n\\node[fancy
quotes,#1] (fq@txt) at (fq@ul.north west)
\\bgroup}\n{\\egroup;\n\\node[overlay,fancy quotes closing,anchor=east] at
(fq@txt.south east)
{''};\n\\endtikzpicture}\n\\makeatother\n\n%\\setlength{\\intextsep}{10pt
plus 1.0pt minus 2.0pt}\n\n\\newenvironment{indentedsection}\n
{\\adjustwidth{2em}{0pt}}\n
{\\endadjustwidth}\n\n\n\\usepackage{setspace}\n\\usepackage{lipsum}\n\\usepackage{etoolbox}\n\\AtBeginEnvironment{quote}{\\singlespace\\vspace{-\\topsep}\\small}\n\\AtEndEnvironment{quote}{\\vspace{-\\topsep}\\endsinglespace}\n\n\n\\usepackage[sc]{titlesec}\n\n\n\\newlength\\TitleOverhang\n\\setlength\\TitleOverhang{1.5cm}\n\n\\newcommand\\Overhang[1]{%\n
\\llap{\\makebox[\\TitleOverhang][l]{#1}}%\n}\n\n\n%
\\titlespacing{command}{left spacing}{before spacing}{after
spacing}[right]\n\\titlespacing*{\\section}{0pt}{24pt}{-6pt}\n\\titlespacing*{\\subsection}{0pt}{16pt}{-6pt}\n\\titlespacing*{\\subsubsection}{0pt}{6pt}{-6pt}\n\n\n\\titleformat*{\\section}{\\sffamily\\bfseries\\fontsize{30}{20}\\raggedright\\sffamily\\scshape\\color{libertyblue}}\n\\titleformat*{\\subsection}{\\sffamily\\fontsize{18}{15}\\raggedright\\scshape\\color{libertyblue}}\n\\titleformat*{\\subsubsection}{\\sffamily\\bfseries\\fontsize{14}{16}\\raggedright\\sffamily\\color{libertyblue}}\n\\titleformat*{\\paragraph}{\\sffamily\\fontsize{13}{12}\\raggedright\\bfseries\\color{libertyblue}}\n\\titleformat*{\\subparagraph}{\\sffamily\\fontsize{14}{14}\\raggedright\\bfseries\\ttfamily\\color{libertyblue}}\n\n\n\\DeclareTextFontCommand{\\nonsection}{\\sffamily\\fontsize{19}{19}\\raggedright\\sffamily\\textlf\\color{libertyblue}
}\n\n\\DeclareTextFontCommand{\\nonsubsection}{\\sffamily\\fontsize{18}{15}\\raggedright\\scshape\\color{libertyblue}}\n\n\\DeclareTextFontCommand{\\nonsubsubsection}{\\sffamily\\itshape\\fontsize{14}{14}\\raggedright\\sffamily\\color{libertyblue}
}\n\n\n\\usepackage[breaklinks=true,linktocpage,xetex]{hyperref}\n\\hypersetup{colorlinks,
citecolor=libertyblue,filecolor=libertyblue,linkcolor=libertyblue,urlcolor=libertyblue}\n\n\\renewcommand\\maketitle{}\n\n\n
[NO-DEFAULT-PACKAGES]\n [NO-PACKAGES]"
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" .
"\\paragraph*{%s}")
("\\subparagraph{%s}" .
"\\subparagraph*{%s}")
)
("blue-invoice"
"\n\n\\documentclass[12pt]{article}\n\\usepackage[includeheadfoot,margin=1.0in,hmargin=1.0in,vmargin=0.5in]{geometry}\n\\usepackage{float}\n\\usepackage{changepage}\n\n\\usepackage{algorithm}\n\\usepackage{amsmath}\n\\usepackage{ifxetex}\n\\ifxetex\n
\\usepackage{fontspec,xltxtra,xunicode}\n
\\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}\n\n\n% define
Helvetica Now font weights\n\\setmainfont{EBGaramond}[\n Path =
/Users/jay/Library/Fonts/,\n UprightFont = HelveticaNowText-Light,\n
BoldFont = HelveticaNowDisplay-Bold,\n ItalicFont =
HelveticaNowText-LightItalic,\n BoldItalicFont =
HelveticaNowDisplay-BoldIta,\n Extension =
.ttf\n\n\\setromanfont{HelveticaNowText-Light}\n\\setsansfont{HelveticaNowDisplay-Regular}\n\\newfontfamily{\\thindisplayfont}{HelveticaNowDisplay-Light}\n\\setmonofont{Myriad
Pro}\n\\else\n \\usepackage[mathletters]{ucs}\n
\\usepackage[utf8x]{inputenc}\n\\fi\n\\usepackage{url}\n\\usepackage{paralist}\n\\usepackage{graphicx}\n\\setkeys{Gin}{resolution=72}\n\\usepackage{tikz}\n\\usepackage{calc}\n\\usepackage{eso-pic}\n\\usepackage{etoolbox}\n\\usepackage{xcolor}\n\\PassOptionsToPackage{hyperref,x11names}{xcolor}\n\\definecolor{pinterestred}{HTML}{C92228}\n\\definecolor{ulyssesbutterflyblue}{HTML}{1464F4}\n\\definecolor{signalflare}{HTML}{FB782C}\n\\definecolor{niceorange}{HTML}{77CC6D}\n\\definecolor{ghostlygrey}{HTML}{000000}\n\\definecolor{firstcolor}{HTML}{00ADEF}\n\\definecolor{secondcolor}{HTML}{DD3E74}\n\\definecolor{periodblue}{HTML}{12239e}\n\\definecolor{denimblue}{HTML}{3A5F90}\n\\definecolor{electricblue}{HTML}{05ADF3}\n\\definecolor{resonateblue}{HTML}{005778}\n\\definecolor{resonateorange}{HTML}{da7635}\n\\definecolor{resonategrey}{HTML}{4d4d4c}\n\\definecolor{nliblue}{HTML}{2f9ed3}\n\\definecolor{elegantblue}{HTML}{1792d1}\n\\definecolor{ideablue}{HTML}{55C1E7}\n\\definecolor{libertyblue}{HTML}{73b0be}\n\n\n\\newtoks\\leftheader\n\\newtoks\\leftheaderurl\n\\newtoks\\coverimage\n\\newtoks\\rightheader\n\n\\raggedright\n\\hyphenpenalty=5000\n\\tolerance=1000\n\n\n\\renewcommand{\\contentsname}{Invoice}\n\n\n\n%This
macro is to make cleaner the specification of the titling
font\n\\newfontfamily\\mytitlefont[Color={highlighteryellow}]{Arial}\n\\newfontfamily\\myauthorfont[Color={highlighteryellow}]{Arial}\n\\newfontfamily\\mybluefont[Color=libertyblue]{Arial}\n\n%Define
Bold
face\n\\DeclareTextFontCommand{\\textbf}{\\sffamily\\bfseries}\n\\DeclareTextFontCommand{\\textit}{\\itshape}\n\n\\usepackage{textcase}\n\n\\pagenumbering{arabic}\n\\makeatletter\n\n\n\\setcounter{secnumdepth}{0}\n\n\n\\usepackage[labelformat=empty]{caption}\n\n\\usepackage{fancyhdr}\n\\pagestyle{fancy}\n\\renewcommand{\\sectionmark}[1]{\\markboth{#1}{}}\n\\lhead{\\href{\\the\\leftheaderurl}{\\the\\leftheader}}\n\\chead{}\n\\rhead{Invoice:
\\@title\\
{\\nouppercase{\\the\\rightheader}}}\n\\lfoot{}\n\\cfoot{}\n\\rfoot{}\n\n\n\n\n\\usepackage{listings}\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{12pt
plus 2pt minus 1pt} % space between paragraphs\n\n% spacing: how to read
{12pt plus 4pt minus 2pt}\n% 12pt is what we would like the
spacing to be\n% plus 4pt means that TeX can stretch it by at
most 4pt\n% minus 2pt means that TeX can shrink it by at most
2pt\n% This is one example of the concept of, 'glue', in
TeX\n\n\\usepackage{fancyvrb}\n\\usepackage{enumerate}\n\\usepackage{ctable}\n\\setlength{\\paperwidth}{8.5in}\n\\setlength{\\paperheight}{11in}\n
\\tolerance=1000\n\\usepackage{tocloft}\n\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}\n\\usepackage[normalem]{ulem}\n\n\n\\makeatletter\n\\newcommand{\\globalcolor}[1]{%\n
\\color{#1}\\global\\let\\default@color\\current@color\n}\n\\makeatother\n\n\\newcommand{\\textsubscr}[1]{\\ensuremath{_{\\scriptsize\\textrm{#1}}}}\n\n\\usepackage{enumitem}\n\n\\newlist{mylist}{enumerate}{10}\n\n\n%
control line spacing in bulleted list\n\\setlist{noitemsep, topsep=-8pt,
after=\\vspace{12pt}} % for no spacing between list items\n% see:
https://tex.stackexchange.com/questions/199118/modifying-whitespace-before-and-after-list-separately-using-enumitem-package\n%\\setlist{topsep=0pt}
% for a line between list items\n\n\n\\renewcommand{\\labelitemi}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiv}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemv}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvi}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemviii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemix}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemx}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\n\\setlistdepth{10}\n\\setlist[itemize,1]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,2]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,3]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,4]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,5]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,6]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,7]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,8]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,9]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,10]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\renewlist{itemize}{itemize}{10}\n\n\n\n\n\n\\definecolor{azure}{HTML}{f2feff}\n\n\\usepackage{lipsum}\n\\usepackage{tikz}\n\\usetikzlibrary{backgrounds}\n\\makeatletter\n\n\\tikzset{%\n
fancy quotes/.style={\n text width=\\fq@width pt,\n align=justify,\n
inner sep=1em,\n anchor=north west,\n minimum width=\\linewidth,\n
},\n fancy quotes width/.initial={.8\\linewidth},\n fancy quotes
marks/.style={\n scale=8,\n text=black,\n inner sep=0pt,\n },\n
fancy quotes opening/.style={\n fancy quotes marks,\n },\n fancy
quotes closing/.style={\n fancy quotes marks,\n },\n fancy quotes
background/.style={\n show background rectangle,\n inner frame
xsep=0pt,\n background rectangle/.style={\n fill=azure,\n
rounded corners,\n },\n
}\n}\n\n\\newenvironment{fancyquotes}[1][]{%\n\\noindent\n\\tikzpicture[fancy
quotes background]\n\\node[fancy quotes opening,anchor=north west] (fq@ul)
at (0,0) {``};\n\\tikz@scan@one@point\\pgfutil@firstofone(fq@ul.east
)\n\\pgfmathsetmacro{\\fq@width}{\\linewidth - 2*\\pgf@x}\n\\node[fancy
quotes,#1] (fq@txt) at (fq@ul.north west)
\\bgroup}\n{\\egroup;\n\\node[overlay,fancy quotes closing,anchor=east] at
(fq@txt.south east)
{''};\n\\endtikzpicture}\n\\makeatother\n\n%\\setlength{\\intextsep}{10pt
plus 1.0pt minus 2.0pt}\n\n\\newenvironment{indentedsection}\n
{\\adjustwidth{2em}{0pt}}\n
{\\endadjustwidth}\n\n\n\\usepackage{setspace}\n\\usepackage{lipsum}\n\\usepackage{etoolbox}\n\\AtBeginEnvironment{quote}{\\singlespace\\vspace{-\\topsep}\\small}\n\\AtEndEnvironment{quote}{\\vspace{-\\topsep}\\endsinglespace}\n\n\n\\usepackage[sc]{titlesec}\n\n\n\\newlength\\TitleOverhang\n\\setlength\\TitleOverhang{1.5cm}\n\n\\newcommand\\Overhang[1]{%\n
\\llap{\\makebox[\\TitleOverhang][l]{#1}}%\n}\n\n\n%
\\titlespacing{command}{left spacing}{before spacing}{after
spacing}[right]\n\\titlespacing*{\\section}{0pt}{16pt}{-6pt}\n\\titlespacing*{\\subsection}{0pt}{16pt}{-6pt}\n\\titlespacing*{\\subsubsection}{0pt}{6pt}{-6pt}\n\n\n\\titleformat*{\\section}{\\sffamily\\bfseries\\fontsize{30}{20}\\raggedright\\sffamily\\scshape\\color{libertyblue}}\n\\titleformat*{\\subsection}{\\sffamily\\fontsize{18}{15}\\raggedright\\scshape\\color{libertyblue}}\n\\titleformat*{\\subsubsection}{\\sffamily\\bfseries\\fontsize{14}{16}\\raggedright\\sffamily\\color{libertyblue}}\n\\titleformat*{\\paragraph}{\\sffamily\\fontsize{13}{12}\\raggedright\\bfseries\\color{libertyblue}}\n\\titleformat*{\\subparagraph}{\\sffamily\\fontsize{14}{14}\\raggedright\\bfseries\\ttfamily\\color{libertyblue}}\n\n\n\\DeclareTextFontCommand{\\nonsection}{\\sffamily\\fontsize{19}{19}\\raggedright\\sffamily\\textlf\\color{libertyblue}
}\n\n\\DeclareTextFontCommand{\\nonsubsection}{\\sffamily\\fontsize{18}{15}\\raggedright\\scshape\\color{libertyblue}}\n\n\\DeclareTextFontCommand{\\nonsubsubsection}{\\sffamily\\itshape\\fontsize{14}{14}\\raggedright\\sffamily\\color{libertyblue}
}\n\n\n\\usepackage[breaklinks=true,linktocpage,xetex]{hyperref}\n\\hypersetup{colorlinks,
citecolor=libertyblue,filecolor=libertyblue,linkcolor=libertyblue,urlcolor=libertyblue}\n\n\\renewcommand\\maketitle{}\n\n\n
[NO-DEFAULT-PACKAGES]\n [NO-PACKAGES]"
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" .
"\\paragraph*{%s}")
("\\subparagraph{%s}" .
"\\subparagraph*{%s}")
)
("elegant-garamond"
"\n\\documentclass[12pt]{article}\n\\usepackage[includeheadfoot,
margin=1.5in, hmargin=1.5in, vmargin=0.5in]{geometry} % Set margins\n\n%
Package Inclusions\n\\usepackage{wrapfig}\n\\usepackage{float} % For
precise figure
placement\n\\usepackage{changepage}\n\\usepackage{algorithm}\n\\usepackage{pdfpages}\n\\usepackage{amsmath}\n\\usepackage{ifxetex}\n\\usepackage{setspace}\n\\usepackage{url}\n\\usepackage{paralist}\n\\usepackage{tikz}\n\\usepackage{calc}\n\\usepackage{eso-pic}\n\\usepackage{etoolbox}\n\\usepackage{xcolor}\n\\usepackage{microtype}
% Improve typography\n\\usepackage{booktabs} % Professional-looking
tables\n\\usepackage{fancyhdr} % Custom headers and
footers\n\\usepackage{xspace} % Consistent spacing after
commands\n\\usepackage{listings}\n\\usepackage{fancyvrb}\n\\usepackage{enumerate}\n\\usepackage{ctable}\n\\usepackage{tocloft}\n\\usepackage[normalem]{ulem}\n\\usepackage{enumitem}\n\\usepackage{titlesec}\n\\usepackage{lipsum}\n\\usepackage[breaklinks=true,
linktocpage, xetex]{hyperref}\n\\usepackage[most]{tcolorbox} % For enhanced
environments\n\n\\newcounter{level} % Define the custom
counter\n\\usepackage{forloop}\n\n\\setlength{\\headheight}{14.49998pt}\n\n%
Font Settings\n\\ifxetex\n \\usepackage{fontspec}\n
\\defaultfontfeatures{Mapping=tex-text, Scale=MatchLowercase}\n
\\setsansfont{TeX Gyre Pagella}\n\n % Set main font to Garamond Premier
Pro\n \\setromanfont[\n Path = /Users/jay/Library/Fonts/,\n
UprightFont = GaramondPremrPro,\n ItalicFont = GaramondPremrPro-It,\n
BoldFont = GaramondPremrPro-Bd,\n BoldItalicFont =
GaramondPremrPro-BdIt,\n Extension = .otf\n ]{Garamond Premier Pro}\n\n
% Set monospaced font to Helvetica Neue LT Pro\n \\setmonofont[\n Path
= /Users/jay/Library/Fonts/,\n UprightFont = HelveticaNeueLTPro-MdCn,\n
BoldFont = HelveticaNeueLTPro-BdCn,\n Extension = .otf\n ]{Helvetica
Neue LT Pro}\n\\else\n \\usepackage[mathletters]{ucs}\n
\\usepackage[utf8x]{inputenc}\n\\fi\n\n% Color
Definitions\n\\definecolor{pinterestred}{HTML}{C92228}\n\\definecolor{ulyssesbutterflyblue}{HTML}{1464F4}\n\\definecolor{signalflare}{HTML}{FB782C}\n\\definecolor{niceorange}{HTML}{77CC6D}\n\\definecolor{highlighteryellow}{HTML}{FFFF01}\n\\definecolor{ghostlygrey}{HTML}{000000}\n\\definecolor{firstcolor}{HTML}{00ADEF}\n\\definecolor{secondcolor}{HTML}{DD3E74}\n\\definecolor{periodblue}{HTML}{12239e}\n\\definecolor{denimblue}{HTML}{3A5F90}\n\\definecolor{electricblue}{HTML}{05ADF3}\n\\definecolor{resonateblue}{HTML}{005778}\n\\definecolor{resonateorange}{HTML}{da7635}\n\\definecolor{resonategrey}{HTML}{4d4d4c}\n\\definecolor{nliblue}{HTML}{2f9ed3}\n\\definecolor{elegantblue}{HTML}{4380b9}\n\\definecolor{spacegrey}{HTML}{434346}\n\\definecolor{azure}{HTML}{f2feff}\n\n\\usepackage{enumitem}
% Ensures advanced list
customization\n\\newcommand{\\labelitemv}{\\textbullet}\n\\newcommand{\\labelitemvi}{\\textbullet}\n\\newcommand{\\labelitemvii}{\\textbullet}\n\\newcommand{\\labelitemviii}{\\textbullet}\n\\newcommand{\\labelitemix}{\\textbullet}\n\\newcommand{\\labelitemx}{\\textbullet}\n\n%
Header and Footer Configuration\n\\fancyhf{} % Clear all header and footer
fields\n\\renewcommand{\\headrulewidth}{0pt}\n\\pagestyle{fancy}\n\\newtoks\\leftheader\n\\newtoks\\leftheaderurl\n\\newtoks\\coverimage\n\\renewcommand{\\sectionmark}[1]{\\markboth{#1}{}}\n\\lhead{\\scshape\\href{\\the\\leftheaderurl}{\\the\\leftheader}}\n\\rhead{\\scshape{\\leftmark}}\n\\cfoot{\\thepage}\n\n%
Paragraph and Indentation
Settings\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{12pt plus
2pt minus 1pt} % Space between
paragraphs\n\\onehalfspacing\n\\setstretch{1.2}\n\n% Table of Contents
Customization\n\\renewcommand{\\contentsname}{Table of
Contents}\n\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}\n\n%
Description Environment
Customization\n\\renewcommand{\\descriptionlabel}[1]{%\n
{\\hspace{\\labelsep}\\bfseries\\textsc{#1}}}\n\\setlist[description]{style=nextline,
before=\\vspace{\\baselineskip}}\n\n% List Environment
Customization\n\\setlist{noitemsep, topsep=-8pt, after=\\vspace{12pt}} %
Control spacing in lists\n\\setlistdepth{10}\n\n% Define a Custom Raised
Bullet
Command\n\\newcommand{\\raisedtinybullet}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\n%
Redefine Itemize Labels Using the Custom
Bullet\n\\renewcommand{\\labelitemi}{\\raisedtinybullet}\n\\renewcommand{\\labelitemii}{\\raisedtinybullet}\n\\renewcommand{\\labelitemiii}{\\raisedtinybullet}\n\\renewcommand{\\labelitemiv}{\\raisedtinybullet}\n\\renewcommand{\\labelitemv}{\\raisedtinybullet}\n\\renewcommand{\\labelitemvi}{\\raisedtinybullet}\n\\renewcommand{\\labelitemvii}{\\raisedtinybullet}\n\\renewcommand{\\labelitemviii}{\\raisedtinybullet}\n\\renewcommand{\\labelitemix}{\\raisedtinybullet}\n\\renewcommand{\\labelitemx}{\\raisedtinybullet}\n\n%
Apply the Custom Bullet to All Itemize
Levels\n\\forloop{level}{1}{\\value{level} <= 10}{%\n
\\setlist[itemize,\\arabic{level}]{label=\\raisedtinybullet}\n}\n\n% Quote
Environment Customization Using tcolorbox\n\\tcbset{\n myquote/.style={\n
colback=azure,\n colframe=spacegrey,\n colupper=black,\n
boxrule=0.5pt,\n rounded corners,\n
fontupper=\\singlespacing\\fontsize{9}{11}\\selectfont\\ttfamily,\n
width=0.8\\textwidth,\n left=0pt,\n right=0pt,\n
boxalign=center,\n halign=flush left,\n before skip=1em,\n after
skip=1em,\n parskip=1em\n }\n}\n\n\\renewenvironment{quote}\n{%\n
\\begin{tcolorbox}[myquote]\n}\n{%\n \\end{tcolorbox}\n}\n\n% Titlesec
Configuration\n\\titlespacing*{\\section}{0pt}{48pt}{0pt}\n\\titlespacing*{\\subsubsection}{0pt}{16pt}{0pt}\n\\titlespacing{\\paragraph}{0pt}{0pt}{.5em}[]\n\n\\newcommand{\\mysectiontitle}[1]{%\n
\\raggedright\\fontsize{40}{26}\\selectfont
#1\n}\n\n\\titleformat{\\section}\n
{\\normalfont\\ttfamily\\scshape\\color{spacegrey}}\n {}\n {0em}\n
{\\mysectiontitle}\n\n\\titleformat*{\\subsection}{\\sffamily\\setstretch{0.1}\\fontsize{24}{36}\\raggedright\\sffamily}\n\\titleformat*{\\subsubsection}{\\ttfamily\\bfseries\\scshape\\fontsize{18}{16}\\raggedright\\ttfamily\\color{spacegrey}}\n\\titleformat*{\\paragraph}{\\ttfamily\\bfseries\\fontsize{19}{12}\\raggedright}\n\\titleformat*{\\subparagraph}{\\sffamily\\fontsize{16}{12}\\raggedright\\ttfamily\\bfseries}\n\n%
Hyperref Configuration\n\\hypersetup{\n colorlinks,\n citecolor =
elegantblue,\n filecolor = elegantblue,\n linkcolor = elegantblue,\n
urlcolor = elegantblue\n}\n\n% Disable Default
Title\n\\renewcommand\\maketitle{}\n\n[NO-DEFAULT-PACKAGES]\n[NO-PACKAGES]"
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" .
"\\paragraph*{%s}")
("\\subparagraph{%s}" .
"\\subparagraph*{%s}")
)
("beautiful-racket"
"\n\n\\documentclass[12pt]{article}\n\\usepackage[includeheadfoot,margin=1.5in,hmargin=1.5in,vmargin=0.5in]{geometry}
% for normal margins\n\n% Use the geometry package to customize the page
layout, margins, and other aspects of your document's
appearance\n\n\n\\usepackage{wrapfig}\n\n\n% To have more control over
figure placement in your document, use the float package and its [H] option
to place figures exactly where you want them in the
text:\n\\usepackage{float}\n\n\n% \\usepackage{glossaries}\n%
\\makeglossaries\n\n\\usepackage{todonotes}\n%
\\usepackage[asterism]{sectionbreak}\n%
\\sectionbreakmark{❦}\n\n\n\\usepackage{wrapfig}\n\\usepackage{changepage}\n\\usepackage{algorithm}\n\\usepackage{pdfpages}\n\\usepackage{amsmath}\n\\usepackage{ifxetex}\n\\usepackage{setspace}\n\\ifxetex\n\\usepackage{fontspec,xltxtra,xunicode}\n\\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}\n\\setromanfont{Garamond
Premier Pro}\n \\setsansfont{TeX Gyre Pagella}\n \\setmonofont{TeX Gyre
Heros}\n\n\\else\n \\usepackage[mathletters]{ucs}\n
\\usepackage[utf8x]{inputenc}\n\\fi\n\\usepackage{url}\n\\usepackage{paralist}\n\\usepackage{tikz}\n\\usepackage{calc}\n\\usepackage{eso-pic}\n\\usepackage{etoolbox}\n\\usepackage{xcolor}\n\\PassOptionsToPackage{hyperref,x11names}{xcolor}\n\\definecolor{pinterestred}{HTML}{C92228}\n\\definecolor{ulyssesbutterflyblue}{HTML}{1464F4}\n\\definecolor{signalflare}{HTML}{FB782C}\n\\definecolor{niceorange}{HTML}{77CC6D}\n\\definecolor{highlighteryellow}{HTML}{FFFF01}\n\\definecolor{ghostlygrey}{HTML}{000000}\n\\definecolor{firstcolor}{HTML}{00ADEF}\n\\definecolor{secondcolor}{HTML}{DD3E74}\n\\definecolor{periodblue}{HTML}{12239e}\n\\definecolor{denimblue}{HTML}{3A5F90}\n\\definecolor{electricblue}{HTML}{05ADF3}\n\\definecolor{resonateblue}{HTML}{005778}\n\\definecolor{resonateorange}{HTML}{da7635}\n\\definecolor{resonategrey}{HTML}{4d4d4c}\n\\definecolor{nliblue}{HTML}{2f9ed3}\n\\definecolor{elegantblue}{HTML}{4380b9}\n\\definecolor{spacegrey}{HTML}{434346}\n\n\\newtoks\\leftheader\n\\newtoks\\leftheaderurl\n\\newtoks\\coverimage\n\n\n\\setlength{\\marginparwidth}{2cm}
% Set marginparwidth for todonotes\n\n% \\usepackage{magaz}\n\n\n%Define
Bold
face\n\\DeclareTextFontCommand{\\textbf}{\\sffamily\\bfseries}\n\\DeclareTextFontCommand{\\textit}{\\itshape}\n\n\\usepackage{microtype}
% Improve the overall typography and appearance of your document by
enabling micro-typographic features, such as character protrusion and font
expansion:\n\n\n\\hyphenpenalty=1000\n\\tolerance=1000\n\\exhyphenpenalty=100\n\\pretolerance=150\n\\emergencystretch=10pt\n\n\n\n\\pagenumbering{arabic}\n\\makeatletter\n\n\n\n\\setcounter{secnumdepth}{0}\n\n\n\\usepackage[font={small,tt}]{caption}\n\n\\usepackage{booktabs}
% Customized table styles: If you plan to use tables in your document, you
might want to consider customizing their appearance with the `booktabs`
package for professional-looking tables\n\n% Use the fancyhdr package to
customize the headers and footers of your document for a professional
appearance\n\n\\usepackage{fancyhdr}\n\\fancyhf{} % sets both header and
footer to
nothing\n\\renewcommand{\\headrulewidth}{0pt}\n\\pagestyle{fancy}\n\n\n\\setlength{\\headheight}{14.49998pt}
% Set headheight for
fancyhdr\n\n\n\n\\renewcommand{\\sectionmark}[1]{\\markboth{#1}{}}\n\\lhead{\\scshape\\href{\\the\\leftheaderurl}{\\the\\leftheader}}\n\\chead{}\n\\rhead{{\\scshape{\\leftmark}}}
% Add section heading\n% \\rhead{\\@title:
{{\\leftmark}}}\n\\lfoot{}\n\\cfoot{\\thepage} % Add page
numbers\n\\rfoot{}\n\n\n% Ensure consistent spacing after periods in your
document by using the xspace
package:\n\\usepackage{xspace}\n\n\\newenvironment{fauxsubtitle}\n{\n\n\\Large\n\\itshape\n}\n\n\n\n\n\\usepackage{listings}\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{12pt
plus 2pt minus 1pt} % space between paragraphs\n\n% spacing: how to read
{12pt plus 4pt minus 2pt}\n% 12pt is what we would like the
spacing to be\n% plus 4pt means that TeX can stretch it by at
most 4pt\n% minus 2pt means that TeX can shrink it by at most
2pt\n% This is one example of the concept of, 'glue', in
TeX\n\n\n\\usepackage{setspace}\n\\onehalfspacing\n\\setstretch{1.2}\n\n\\usepackage{fancyvrb}\n\\usepackage{enumerate}\n\\usepackage{ctable}\n\\setlength{\\paperwidth}{8.5in}\n\\setlength{\\paperheight}{11in}\n\\usepackage{tocloft}\n\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}\n\\usepackage[normalem]{ulem}\n\n\n\\makeatletter\n\\newcommand{\\globalcolor}[1]{%\n
\\color{#1}\\global\\let\\default@color\\current@color\n}\n\\makeatother\n\n\\newcommand{\\textsubscr}[1]{\\ensuremath{_{\\scriptsize\\textrm{#1}}}}\n\n\\usepackage{enumitem}\n\n\\newlist{mylist}{enumerate}{10}\n\n\n%
control line spacing in bulleted list\n\\setlist{noitemsep, topsep=-8pt,
after=\\vspace{12pt}} % for no spacing between list items\n% see:
https://tex.stackexchange.com/questions/199118/modifying-whitespace-before-and-after-list-separately-using-enumitem-package\n%\\setlist{topsep=0pt}
% for a line between list items\n\n\n\\renewcommand{\\labelitemi}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiv}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemv}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvi}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemviii}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemix}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemx}{\\raise
0.25ex\\hbox{\\tiny$\\bullet$}}\n\n\\setlistdepth{10}\n\\setlist[itemize,1]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,2]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,3]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,4]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,5]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,6]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,7]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,8]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,9]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\setlist[itemize,10]{label=\\raise
0.25ex\\hbox\\tiny$\\bullet$}\n\\renewlist{itemize}{itemize}{10}\n\n\n\\renewcommand{\\contentsname}{Table
of Contents}\n\n\n\n\\renewcommand{\\descriptionlabel}[1]{%\n
{\\hspace{\\labelsep}\\bfseries\\textsc{#1}}}\n\n\n\\setlist[description]{style=nextline,
before=\\vspace{\\baselineskip}}\n\n\n\\definecolor{azure}{HTML}{f2feff}\n\n\\usepackage{tikz}\n\\usetikzlibrary{backgrounds}\n\\makeatletter\n\n\\tikzset{%\n
fancy quotes/.style={\n text width=\\fq@width pt,\n align=justify,\n
inner sep=1em,\n anchor=north west,\n minimum width=\\linewidth,\n
},\n fancy quotes width/.initial={.8\\linewidth},\n fancy quotes
marks/.style={\n scale=8,\n text=black,\n inner sep=0pt,\n },\n
fancy quotes opening/.style={\n fancy quotes marks,\n },\n fancy
quotes closing/.style={\n fancy quotes marks,\n },\n fancy quotes
background/.style={\n show background rectangle,\n inner frame
xsep=0pt,\n background rectangle/.style={\n fill=azure,\n
rounded corners,\n },\n
}\n}\n\n\\newenvironment{fancyquotes}[1][]{%\n\\noindent\n\\tikzpicture[fancy
quotes background]\n\\node[fancy quotes opening,anchor=north west] (fq@ul)
at (0,0) {``};\n\\tikz@scan@one@point\\pgfutil@firstofone(fq@ul.east
)\n\\pgfmathsetmacro{\\fq@width}{\\linewidth - 2*\\pgf@x}\n\\node[fancy
quotes,#1] (fq@txt) at (fq@ul.north west)
\\bgroup}\n{\\egroup;\n\\node[overlay,fancy quotes closing,anchor=east] at
(fq@txt.south east)
{''};\n\\endtikzpicture}\n\\makeatother\n\n%\\setlength{\\intextsep}{10pt
plus 1.0pt minus 2.0pt}\n\n\n\\newenvironment{indentedsection}\n{
{\\adjustwidth{2em}{0pt}}\n
{\\endadjustwidth}\n}\n\n\\usepackage{setspace}\n\\usepackage{lipsum}\n\\usepackage{etoolbox}\n\\AtBeginEnvironment{quote}{\\singlespace\\vspace{-\\topsep}\\small}\n\\AtEndEnvironment{quote}{\\vspace{-\\topsep}\\endsinglespace}\n\n\n\\usepackage[sc]{titlesec}\n\n\n\n\\newlength\\TitleOverhang\n\\setlength\\TitleOverhang{1.5cm}\n\n\\newcommand\\Overhang[1]{%\n
\\llap{\\makebox[\\TitleOverhang][l]{#1}}%\n}\n\n\n%
\\titlespacing{command}{left spacing}{before spacing}{after
spacing}[right]\n\\titlespacing*{\\section}{0pt}{150pt}{40pt}\n%\\titlespacing*{\\subsection}{0pt}{0pt}{-6pt}\n\\titlespacing*{\\subsubsection}{0pt}{16pt}{0pt}\n\n\\titlespacing{\\paragraph}{0pt}{0pt}{.5em}[]\n\n\\newcommand{\\mysectiontitle}[1]{%\n
\\parbox{10cm}{\\raggedleft\\fontsize{40}{48}\\selectfont
#1}\n}\n\n\\usepackage{titlesec}\n\\usepackage{xcolor}\n\n\\titleformat{\\section}\n
{\\normalfont\\ttfamily\\scshape\\color{spacegrey}}\n {}\n {0em}\n
{\\hfill\\mysectiontitle}\n\n{\\raggedleft\\parbox[t]{10cm}{\\ttfamily\\scshape\\fontsize{40}{36}\\selectfont\\color{spacegrey}}}\n\n\n\\titleformat*{\\subsection}{\\sffamily\\setstretch{0.1}\\fontsize{24}{36}\\raggedright\\sffamily}\n\\titleformat*{\\subsubsection}{\\ttfamily\\scshape\\fontsize{18}{16}\\raggedright\\ttfamily}\\color{spacegrey}\n\n\\titleformat*{\\paragraph}{\\ttfamily\\bfseries\\fontsize{19}{12}\\raggedright}\n\\titleformat*{\\subparagraph}{\\sffamily\\fontsize{16}{12}\\raggedright\\ttfamily\\bfseries}\n\n\\DeclareTextFontCommand{\\nonsection}{\\sffamily\\fontsize{19}{19}\\raggedright\\sffamily\\textlf}\n\n\\DeclareTextFontCommand{\\nonsubsection}{\\sffamily\\itshape\\fontsize{18}\\raggedright\\sffamily}\n\n\\DeclareTextFontCommand{\\nonsubsubsection}{\\sffamily\\fontsize{18}\\raggedright\\sffamily}\n\n\n\\newenvironment{changemargin}[2]{%\n\\begin{list}{}{%\n\\setlength{\\topsep}{0pt}%\n\\setlength{\\leftmargin}{#1}%\n\\setlength{\\rightmargin}{#2}%\n\\setlength{\\listparindent}{\\parindent}%\n\\setlength{\\itemindent}{\\parindent}%\n\\setlength{\\parsep}{\\parskip}%\n}%\n\\item[]}{\\end{list}}\n\n\\newenvironment{tagline}%
environment name\n{% begin code\n \\vspace{-36pt}\n \\Large\n
\\begin{changemargin}{1cm}{0cm} % Adjust these values as you see fit\n
\\begin{itshape}%\n
\\par\\vspace{\\baselineskip}\\noindent\\ignorespaces\n}%\n{% end code\n
\\end{itshape}\\end{changemargin}\\vspace{24pt}\\ignorespacesafterend %
Close changemargin\n}\n\n\n\\newenvironment{fauxtitle}% environment
name\n{% begin code\n%\\vspace{12pt}\n\\Large\n\\begin{bfseries}%\n
\\par\\vspace{\\baselineskip}\\noindent\\ignorespaces\n}%\n{% end code\n
\\end{bfseries}\\vspace{12pt}\\ignorespacesafterend\n}\n\n\n\n\\newenvironment{fauxcenter}%
environment name\n{% begin code\n\n\\Large\n\\begin{center}\n\n}%\n{% end
code\n\\end{center}\\ignorespacesafterend\n}\n\n\n\n\n\\newenvironment{causationstatement}%
environment name\n{% begin
code\n\\vspace{-30pt}\n\\ttfamily\n\\bfseries\n\\begin{center}\n\n}%\n{%
end
code\n\\end{center}\\ignorespacesafterend\n}\n\n\n\n\n\n\n\\usepackage[breaklinks=true,linktocpage,xetex]{hyperref}\n\\hypersetup{colorlinks,
citecolor=elegantblue,filecolor=elegantblue,linkcolor=elegantblue,urlcolor=elegantblue}\n\n\\renewcommand\\maketitle{}\n\n\n\n
[NO-DEFAULT-PACKAGES]\n [NO-PACKAGES]"
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" .
"\\paragraph*{%s}")
("\\subparagraph{%s}" .
"\\subparagraph*{%s}")
)
("elegant"
"\n\n\\documentclass[12pt]{article}\n\\usepackage{geometry}\n\n\\geometry{\n
margin=1.5in, % Set all margins to 1.5 inches\n bottom=1.5in, % Bottom
margin set to 1.25 inches\n footskip=1.25in % Distance from the bottom of
the text area to the baseline of the
footer\n}\n\n\\usepackage{fontspec}\n\\linespread{1.2}\n\n\\usepackage[all]{nowidow}\n\n%\\usepackage{changepage}\n\n%\\usepackage{algorithm}\n%\\usepackage{amsmath}\n\n\n\n\\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}\n\n\n\n%
define Helvetica Now font weights\n\\setmainfont{HelveticaNow}[\n Path =
/Users/jay/Library/Fonts/,\n UprightFont = HelveticaNowText-Light,\n
BoldFont = HelveticaNowDisplay-Bold,\n ItalicFont =
HelveticaNowText-LightItalic,\n BoldItalicFont =
HelveticaNowDisplay-BoldIta,\n Extension =
.ttf\n]\n\n\\setromanfont{HelveticaNowText-Light}\n\\setsansfont{HelveticaNowDisplay-Regular}\n\n%
define sans font\n\\setsansfont{Helvetica Neue LT Pro}[\n Path =
/Users/jay/Library/Fonts/,\nUprightFont = HelveticaNeueLTPro-MdCn,\n
BoldFont = HelveticaNeueLTPro-BdCn,\n Extension =
.otf\n]\n\n\\newfontfamily{\\thindisplayfont}{HelveticaNowDisplay-Light}\n\\setmonofont{Myriad
Pro} % for nice quotes\n% \\setmonofont{Adobe Garamond Pro} % for beautiful
LaTeX
Formulae\n\n\n%\\usepackage[mathletters]{ucs}\n%\\usepackage[utf8x]{inputenc}\n\n\n\\usepackage[obeyspaces]{url}\n\\PassOptionsToPackage{obeyspaces}{url}\n\n\\usepackage{paralist}\n\n\\usepackage{wrapfig}\n\\usepackage{setspace}\n%\\setkeys{Gin}{resolution=72}\n\\usepackage{tikz}\n\n%\\usepackage{calc}\n%\\usepackage{eso-pic}\n%\\usepackage{etoolbox}\n\\usepackage{xcolor}\n\\PassOptionsToPackage{hyperref,x11names}{xcolor}\n\\definecolor{pinterestred}{HTML}{C92228}\n\\definecolor{ulyssesbutterflyblue}{HTML}{1464F4}\n\\definecolor{signalflare}{HTML}{FB782C}\n\\definecolor{niceorange}{HTML}{77CC6D}\n\\definecolor{highlighteryellow}{HTML}{FFFF01}\n\\definecolor{ghostlygrey}{HTML}{000000}\n\\definecolor{firstcolor}{HTML}{00ADEF}\n\\definecolor{secondcolor}{HTML}{DD3E74}\n\\definecolor{periodblue}{HTML}{12239e}\n\\definecolor{denimblue}{HTML}{3A5F90}\n\\definecolor{electricblue}{HTML}{05ADF3}\n\\definecolor{resonateblue}{HTML}{005778}\n\\definecolor{resonateorange}{HTML}{da7635}\n\\definecolor{resonategrey}{HTML}{4d4d4c}\n\\definecolor{nliblue}{HTML}{2f9ed3}\n%\\definecolor{dullerelegantblue}{HTML}{4380b9}\n\\definecolor{elegantblue}{HTML}{1792d1}\n\\definecolor{ideablue}{HTML}{55C1E7}\n\\definecolor{powderblue}{HTML}{f5f7ff}\n\\definecolor{stormybluegrey}{HTML}{898ea4}\n\\definecolor{moonrockgrey}{HTML}{212121}\n\\definecolor{libertyblue}{HTML}{73b0be}\n\\definecolor{darklibertyblue}{HTML}{19455b}\n\n\n%
\\newtoks\\leftheader\n% \\newtoks\\leftheaderurl\n%
\\newtoks\\coverimage\n\n\\raggedright\n\\hyphenpenalty=5000\n\\tolerance=1000\n\n\\usepackage{textcase}\n\n\\pagenumbering{arabic}\n\\makeatletter\n\n\n\\renewcommand{\\contentsname}{Table
of
Contents}\n\n\\setcounter{secnumdepth}{0}\n\\usepackage{graphicx}\n\\usepackage{float}\n\n\n\\usepackage[labelformat=empty,
font=it,
width=0.9\\textwidth]{caption}\n\n\n\n\n\n%%%%%%%%%%%%%%%%%\n\n\\usepackage{fancyhdr}\n\\pagestyle{fancy}\n\\fancyhf{}\n\\renewcommand{\\sectionmark}[1]{\\markboth{#1}{}}\n%
\\lhead{\\href{\\the\\leftheaderurl}{\\the\\leftheader}}\n\\chead{}\n\\rhead{{\\nouppercase{\\leftmark}}}\n%
\\rhead{\\@title:
{\\nouppercase{\\leftmark}}}\n\n\\lhead{\\bfseries\\@author} % title of the
document as left
header\n\n%\\renewcommand{\\footrulewidth}{0.4pt}\n\n\n\\fancyfoot[C]{%\n
% Graphic\n \\raisebox{0.025in}{% Increase this value to move the logo
higher\n%\\fontsize{43}{42}\\selectfont\\sffamily\\color{darklibertyblue}
STORYTELLING.NYC % large storytelling.NYC text
footer\n\n%\\includegraphics[height=0.4in,keepaspectratio]{/Users/jay/Dropbox/writing/prosperous/design/storytelling-nyc-logo/current-2018/_better-storytelling-nyc-canonical-helvetica-condensed-wide.png}
% The whole thing with NO period\n\n }%\n % Space between the graphic and
the text (adjust as needed)\n %\\hspace{0.05in}%\n % Text\n
\\raisebox{1.05in}{% Adjust this value to align the text with the
image\n\n\n\n%
\\includegraphics[height=0.6in,keepaspectratio]{/Users/jay/Dropbox/writing/prosperous/design/storytelling-nyc-logo/current-2018/_better-storytelling-nyc-canonical-helvetica-condensed-wide.png}
% The whole thing\n\n%
\\includegraphics[height=0.8in,keepaspectratio]{/Users/jay/Dropbox/writing/prosperous/design/storytelling-nyc-logo/current-2018/_better-storytelling-nyc-period-canonical-helvetica-condensed.png}
% The whole thing with a
period\n\n%\\includegraphics[height=0.8in,keepaspectratio]{/Users/jay/Dropbox/writing/prosperous/design/storytelling-nyc-logo/current-2018/_better-storytelling-nyc-canonical-helvetica-condensed-wide.png}
% The whole thing with NO
period\n\n%\\includegraphics[height=0.6in,keepaspectratio]{/Users/jay/Dropbox/github/
incandescentman.github.io/assets/images/2023-10-final-new-logo_high-res-no-text.png}
% logo of just lady liberty\n }%\n % Space between the graphic and the
text (adjust as needed)\n \\hspace{0.05in}%\n % Text\n
\\raisebox{0.35in}{% Adjust this value to align the text with the
image\n\n\n\n%\\fontsize{16}{16}\\sffamily\\color{black}All materials
Copyright Jay Dixit. % copyright\n\n\n\n }%\n}\n\n% overwrite the logo
footer\n%\\cfoot{\\thepage} % Add page
numbers\n\n\n%%%%%%%%%%%%%%%%\n\n\\usepackage{listings}\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{12pt
plus 2pt minus 1pt} % space between paragraphs\n\n% spacing: how to read
{12pt plus 4pt minus 2pt}\n% 12pt is what we would like the
spacing to be\n% plus 4pt means that TeX can stretch it by at
most 4pt\n% minus 2pt means that TeX can shrink it by at most
2pt\n% This is one example of the concept of, 'glue', in
TeX\n\n%\\usepackage{fancyvrb}\n\\usepackage{enumerate}\n\\usepackage{ctable}\n\\setlength{\\paperwidth}{8.5in}\n\\setlength{\\paperheight}{11in}\n
\\tolerance=1000\n\\usepackage{tocloft}\n\\renewcommand{\\cftsecfont}{\\normalfont}\n\\renewcommand{\\cftsecpagefont}{\\normalfont}\n\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}\n\\usepackage[normalem]{ulem}\n\n\n\n\\setlength{\\headheight}{15pt}
% Adjusted value based on warning\n\n\\addtolength{\\topmargin}{-3pt} %
Adjusted value to maintain
layout\n\n\n\\makeatletter\n\\newcommand{\\globalcolor}[1]{%\n
\\color{#1}\\global\\let\\default@color\\current@color\n}\n\\makeatother\n\n\\newcommand{\\textsubscr}[1]{\\ensuremath{_{\\scriptsize\\textrm{#1}}}}\n\n\\usepackage{enumitem}\n\\setlistdepth{10}
% Allows up to 10 levels of
nesting\n\n\\newlist{mylist}{enumerate}{10}\n\n\n% control line spacing in
bulleted list\n\\setlist{noitemsep, topsep=-8pt, after=\\vspace{12pt}} %
for no spacing between list items\n% see:
https://tex.stackexchange.com/questions/199118/modifying-whitespace-before-and-after-list-separately-using-enumitem-package\n%\\setlist{topsep=0pt}
% for a line between list items\n\n\n% Define labels for levels 5 to
10\n\\newcommand{\\labelitemv}{$\\bullet$}\n\\newcommand{\\labelitemvi}{$\\bullet$}\n\\newcommand{\\labelitemvii}{$\\bullet$}\n\\newcommand{\\labelitemviii}{$\\bullet$}\n\\newcommand{\\labelitemix}{$\\bullet$}\n\\newcommand{\\labelitemx}{$\\bullet$}\n\n\n\\renewcommand{\\labelitemi}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemii}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiii}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemiv}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemv}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvi}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemvii}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemviii}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemix}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewcommand{\\labelitemx}{\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\n\\setlistdepth{10}\n\\setlist[itemize,1]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,2]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,3]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,4]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,5]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,6]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,7]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,8]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,9]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\setlist[itemize,10]{label=\\raisebox{0.25ex}{\\tiny$\\bullet$}}\n\\renewlist{itemize}{itemize}{10}\n\n\n\\definecolor{azure}{HTML}{f2feff}\n\n%\\usepackage{lipsum}\n\n%\\setlength{\\intextsep}{10pt
plus 1.0pt minus 2.0pt}\n\n\\newenvironment{indentedsection}\n
{\\adjustwidth{2em}{0pt}}\n
{\\endadjustwidth}\n\n\n\n\\usepackage[most]{tcolorbox}\n\\usepackage{etoolbox}\n\n\\tcbuselibrary{skins}\n\n\\AtBeginEnvironment{quote}{\\vspace{1em}}\n\\AtEndEnvironment{quote}{\\vspace{1em}}\n\n\n\n\n\n\\usepackage[sc]{titlesec}\n\n\n\\newlength\\TitleOverhang\n\\setlength\\TitleOverhang{1.5cm}\n\n\\newcommand\\Overhang[1]{%\n
\\llap{\\makebox[\\TitleOverhang][l]{#1}}%\n}\n\n\n% Ensure the tcolorbox
package is included with the 'skins'
library\n\\usepackage[most]{tcolorbox}\n\n% Define custom colors if not
already
defined\n\\definecolor{powderblue}{HTML}{f5f7ff}\n\\definecolor{stormybluegrey}{HTML}{708090}\n\\definecolor{moonrockgrey}{HTML}{5D5D5D}\n\n%
Define a custom tcolorbox style for quotes\n\\tcbset{\n myquote/.style={\n
colback=powderblue,\n colframe=stormybluegrey,\n
colupper=moonrockgrey,\n boxrule=0.5pt,\n rounded corners,\n
fontupper=\\singlespacing\\fontsize{9}{11}\\selectfont\\ttfamily,\n
width=0.8\\textwidth,\n left=0pt,\n right=0pt,\n halign=flush
left,\n before skip=1em, % Vertical space before the box\n after
skip=1em, % Vertical space after the box\n parskip=1em % Space
between paragraphs within the box\n }\n}\n\n% Redefine the quote
environment using the custom style\n\\renewenvironment{quote}\n{%\n
\\begin{tcolorbox}[myquote]\n}\n{%\n \\end{tcolorbox}\n}\n\n\n%
\\titlespacing{command}{left spacing}{before spacing}{after
spacing}[right]\n\\titlespacing*{\\section}{1.5ex}{12pt}{0pt}\n\\titlespacing*{\\subsection}{0pt}{0pt}{-6pt}\n\\titlespacing*{\\subsubsection}{0pt}{0pt}{-12pt}\n\n\\titleformat*{\\section}{\\sffamily\\bfseries\\fontsize{30}{20}\\raggedright\\sffamily\\color{libertyblue}}\n\\titleformat*{\\subsection}{\\sffamily\\fontsize{18}{16}\\selectfont\\raggedright\\color{libertyblue}}\n\n\\titleformat*{\\subsubsection}{\\sffamily\\bfseries\\fontsize{15}{16}\\raggedright\\sffamily\\color{libertyblue}}\n\\titleformat*{\\paragraph}{\\sffamily\\fontsize{13}{12}\\raggedright\\bfseries\\color{libertyblue}}\n\\titleformat*{\\subparagraph}{\\sffamily\\fontsize{14}{14}\\raggedright\\bfseries\\ttfamily\\color{libertyblue}}\n\n\n\n\\titleformat{\\paragraph}[block]{\\normalfont\\sffamily\\fontsize{13}{12}\\bfseries\\color{black}}{}{0em}{}\n\\titlespacing*{\\paragraph}{0pt}{0pt}{-6pt}\n\n\n\n\\titleformat{\\subparagraph}{\\normalfont\\sffamily\\fontsize{13}{12}\\bfseries\\color{black}}{}{0em}{}\n\\titlespacing*{\\subparagraph}{0pt}{0pt}{-6pt}\n\n\n\\usepackage[breaklinks=true,linktocpage,xetex]{hyperref}\n\\hypersetup{colorlinks,
citecolor=libertyblue,filecolor=libertyblue,linkcolor=libertyblue,urlcolor=libertyblue}\n\n\\renewcommand\\maketitle{}\n\n\n
[NO-DEFAULT-PACKAGES]\n [NO-PACKAGES]"
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" .
"\\paragraph*{%s}")
("\\subparagraph{%s}" .
"\\subparagraph*{%s}")
)
("my-letter"
"\\documentclass[%\n DIV=14,\n fontsize=12pt,\n
parskip=half,\n subject=titled,\n backaddress=false,\n fromalign=left,\n
fromemail=true,\n fromphone=true]{scrlttr2}\n [DEFAULT-PACKAGES]\n
[PACKAGES]\n [EXTRA]")
("article"
"\\documentclass[11pt]{article}"
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
("\\paragraph{%s}" .
"\\paragraph*{%s}")
("\\subparagraph{%s}" .
"\\subparagraph*{%s}")
)
("report"
"\\documentclass[11pt]{report}"
("\\part{%s}" .
"\\part*{%s}")
("\\chapter{%s}" .
"\\chapter*{%s}")
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
)
("book"
"\\documentclass[11pt]{book}"
("\\part{%s}" .
"\\part*{%s}")
("\\chapter{%s}" .
"\\chapter*{%s}")
("\\section{%s}" .
"\\section*{%s}")
("\\subsection{%s}" .
"\\subsection*{%s}")
("\\subsubsection{%s}" .
"\\subsubsection*{%s}")
)
)
org-sort-function 'string-collate-lessp
org-n-level-faces 9
org-twbs-head-include-scripts nil
org-highlight-latex-and-related '(latex)
org-use-speed-commands t
org-timeline-source-url "/Users/jay/Dropbox/github/
incandescentman.github.io/timeline/dist"
org-protocol-protocol-alist '(("org-roam-node"
:protocol
"roam-node"
:function
org-roam-protocol-open-node)
("org-roam-ref"
:protocol
"roam-ref"
:function
org-roam-protocol-open-ref)
("org-roam-node"
:protocol
"roam-node"
:function
org-roam-protocol-open-node)
("org-roam-ref"
:protocol
"roam-ref"
:function
org-roam-protocol-open-ref)
)
org-roam-capture-preface-hook '(org-roam-dailies--override-capture-time-h
org-roam-capture--try-capture-to-ref-h)
org-extend-today-until 8
org-html-checkbox-type 'unicode
org-list-demote-modify-bullet '(("+" . "-")
("-" . "+"))
org-link-translation-function 'toc-org-unhrefify
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-capture-prepare-finalize-hook '(org-roam-capture--install-finalize-h)
org-src-preserve-indentation t
org-roam-preview-function 'org-roam-preview-default-function
org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
org-roam-db-autosync-mode t
org-checkbox-statistics-hook '(ndk/checkbox-list-complete)
org-confirm-elisp-link-function 'yes-or-no-p
org-cycle-separator-lines 0
org-twbs-head-include-default-style nil
org-superstar-headline-bullets-list '(42 42 42
42)
org-log-buffer-setup-hook '(org-roam-log--setup
spacemacs//org-note-mode)
org-clock-report-include-clocking-task t
org-safe-remote-resources '("\\`https://fniessen
\\.github\\.io/org-html-themes/org/theme-bigblow\\.setup\\'")
org-insert-mode-line-in-empty-file t
org-hide-leading-stars t
org-twbs-format-headline-function 'ignore
org-clock-idle-time 30
org-todo-keywords '((sequence "TODO" "STARTED"
"|" "DONE")
(sequence "MISSED" "|"
"DONE")
(sequence "MISSED ❌" "|"
"DONE")
(sequence "STARTED" "|"
"DONE ✅")
(sequence "STARTED 🏁" "|"
"DONE ✅")
(sequence "Example:" "|")
(sequence "NEED TO INVOICE"
"INVOICED" "|" "PAID")
(sequence "|" "CANCELED")
(sequence "Original:" "|"
"Revised:")
(sequence "REWARD" "|"
"REWARDED")
(sequence "TO PROCESS" "|"
"PROCESSED")
)
org-twbs-postamble-format nil
org--warnings '("org-element--cache: Org parser error in 2024-10-24.org::297.
Resetting.\n The error was: (error \"Invalid search bound (wrong side of
point)\")\n Backtrace:\n\" backtrace-to-string(nil)\n (progn
(backtrace-to-string (backtrace-get-frames 'backtrace)))\n (if (and
(fboundp 'backtrace-get-frames) (fboundp 'backtrace-to-string)) (progn
(backtrace-to-string (backtrace-get-frames 'backtrace))))\n (format
\\\"Org parser error in %s::%S. Resetting.\\\\n The error ...\\\"
(buffer-name (current-buffer)) epom err (if (and (fboundp
'backtrace-get-frames) (fboundp 'backtrace-to-string)) (progn
(backtrace-to-string (backtrace-get-frames 'backtrace)))))\n (let*
((format-string (format \\\"Org parser error in %s::%S. Resetting.\\\\n The
error ...\\\" (buffer-name (current-buffer)) epom err (if (and (fboundp
'backtrace-get-frames) (fboundp 'backtrace-to-string)) (progn
(backtrace-to-string (backtrace-get-frames ...)))))) (format-string (if (or
(not org-element--cache-diagnostics-ring) (not (eq 'backtrace
org-element--cache-self-verify))) format-string (prog1 (concat (format
\\\"Warning(%s): \\\" (buffer-name ...)) format-string
\\\"\\\\nBacktrace:\\\\n \\\" (mapconcat #'identity (ring-elements
org-element--cache-diagnostics-ring) \\\"\\\\n \\\")) (setq
org-element--cache-diagnostics-ring nil))))) (if (and (boundp
'org-batch-test) org-batch-test) (error \\\"%s\\\" (concat
\\\"org-element--cache: \\\" format-string)) (setq org--warnings (cons
(concat \\\"org-element--cache: \\\" format-string) org--warnings))
(display-warning '(org-element org-element-cache) (concat
\\\"org-element--cache: \\\" format-string))))\n (condition-case err
(org-element--parse-to epom) ((debug error) (let* ((format-string (format
\\\"Org parser error in %s::%S. Resetting.\\\\n The error ...\\\"
(buffer-name (current-buffer)) epom err (if (and ... ...) (progn ...))))
(format-string (if (or (not org-element--cache-diagnostics-ring) (not ...))
format-string (prog1 (concat ... format-string \\\"\\\\nBacktrace:\\\\n
\\\" ...) (setq org-element--cache-diagnostics-ring nil))))) (if (and
(boundp 'org-batch-test) org-batch-test) (error \\\"%s\\\" (concat
\\\"org-element--cache: \\\" format-string)) (setq org--warnings (cons
(concat \\\"org-element--cache: \\\" format-string) org--warnings))
(display-warning '(org-element org-element-cache) (concat
\\\"org-element--cache: \\\" format-string)))) (org-element-cache-reset)
(org-element--parse-to epom)))\n (if cached-only (if (and
(org-element--cache-active-p) (or (not org-element--cache-sync-requests) (<
epom (aref (car org-element--cache-sync-requests) 1)))) (progn
(org-element--cache-find epom))) (condition-case err (org-element--parse-to
epom) ((debug error) (let* ((format-string (format \\\"Org parser error in
%s::%S. Resetting.\\\\n The error ...\\\" (buffer-name ...) epom err (if
... ...))) (format-string (if (or ... ...) format-string (prog1 ... ...))))
(if (and (boundp 'org-batch-test) org-batch-test) (error \\\"%s\\\" (concat
\\\"org-element--cache: \\\" format-string)) (setq org--warnings (cons
(concat \\\"org-element--cache: \\\" format-string) org--warnings))
(display-warning '(org-element org-element-cache) (concat
\\\"org-element--cache: \\\" format-string)))) (org-element-cache-reset)
(org-element--parse-to epom))))\n (setq element (if cached-only (if (and
(org-element--cache-active-p) (or (not org-element--cache-sync-requests) (<
epom (aref (car org-element--cache-sync-requests) 1)))) (progn
(org-element--cache-find epom))) (condition-case err (org-element--parse-to
epom) ((debug error) (let* ((format-string (format \\\"Org parser error in
%s::%S. Resetting.\\\\n The error ...\\\" ... epom err ...)) (format-string
(if ... format-string ...))) (if (and (boundp ...) org-batch-test) (error
\\\"%s\\\" (concat \\\"org-element--cache: \\\" format-string)) (setq
org--warnings (cons ... org--warnings)) (display-warning '... (concat
\\\"org-element--cache: \\\" format-string)))) (org-element-cache-reset)
(org-element--parse-to epom)))))\n (let (element) (if
(org-element--cache-active-p) (progn (if (not (save-current-buffer
(set-buffer (or ... ...)) org-element--cache)) (org-element-cache-reset)
(if cached-only nil (org-element--cache-sync (current-buffer) epom)))))
(setq element (if cached-only (if (and (org-element--cache-active-p) (or
(not org-element--cache-sync-requests) (< epom (aref ... 1)))) (progn
(org-element--cache-find epom))) (condition-case err (org-element--parse-to
epom) ((debug error) (let* ((format-string ...) (format-string ...)) (if
(and ... org-batch-test) (error \\\"%s\\\" ...) (setq org--warnings ...)
(display-warning ... ...))) (org-element-cache-reset)
(org-element--parse-to epom))))) (if (and (org-element--cache-active-p)
element (org-element--cache-verify-element element)) (progn (setq element
(org-element--parse-to epom)))) (if (eq (org-element-type element t)
'org-data) nil (if (and cached-only (not (and element (or (= epom ...) (and
... ... ...) (and ... ... ...) (and ... ... ...))))) nil (if (not (eq
(org-element-type element t) 'section)) element (org-element-at-point (1+
epom) cached-only)))))\n (save-restriction (widen) (goto-char (or --mepom
(point))) (if (derived-mode-p 'org-mode) nil (display-warning '(org-element
org-element-parser) (format-message \\\"`org-element-at-point' cannot be
used in non-Org b...\\\" (current-buffer) major-mode))) (if (and
cached-only (memq this-command org-element--cache-non-modifying-commands))
(progn (setq cached-only nil))) (let (element) (if
(org-element--cache-active-p) (progn (if (not (save-current-buffer
(set-buffer ...) org-element--cache)) (org-element-cache-reset) (if
cached-only nil (org-element--cache-sync (current-buffer) epom))))) (setq
element (if cached-only (if (and (org-element--cache-active-p) (or (not
org-element--cache-sync-requests) (< epom ...))) (progn
(org-element--cache-find epom))) (condition-case err (org-element--parse-to
epom) ((debug error) (let* (... ...) (if ... ... ... ...))
(org-element-cache-reset) (org-element--parse-to epom))))) (if (and
(org-element--cache-active-p) element (org-element--cache-verify-element
element)) (progn (setq element (org-element--parse-to epom)))) (if (eq
(org-element-type element t) 'org-data) nil (if (and cached-only (not (and
element (or ... ... ... ...)))) nil (if (not (eq (org-element-type element
t) 'section)) element (org-element-at-point (1+ epom) cached-only))))))\n
(save-excursion (save-restriction (widen) (goto-char (or --mepom (point)))
(if (derived-mode-p 'org-mode) nil (display-warning '(org-element
org-element-parser) (format-message \\\"`org-element-at-point' cannot be
used in non-Org b...\\\" (current-buffer) major-mode))) (if (and
cached-only (memq this-command org-element--cache-non-modifying-commands))
(progn (setq cached-only nil))) (let (element) (if
(org-element--cache-active-p) (progn (if (not (save-current-buffer ...
org-element--cache)) (org-element-cache-reset) (if cached-only nil
(org-element--cache-sync ... epom))))) (setq element (if cached-only (if
(and (org-element--cache-active-p) (or ... ...)) (progn
(org-element--cache-find epom))) (condition-case err (org-element--parse-to
epom) ((debug error) (let* ... ...) (org-element-cache-reset)
(org-element--parse-to epom))))) (if (and (org-element--cache-active-p)
element (org-element--cache-verify-element element)) (progn (setq element
(org-element--parse-to epom)))) (if (eq (org-element-type element t)
'org-data) nil (if (and cached-only (not (and element ...))) nil (if (not
(eq ... ...)) element (org-element-at-point (1+ epom) cached-only)))))))\n
(save-excursion (cond ((markerp --mepom) (set-buffer (marker-buffer
--mepom))) ((numberp --mepom)) (t (if (let ((idx (or 14 14))) (let*
((parray ...)) (if parray (let* ... ...) (let* ... ...)))) (progn
(set-buffer (let (...) (let* ... ...))))) (setq --mepom (let ((idx (or 0
0))) (let* ((parray ...)) (if parray (let* ... ...) (let* ... ...)))))))
(save-excursion (save-restriction (widen) (goto-char (or --mepom (point)))
(if (derived-mode-p 'org-mode) nil (display-warning '(org-element
org-element-parser) (format-message \\\"`org-element-at-point' cannot be
used in non-Org b...\\\" (current-buffer) major-mode))) (if (and
cached-only (memq this-command org-element--cache-non-modifying-commands))
(progn (setq cached-only nil))) (let (element) (if
(org-element--cache-active-p) (progn (if (not ...)
(org-element-cache-reset) (if cached-only nil ...)))) (setq element (if
cached-only (if (and ... ...) (progn ...)) (condition-case err
(org-element--parse-to epom) (... ... ... ...)))) (if (and
(org-element--cache-active-p) element (org-element--cache-verify-element
element)) (progn (setq element (org-element--parse-to epom)))) (if (eq
(org-element-type element t) 'org-data) nil (if (and cached-only (not ...))
nil (if (not ...) element (org-element-at-point ... cached-only))))))))\n
(let ((--mepom epom)) (save-excursion (cond ((markerp --mepom) (set-buffer
(marker-buffer --mepom))) ((numberp --mepom)) (t (if (let ((idx ...)) (let*
(...) (if parray ... ...))) (progn (set-buffer (let ... ...)))) (setq
--mepom (let ((idx ...)) (let* (...) (if parray ... ...))))))
(save-excursion (save-restriction (widen) (goto-char (or --mepom (point)))
(if (derived-mode-p 'org-mode) nil (display-warning '(org-element
org-element-parser) (format-message \\\"`org-element-at-point' cannot be
used in non-Org b...\\\" (current-buffer) major-mode))) (if (and
cached-only (memq this-command org-element--cache-non-modifying-commands))
(progn (setq cached-only nil))) (let (element) (if
(org-element--cache-active-p) (progn (if ... ... ...))) (setq element (if
cached-only (if ... ...) (condition-case err ... ...))) (if (and
(org-element--cache-active-p) element (org-element--cache-verify-element
element)) (progn (setq element ...))) (if (eq (org-element-type element t)
'org-data) nil (if (and cached-only ...) nil (if ... element ...))))))))\n
(if (org-element-type epom t) epom (setq epom (or epom (point))) (let
((--mepom epom)) (save-excursion (cond ((markerp --mepom) (set-buffer
(marker-buffer --mepom))) ((numberp --mepom)) (t (if (let (...) (let* ...
...)) (progn (set-buffer ...))) (setq --mepom (let (...) (let* ... ...)))))
(save-excursion (save-restriction (widen) (goto-char (or --mepom (point)))
(if (derived-mode-p 'org-mode) nil (display-warning '... (format-message
\\\"`org-element-at-point' cannot be used in non-Org b...\\\" ...
major-mode))) (if (and cached-only (memq this-command
org-element--cache-non-modifying-commands)) (progn (setq cached-only nil)))
(let (element) (if (org-element--cache-active-p) (progn ...)) (setq element
(if cached-only ... ...)) (if (and ... element ...) (progn ...)) (if (eq
... ...) nil (if ... nil ...))))))))\n org-element-at-point()\n
org-at-item-p()\n org-indent-add-properties(291 298)\n
org-indent-refresh-maybe(291 291 3)\n
run-hook-with-args(org-indent-refresh-maybe 291 291 3)\n
combine-change-calls-1(291 294 #f(compiled-function () #<bytecode
-0xc34b367726de687>))\n org-demote-subtree()\n
smart-org-insert-subheading()\n
funcall-interactively(smart-org-insert-subheading)\n
call-interactively(smart-org-insert-subheading nil nil)\n
command-execute(smart-org-insert-subheading)\n recursive-edit()\n
debug(error (error \\\"Invalid search bound (wrong side of point)\\\"))\n
re-search-forward(\\\"\\\\\\\\[\\\\\\\\([^][]+\\\\\\\\)\\\\\\\\](\\\\\\\\([^)]+\\\\\\\\))\\\"
184013 t)\n (while (re-search-forward
\\\"\\\\\\\\[\\\\\\\\([^][]+\\\\\\\\)\\\\\\\\](\\\\\\\\([^)]+\\\\\\\\))\\\"
end t) (replace-match \\\"[[\\\\\\\\2][\\\\\\\\1]]\\\" t))\n
(save-excursion (goto-char beg) (while (re-search-forward
\\\"\\\\\\\\[\\\\\\\\([^][]+\\\\\\\\)\\\\\\\\](\\\\\\\\([^)]+\\\\\\\\))\\\"
end t) (replace-match \\\"[[\\\\\\\\2][\\\\\\\\1]]\\\" t)))\n
convert-markdown-links-to-org-mode(184020 184013)\n (let ((beg (point)))
(pasteboard-paste) (replace-smart-quotes beg (point))
(convert-markdown-links-to-org-mode beg (point)))\n
pasteboard-paste-without-smart-quotes()\n (if (or (member prev-char
char-set) (member next-char char-set)) (pasteboard-paste-no-spaces)
(pasteboard-paste-without-smart-quotes))\n (let* ((prev-char
(char-before)) (next-char (char-after)) (char-set '(58 39 40 41 124 91 93
47 92 34 61 60 62 123 125))) (if (or (member prev-char char-set) (member
next-char char-set)) (pasteboard-paste-no-spaces)
(pasteboard-paste-without-smart-quotes)))\n
pasteboard-paste-spaces-maybe()\n
funcall-interactively(pasteboard-paste-spaces-maybe)\n
call-interactively(pasteboard-paste-spaces-maybe nil nil)\n
command-execute(pasteboard-paste-spaces-maybe)\n\"\n Please report this to
Org mode mailing list (M-x org-submit-bug-report).")
org-latex-logfiles-extensions '("lof" "lot"
"tex" "odt"
"aux" "idx"
"log" "out"
"toc" "nav"
"snm" "vrb"
"dvi"
"fdb_latexmk"
"blg" "brf"
"fls" "entoc"
"ps" "spl" "bbl")
org-roam-capture-new-node-hook '(org-roam-capture--insert-captured-ref-h)
org-export-with-timestamps 'active
org-support-shift-select 'always
org-structure-template-alist '(("a" .
"export ascii")
("c" . "center")
("C" . "comment")
("e" . "example")
("x" . "example")
("le" . "example")
("E" . "export")
("h" .
"export html")
("l" .
"src emacs-lisp")
("el" .
"src emacs-lisp")
("la" .
"export latex")
("q" . "quote")
("s" . "src")
("sh" . "src sh")
("f" .
"example fountain")
("v" .
"example verse")
)
org-blocker-hook '(org-block-todo-from-checkboxes
org-block-todo-from-children-or-siblings-or-parent)
org-html-text-markup-alist '((bold .
"<strong>%s</strong>")
(code .
"<code>%s</code>")
(italic .
"<em>%s</em>")
(strike-through .
"<del>%s</del>")
(underline .
"<span class=\"underline\">%s</span>")
(verbatim .
"<code>%s</code>")
)
org-export-timestamp-file nil
org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
org-html-format-inlinetask-function
'org-html-format-inlinetask-default-function
org-clock-persist-file "~/.emacs.d/.cache/org-clock-save.el"
org-ascii-format-inlinetask-function 'org-ascii-format-inlinetask-default
org-latex-default-class "elegant"
org-latex-prefer-user-labels t
org-html-metadata-timestamp-format "%m-%d %a %H:%M"
org-export-backends '(ascii html icalendar latex
md)
org-enforce-todo-dependencies t
org-fold-core-isearch-open-function 'org-fold-core--isearch-reveal
org-export-with-smart-quotes t
org-clock-in-resume t
org-pomodoro-finished-hook '((lambda nil
(do-applescript
(format
"\nignoring application responses\n tell
application \"System Events\"\nkeystroke \"B\" using {command down, shift
down, option down, control down} -- start Pomodoro One\nkey code {118}\nend
tell\nend ignoring\n\n\nset now to current date\nset nowTime to (hours of
now) & \":\" & (minutes of now)\nset pomodoroStart to (current date) - 25 *
minutes\nset pStartTime to (hours of pomodoroStart) & \":\" & (minutes of
pomodoroStart)\nset achieved to text returned of (display dialog \"What did
you achieve in this Pomodoro?\" default answer \"\")\nset entry_text to \"#
Bookwriting:\" & pStartTime & \" - \" & time string of now & \"\n\n\" &
achieved & \"\n\n#pomodoro \"\n\n")
)
)
)
org-preview-latex-default-process 'verbatim
org-M-RET-may-split-line '((item . t))
org-clock-persist t
org-latex-format-inlinetask-function
'org-latex-format-inlinetask-default-function
org-persist-before-write-hook '(org-element--cache-persist-before-write)
org-emphasis-alist '(("*" bold) ("/" italic)
("_" underline)
("~" org-code verbatim)
("=" flyspell-incorrect)
("+" (:strike-through t)))
org-tab-first-hook '(yas-org-very-safe-expand
org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-export-with-toc nil
org-link-shell-confirm-function 'yes-or-no-p
org-babel-pre-tangle-hook '(save-buffer)
org-superstar-remove-leading-stars t
org-roam-completion-everywhere t
org-agenda-loop-over-headlines-in-active-region nil
org-fontify-quote-and-verse-blocks t
org-attach-id-dir "/Users/jay/Dropbox/roam/attachments"
org-clock-auto-clock-resolution t
org-todo-keyword-faces '(("PROCESSED"
:foreground
"LavenderBlush"
:background "darkgrey"
:weight bold)
("NEXT" :background
"medium sea green"
:foreground "white"
:weight bold)
("ACTION" :foreground
"medium sea green"
:weight bold)
("WAITING" :background
"yellow" :foreground
"purple" :weight bold)
("EVENT" :background
"gray25" :foreground
"white" :weight bold)
("PROJECT" :background
"firebrick"
:foreground "white"
:weight bold)
("STARTED" :background
"dodger blue"
:foreground "white"
:weight bold)
("DONE" :background
"white" :foreground
"black" :weight bold)
)
org-export-format-drawer-function 'jbd-org-export-format-drawer
org-capture-mode-hook '(spacemacs//org-capture-start)
org-html-prefer-user-labels t
org-roam-mode-sections '(org-roam-backlinks-section
org-roam-reflinks-section org-roam-unlinked-references-section)
org-occur-hook '(org-first-headline-recenter)
org-roam-log-setup-hook '(org-roam--register-completion-functions-h)
org-latex-image-default-width "370pt"
org-html-head-include-default-style nil
org-export-with-drawers t
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-html-html5-fancy t
org-treat-S-cursor-todo-selection-as-state-change nil
org-roam-node-annotation-function 'org-roam-node-read--annotation
org-link-parameters '(("imghttps"
:image-data-fun
org-image-link)
("imghttp" :image-data-fun
org-image-link)
("message" :follow
org-mac-link-mail-open)
("x-devonthink-item"
:follow
org-mac-link-devonthink-item-open)
("mac-evernote" :follow
org-mac-link-evernote-note-open)
("mac-outlook" :follow
org-mac-link-outlook-message-open)
("acrobat" :follow
org-mac-link-acrobat-open)
("skim" :follow
org-mac-link-skim-open)
("addressbook" :follow
org-mac-link-addressbook-item-open)
("x-together-item" :follow
org-mac-link-together-item-open)
("eww" :follow
org-eww-open :store
org-eww-store-link)
("rmail" :follow
org-rmail-open :store
org-rmail-store-link)
("mhe" :follow
org-mhe-open :store
org-mhe-store-link)
("irc" :follow
org-irc-visit :store
org-irc-store-link
:export org-irc-export)
("info" :follow
org-info-open :export
org-info-export :store
org-info-store-link
:insert-description
org-info-description-as-command)
("gnus" :follow
org-gnus-open :store
org-gnus-store-link)
("docview" :follow
org-docview-open :export
org-docview-export :store
org-docview-store-link)
("bibtex" :follow
org-bibtex-open :store
org-bibtex-store-link)
("bbdb" :follow
org-bbdb-open :export
org-bbdb-export :complete
org-bbdb-complete-link
:store
org-bbdb-store-link)
("w3m" :store
org-w3m-store-link)
("doi" :follow
org-link-doi-open :export
org-link-doi-export)
("roam" :follow
org-roam-link-follow-link)
("yt" :follow
org-yt-follow :export
org-yt-export
:image-data-fun
org-yt-image-data-fun)
("attachment" :follow
org-attach-follow
:complete
org-attach-complete-link)
("id" :follow
org-roam-id-open :store
org-id-store-link-maybe)
("hook" :follow my/hook
:export nil)
("file+sys")
("file+emacs")
("shell" :follow
org-link--open-shell)
("news" :follow
#[514
"\301\300\302 Q \"\207"
["news" browse-url ":"]
6 "\n\n(fn URL ARG)"]
)
("mailto" :follow
#[514
"\301\300\302 Q \"\207"
["mailto" browse-url
":"]
6 "\n\n(fn URL ARG)"]
)
("https" :follow
#[514
"\301\300\302 Q \"\207"
["https" browse-url ":"]
6 "\n\n(fn URL ARG)"]
)
("http" :follow
#[514
"\301\300\302 Q \"\207"
["http" browse-url ":"]
6 "\n\n(fn URL ARG)"]
)
("ftp" :follow
#[514
"\301\300\302 Q \"\207"
["ftp" browse-url ":"]
6 "\n\n(fn URL ARG)"]
)
("help" :follow
org-link--open-help
:store
org-link--store-help)
("file" :complete
org-link-complete-file)
("elisp" :follow
org-link--open-elisp)
)
org-html-format-headline-function
'org-html-format-headline-default-function
org-roam-capture-templates '(("A"
"accountability and task capture"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"accountability/%<%Y%m%d%H%M%S>-${slug}.org" "#+TITLE:
${title}\n#+FILETAGS: :accountability:")
:unnarrowed t)
("a"
"article notes or books and articles"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"literature-notes/%<%Y%m%d%H%M%S>-${slug}.org" "#+TITLE:
${title}\n#+FILETAGS: :literaturenote:")
:unnarrowed t)
("b"
"original writing"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"writing/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :writing:")
:unnarrowed t)
("B" "Plans" plain
"%?" :target
(file+head
"project/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :project:\n- Links ::\n- Source ::\n\n\n*
${title}\n")
:unnarrowed t)
("C"
"creative idea"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"ideas/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :idea:")
:unnarrowed t)
("c" "Conversation"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"conversations/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :conversation:")
:unnarrowed t)
("d"
"documents and deliverables"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"documents/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :document:")
:unnarrowed t)
("e" "emacs" plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"emacs/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :emacs:")
:unnarrowed t)
("f"
"finances and housekeeping"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"finances/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :finances:")
:unnarrowed t)
("g"
"groups and organizations"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"groups/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :groups:")
:unnarrowed t)
("I" "intelligence"
plain
"- Links ::\n- Source ::\n\n\n* ${title}\n%?"
:target
(file+head
"AI/%<%Y%m%d%H%M%S>-${slug}.org" "#+TITLE:
${title}\n#+FILETAGS: :intelligence:")
:unnarrowed t)
("k" "kanban" plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"kanban/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :kanban:")
:unnarrowed t)
("l"
"logistics of OpenAI"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"logistics/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :library:")
:unnarrowed t)
("L"
"Learning, lectures, and classes"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"lectures/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :learning:")
:unnarrowed t)
("n" "note" plain
"- Links ::\n- Source ::\n\n\n* ${title}\n%?"
:target
(file+head
"notes/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :note:")
:unnarrowed t)
("o"
"OpenAI, i.e. work"
plain
"- Links ::\n- Source ::\n\n\n* ${title}\n%?"
:target
(file+head
"notes/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :work:")
:unnarrowed t)
("O"
"Outline / Structure / Schelling Points"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"structure/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :structure:")
:unnarrowed t)
("p" "person" plain
"%?" :target
(file+head
"person/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :person:\n- Links ::
[[id:20240426T130414.177117][🌐 People]]\n- Source ::\n\n\n* ${title}\n")
:unnarrowed t)
("q"
"quotes about AI"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"quotes/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :quote:")
:unnarrowed t)
("S"
"Storytelling and Writing"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"storytelling/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :storytelling:")
:unnarrowed t)
("T" "Travel" plain
"%?" :target
(file+head
"travel/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :travel:\n- Links ::\n- Source ::\n\n\n*
${title}\n")
:unnarrowed t)
("W" "writers"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"writers/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :writers:person:")
:unnarrowed t)
("w"
"lectures and public talks"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"lectures/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :lectures:")
:unnarrowed t)
("X" "exemplars"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"exemplars/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :exemplars:")
:unnarrowed t)
("x" "cuts" plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"cuts/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :cuts:")
:unnarrowed t)
("z" "zork" plain
"- Links ::\nSource ::\n\n\n* ${title}\n%?"
:target
(file+head
(lambda
nil
(concat
(read-string "Enter file path: ")
"/%<%Y%m%d%H%M%S>-${slug}.org")
)
"#+TITLE: ${title}\n#+FILETAGS: :work:")
:unnarrowed t)
("$" "consumer"
plain
"- Links ::\n- Source ::\n\n* ${title}\n%?"
:target
(file+head
"consumer/%<%Y%m%d%H%M%S>-${slug}.org"
"#+TITLE: ${title}\n#+FILETAGS: :memoir:")
:unnarrowed t)
)
org-metaup-hook '(org-babel-load-in-session-maybe)
org-attach-auto-tag "ATTACHMENTS"
org-refile-allow-creating-parent-nodes 'confirm
org-agenda-restore-windows-after-quit t
org-export-date-timestamp-format "%Y%m%d %I:%M%p"
org-twbs-postamble nil
org-use-fast-todo-selection t
org-latex-text-markup-alist '((bold .
"\\textbf{%s}")
(code . verb)
(italic .
"\\textit{%s}")
(strike-through .
"\\sout{%s}")
(underline .
"\\uline{%s}")
)
org-priority-start-cycle-with-default nil
org-latex-inline-image-rules '(("file" .
"\\.\\(pdf\\|jpeg\\|jpg\\|png\\|ps\\|eps\\|tikz\\|pgf\\|svg\\|gif\\)\\'")
)
org-blank-before-new-entry '((heading . always)
(plain-list-item))
org-indent-mode-turns-off-org-adapt-indentation nil
org-imenu-depth 8
org-footnote-define-inline t
org-html-footnotes-section "<div id=\"footnotes\">\n<h2
class=\"footnotes\">%s </h2>\n<div id=\"footnote\">\n%s\n</div>\n</div>"
org-clock-persist-query-resume nil
org-timestamp-custom-formats '("<%a %m/%e/%Y>" .
"<%a %B %e %l:%M %p>")
org-latex-pdf-process '("xelatex -shell-escape -interaction nonstopmode
-output-directory %o %f" "xelatex -shell-escape -interaction nonstopmode
-output-directory %o %f" "xelatex -shell-escape -interaction nonstopmode
-output-directory %o %f")
org-return-follows-link t
org-transclusion-extensions '(org-transclusion-src-lines
org-transclusion-font-lock org-transclusion-indent-mode)
org-outline-path-complete-in-steps nil
org-special-ctrl-a/e t
org-tags-column 40
org-id-method 'ts
org-tab-before-tab-emulation-hook '(org-tempo-complete-tag)
org-superstar-item-bullet-alist '((42 . 183)
(43 . 183)
(45 . 183))
org-roam-indirect-buffer-hook '(org-roam--register-completion-functions-h)
org-clock-into-drawer nil
org-list-indent-offset 1
org-list-allow-alphabetical t
org-twbs-link-home "http://jaydixit.com"
org-ascii-table-use-ascii-art t
)
[-- Attachment #2: Type: text/html, Size: 131119 bytes --]
^ permalink raw reply [relevance 10%]
Results 201-259 of 259 prev (older) | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2023-09-06 14:55 ox-latex language handling in Org-9.5 vs 9.6 Max Nikulin
2023-09-06 22:20 ` Juan Manuel Macías
2023-09-07 11:50 ` Ihor Radchenko
2023-09-07 14:19 ` Juan Manuel Macías
2023-09-07 14:49 ` Max Nikulin
2023-09-08 10:30 ` Max Nikulin
2023-09-08 14:42 ` Juan Manuel Macías
2023-09-08 19:02 2% ` [patch] Fixes and improvements in org-latex-language-alist (was: ox-latex language handling in Org-9.5 vs 9.6) Juan Manuel Macías
2023-09-09 9:11 ` Ihor Radchenko
2023-09-09 10:36 ` [patch] Fixes and improvements in org-latex-language-alist Juan Manuel Macías
2023-09-09 11:33 ` Ihor Radchenko
2023-09-09 23:59 ` Juan Manuel Macías
2023-09-10 7:55 ` Ihor Radchenko
2023-09-10 11:06 2% ` Juan Manuel Macías
2023-09-24 21:47 3% [BUG] Previewing equations [9.6.6 (release_9.6.6 @ /usr/share/emacs/29.1/lisp/org/)] Peter Prevos
2023-10-01 15:08 Are 'placement' and 'float' "obsolete terms" in inline images exported to LaTeX? Juan Manuel Macías
2023-10-02 13:10 ` Ihor Radchenko
2023-10-02 14:55 ` Juan Manuel Macías
2023-10-04 9:12 ` Ihor Radchenko
2023-10-04 14:34 7% ` Juan Manuel Macías
2023-10-06 16:29 0% ` Ihor Radchenko
2023-10-06 18:35 0% ` Juan Manuel Macías
2023-11-01 3:43 12% Regression in latex export of tables? Vikas Rawal
2023-11-01 7:32 8% ` Vikas Rawal
2023-11-01 16:41 0% ` Max Nikulin
2023-11-01 23:04 11% ` Vikas Rawal
2023-11-02 9:29 8% ` Fraga, Eric
2023-11-03 0:58 11% ` Vikas Rawal
2023-11-03 2:30 8% ` Max Nikulin
2023-11-03 3:01 8% ` Vikas Rawal
2023-12-09 5:18 3% [BUG] ox-odt.el overrides auto-mode-alist defaults [9.6.6 (release_9.6.6 @ /usr/share/emacs/29.1/lisp/org/)] Peter Prevos
2024-01-02 17:20 10% org table export to latex, longtable, code does not compile Uwe Brauer
2024-01-02 17:58 8% ` [SOLVED] (was: org table export to latex, longtable, code does not compile) Uwe Brauer
2024-01-03 14:25 ` org table export to latex, longtable, code does not compile Ihor Radchenko
2024-01-03 15:56 11% ` Uwe Brauer
2024-01-02 23:46 20% [possible patch] Remove the '\\[0pt]' string from the last line of a verse block in LaTeX export Juan Manuel Macías
2024-01-13 15:08 10% ` Ihor Radchenko
2024-01-13 16:05 18% ` Juan Manuel Macías
2024-01-13 18:28 20% ` Ihor Radchenko
2024-01-13 20:22 18% ` Juan Manuel Macías
2024-01-14 12:33 10% ` Ihor Radchenko
2024-01-14 21:58 18% ` Juan Manuel Macías
2024-01-16 14:09 18% ` Ihor Radchenko
2024-01-16 19:33 18% ` Juan Manuel Macías
2024-01-17 13:00 17% ` Ihor Radchenko
2024-01-17 15:58 9% ` Max Nikulin
2024-01-17 17:50 13% ` Juan Manuel Macías
2024-01-18 13:05 15% ` Ihor Radchenko
2024-01-19 17:28 10% ` Juan Manuel Macías
2024-01-20 12:34 10% ` Ihor Radchenko
2024-01-20 13:22 9% ` Juan Manuel Macías
2024-01-20 13:46 9% ` Ihor Radchenko
2024-01-20 15:41 9% ` Juan Manuel Macías
2024-01-20 18:47 9% ` Ihor Radchenko
2024-01-20 20:27 18% ` Juan Manuel Macías
2024-01-21 13:42 35% ` Ihor Radchenko
2024-01-21 19:25 9% ` Juan Manuel Macías
2024-01-31 11:39 10% ` Ihor Radchenko
2024-01-21 6:06 18% ` Max Nikulin
2024-01-20 10:09 18% ` Max Nikulin
2024-01-20 10:57 10% ` Juan Manuel Macías
2024-01-20 12:41 9% ` Ihor Radchenko
2024-01-21 5:56 20% ` Max Nikulin
2024-01-20 10:27 10% ` Max Nikulin
2024-01-20 12:35 10% ` Ihor Radchenko
2024-01-21 5:44 9% ` Max Nikulin
2024-01-31 15:09 9% ` Ihor Radchenko
2024-01-29 20:03 An academic journal entirely made in Org-Mode Juan Manuel Macías
2024-01-29 23:16 ` Dr. Arne Babenhauserheide
2024-01-31 14:30 4% ` Juan Manuel Macías
2024-02-02 11:39 8% figures not exported properly by ox-latex mahmood sheikh
2024-07-09 20:15 0% ` Karthik Chikmagalur
2024-07-11 8:39 0% ` mahmood sheikh
2024-02-15 9:18 17% [BUG]: elusive vertical white-space errors in engraved source block export gerard.vermeulen
2024-04-11 19:26 [Pre-PATCH] Overhaul of the LaTeX preview system Yaroslav Drachov
2024-04-18 20:04 ` Karthik Chikmagalur
2024-04-18 20:13 9% ` Yaroslav Drachov
2024-04-29 0:28 [PATCH] lisp/org.el: Obsolete `org-cached-entry-get' in favor of `org-entry-get' Morgan Smith
2024-04-29 16:58 ` Ihor Radchenko
2024-04-29 18:36 ` Morgan Smith
2024-04-30 10:20 ` Ihor Radchenko
2024-05-01 17:14 7% ` Morgan Smith
2024-05-27 15:07 SMART goals and bolding the first letter Sharon Kimble
2024-05-27 16:21 8% ` Dr. Arne Babenhauserheide
2024-10-24 16:00 10% [BUG] wrong side of point [9.7.13 (9.7.13-8566bc @ /Users/jaydixit/.emacs.d/elpa/develop/org-9.7.13/)] Jay Dixit
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).