<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"

>
<channel>
	<title>Sacha Chua - category - emacs</title>
	<atom:link href="https://sachachua.com/blog/category/emacs/feed/index.xml" rel="self" type="application/rss+xml" />
	<atom:link href="https://sachachua.com/blog/category/emacs" rel="alternate" type="text/html" />
	<link>https://sachachua.com/blog/category/emacs/feed/index.xml</link>
	<description>Emacs, sketches, and life</description>
  
	<lastBuildDate>Mon, 05 Oct 2026 21:30:38 GMT</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>11ty</generator>
  <item>
		<title>Emacs Lisp: Parse page ranges, insert issue references</title>
		<link>https://sachachua.com/blog/2026/10/emacs-lisp-parse-page-ranges-insert-issue-references/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 05 Oct 2026 21:30:38 GMT</pubDate>
    <category>elisp</category>
<category>emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/10/emacs-lisp-parse-page-ranges-insert-issue-references/</guid>
		<description><![CDATA[<p>
<a href="https://social.tchncs.de/@zyzzyxdonta/117387493564517016">David Pape asked:</a>
</p>

<blockquote>
<p>
I just typed
</p>

<p>
<code>&gt;Closes: #47, #48, #49, #50, #51, #52, #53, #54</code>
</p>

<p>
into a commit description, all by hand.
</p>

<p>
Is there a way in Emacs to expand some kind of range description to make this easier? 😅
</p>

<p>
I want to expand strings like "5-10, 15-18, 3" into numbers.
</p>
</blockquote>

<p>
Hmm, could be useful. It reminds me of how page ranges work, which will be handy if I want to tinker with PDFs. Let's see if something like this works:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">sacha-parse-page-range</span> (s)
  <span class="org-doc">"Parse a page range string and return a list of numbers.</span>
<span class="org-doc">Ex: 1-5</span>
<span class="org-doc">2-4, 6-10</span>
<span class="org-doc">1 4 7-9</span>
<span class="org-doc">3-11/2   - this one specifies an increment"</span>
  (seq-mapcat
   (<span class="org-keyword">lambda</span> (part)
     (<span class="org-keyword">let</span> ((nums (mapcar <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">string-to-number</span> (split-string part <span class="org-string">" *[-/] *"</span>))))
       (<span class="org-keyword">if</span> (= (length nums) 1)
           nums
         (number-sequence (elt nums 0) (elt nums 1) (elt nums 2)))))
   (split-string s <span class="org-string">"[, \t\n\r]+"</span>)))

(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">sacha-parse-page-range</span> ()
  (<span class="org-keyword">should</span> (equal (sacha-parse-page-range <span class="org-string">"5-10"</span>)
                 <span class="org-highlight-quoted-quote">'</span>(5 6 7 8 9 10)))
  (<span class="org-keyword">should</span> (equal (sacha-parse-page-range <span class="org-string">"1-5, 8"</span>)
                 <span class="org-highlight-quoted-quote">'</span>(1 2 3 4 5 8)))
  (<span class="org-keyword">should</span> (equal (sacha-parse-page-range <span class="org-string">"1 4 7-9"</span>)
                 <span class="org-highlight-quoted-quote">'</span>(1 4 7 8 9)))
  (<span class="org-keyword">should</span> (equal (sacha-parse-page-range <span class="org-string">"3-11/2"</span>)
                 <span class="org-highlight-quoted-quote">'</span>(3 5 7 9 11))))

(<span class="org-keyword">defun</span> <span class="org-function-name">sacha-issue-range</span> (range)
  <span class="org-doc">"Expand RANGE to a list of issues and insert them."</span>
  (<span class="org-keyword">interactive</span> <span class="org-string">"MRange (ex: 1-5, 7): "</span>)
  (<span class="org-keyword">let</span> ((s (mapconcat (<span class="org-keyword">lambda</span> (n) (format <span class="org-string">"#%d"</span> n))
                      (sacha-parse-page-range range)
                      <span class="org-string">", "</span>)))
    (<span class="org-keyword">when</span> (called-interactively-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">any</span>)
      (insert s))
    s))
</code></pre>
</div>


<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#coding-emacs-lisp-parse-page-ranges">EmacsConfiguration.</a></div><div><a href="https://sachachua.com/blog/2026/10/emacs-lisp-parse-page-ranges-insert-issue-references/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F10%2Femacs-lisp-parse-page-ranges-insert-issue-references%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>2026-10-05 Emacs news</title>
		<link>https://sachachua.com/blog/2026/10/2026-10-05-emacs-news/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 05 Oct 2026 14:01:16 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/10/2026-10-05-emacs-news/</guid>
		<description><![CDATA[<p>
The Emacs Carnival for October is about <a href="https://www.emacswiki.org/emacs/CarnivalOctober2026">looking into your crystal ball</a>. I'd love to see what you're looking forward to exploring. Thanks to George Jones for hosting!
</p>

<ul class="org-ul">
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs.si (in person): Emacs.si meetup #10 2026 (v #živo) <a href="https://dogodki.kompot.si/events/df5d39f6-4d78-4841-b207-ef2c9e60bd5c">https://dogodki.kompot.si/events/df5d39f6-4d78-4841-b207-ef2c9e60bd5c</a> Mon Oct 5 1900 CET</li>
<li>Atelier Emacs Montpellier (in person) <a href="https://lebib.org/date/atelier-emacs">https://lebib.org/date/atelier-emacs</a> Fri Oct 9 1800 Europe/Paris</li>
<li>Emacs Berlin: In-Person-Only Emacs-Berlin Stammtisch <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Tue Oct 13 1900 Europe/Berlin</li>
<li>OrgMeetup (virtual) <a href="https://orgmode.org/worg/orgmeetup.html">https://orgmode.org/worg/orgmeetup.html</a> Wed Oct 14 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/UTC - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Thu Oct 15 0000 Asia/Singapore</li>
</ul></li>
<li>Beginner:
<ul class="org-ul">
<li><a href="https://www.jamescherti.com/emacs-resources/">A list of Emacs learning materials and references</a> (<a href="https://www.reddit.com/r/emacs/comments/1wwnyct/a_list_of_emacs_learning_materials_and_references/">Reddit</a>)</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://lvajxi03.github.io/posts/2026-09-30/">Customize Me</a> (<a href="https://mastodon.social/@marcin_bielewicz/117361564204638422">@marcin_bielewicz</a>)</li>
<li><a href="https://github.com/joshbax189/package-load-indicator">[ANN] package-load-indicator: instantly see which packages are loaded within your init file</a> (<a href="https://www.reddit.com/r/emacs/comments/1wxu76q/ann_packageloadindicator_instantly_see_which/">Reddit</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=0sQB5WsTZ7U">Reading the emacs compilation mode source code</a> (01:29:41)</li>
<li><a href="https://www.youtube.com/watch?v=tybv1j7H9nQ">Reading some emacs package source code (e.g. comint)</a> (01:20:07)</li>
<li><a href="https://www.youtube.com/watch?v=oXEWpyhwqxU">Desafio #1 | Divisão por 5 (Emacs+Elisp)</a> (19:53)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://bsky.app/profile/citizen428.net/post/3mx4ncb2px22p">Tip: increase text scale for modes like elfeed-show - @citizen428.net on Bluesky</a></li>
<li><a href="https://github.com/jamescherti/persist-text-scale.el">jamescherti/persist-text-scale.el: Emacs: Persist and Restore Text Scale</a> (<a href="https://www.reddit.com/r/emacs/comments/1wvi9rq/persisttextscaleel_persist_and_restore_emacs_text/">Reddit</a>, <a href="https://irreal.org/blog/?p=14122">Irreal</a>)</li>
<li><a href="https://protesilaos.com/codelog/2026-10-05-emacs-doric-meadow-doric-mountain/">Protesilaos: Emacs: ‘doric-meadow’ and ‘doric-mountain’ coming to the ‘doric-themes’</a></li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://techhub.social/@lispwizard/117365321892889079">Tip about C-r RET to turn isearch into a minibuffer prompt (@lispwizard@techhub.social)</a></li>
<li><a href="https://mbork.pl/2026-09-28_How_many_screens_left">Marcin Borkowski: How many screens left</a></li>
<li><a href="https://jmthornton.net/blog/p/emacs-project-override/">Overriding project.el project root in Emacs | Blog | Jade Michael Thornton</a> (<a href="https://floss.social/@artfulrobot/117384579308145113">@artfulrobot@floss.social</a>)</li>
<li><a href="https://github.com/ismd/preview-tab.el">preview-tab: VS Code's preview tab for Emacs, now on MELPA</a> (<a href="https://www.reddit.com/r/emacs/comments/1wu9jai/previewtab_vs_codes_preview_tab_for_emacs_now_on/">Reddit</a>)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://bsky.app/profile/citizen428.net/post/3mwwzlb2ett2s">Tip: dired-async-mode when you're doing long-running actions @citizen428.net on Bluesky</a></li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://citizen428.net/blog/emacs-simple-obsidian/">Emacs: Obsidian without external packages - citizen428.net</a></li>
<li><a href="https://christiantietze.de/posts/2026/09/watch-zettelkasten-for-regular-emacs-hackers/">Christian Tietze: Watch My EmacsConf Talk: Zettelkasten for Regular Emacs Hackers</a></li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-09-29-emacs-denote-data-status-update/">Protesilaos: Emacs: status update on the ‘denote-data’ cache for Denote</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://isamert.net/2026/10/04/opening-org-capture-in-a-new-frame.html">Isa Mert Gurbuz: Opening org-capture in a new frame</a></li>
<li><a href="https://github.com/davidlee/org-incremental-writing">org-incremental-writing package</a> (<a href="https://www.reddit.com/r/emacs/comments/1wxx7td/orgincrementalwriting_package/">Reddit</a>) - written with agent assistance</li>
<li><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/">Sacha Chua: Emacs Chat 31: Pedro A. Aranda Gutierrez</a> - Org LaTeX export with fallbacks (<a href="https://www.youtube.com/watch?v=aEnacESU-DU">YouTube</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/09/now-org-toggle-timestamp-overlays-is.html">Raymond Zeitler: Now org-toggle-timestamp-overlays is Disabled</a></li>
<li><a href="https://github.com/bradmont/org-roam-tree/tree/master">Org-roam-tree update: jit rendering, arbitrary search and more!</a> (<a href="https://www.reddit.com/r/emacs/comments/1wvj882/orgroamtree_update_jit_rendering_arbitrary_search/">Reddit</a>)</li>
<li><a href="https://github.com/SenkiReign/roam-inline">inline backlinks for org-roam</a> (<a href="https://www.reddit.com/r/emacs/comments/1wu6wgk/inline_backlinks_for_orgroam/">Reddit</a>)</li>
<li><a href="https://github.com/yibie/excali-mode/releases/tag/v0.2.0">excali-mode 0.2.0: a diagram DSL with explicit placement and Org Babel support</a> (<a href="https://www.reddit.com/r/emacs/comments/1wuc6bk/excalimode_excalidraw_running_natively_inside/">Reddit</a>, <a href="https://www.reddit.com/r/emacs/comments/1wy58em/excalimode_020_a_diagram_dsl_with_explicit/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1ww5ac7/github_does_not_preview_org_mode_files_anymore/">Github does not preview Org mode files any more</a> (<a href="https://github.com/github/markup/pull/2106">bug</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1wxeb8l/ive_used_emacs_successfully_for_decades_without/">I've used emacs successfully for decades without using LSP or Eglot. Tell me what I'm missing.</a></li>
<li><a href="https://github.com/bigbuger/python-rope.el">A package using rope to do python code refactoring in emacs</a></li>
<li><a href="https://youtu.be/eVyr1dLExOw">Clutch update: a video walkthrough (PostgreSQL, JDBC, row editing, JSON hover preview)</a> (<a href="https://www.youtube.com/watch?v=eVyr1dLExOw">YouTube</a> 04:17, <a href="https://github.com/LuciusChen/clutch">GitHub</a>, <a href="https://www.reddit.com/r/emacs/comments/1wu8ewd/clutch_update_a_video_walkthrough_postgresql_jdbc/">Reddit</a>)</li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://ankit.earth/blog/fix-nested-emacs-frames/">Ankit Gadiya: Fix nested Emacs frames</a> (<a href="https://irreal.org/blog/?p=14124">Irreal</a>)</li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://github.com/Daskeladden/canvas-browser">canvas-browser: a Chromium page in an Emacs buffer, drawn on an Emacs 32 canvas image</a> (<a href="https://www.reddit.com/r/emacs/comments/1wv56lq/canvasbrowser_a_chromium_page_in_an_emacs_buffer/">Reddit</a>)</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://github.com/rougier/tootle">tootle: A tiny, text-only, read-only, emoji-free Mastodon client for Emacs.</a> (<a href="https://www.reddit.com/r/emacs/comments/1wvrnll/a_tiny_textonly_readonly_emojifree_mastodon/">Reddit</a>) Also rougier's experiment in vibe-coding</li>
<li><a href="http://en.andros.dev/blog/782e8f3b/how-i-built-a-whatsapp-client-for-emacs-without-an-api/">Andros Fenollosa: How I built a WhatsApp client for Emacs without an API</a></li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="http://yummymelon.com/devnull/announcing-triode-el.html">nfdn: Announcing triode.el - control an app for playing Internet radio</a> (<a href="https://sfba.social/@kickingvegas/117389609128787208">@kickingvegas@sfba.social</a>)</li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="http://curious.galthub.com/blog/2026-09-29/">Zippy in the mists of time · Curious Musings</a> (<a href="https://fosstodon.org/@eludom/117361750520628616">@eludom@fosstodon.org</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/10/what-is-spook.html">Raymond Zeitler: What is spook?</a></li>
<li><a href="https://dataswamp.org/~incal/el-gpu/">el-gpu</a> demo <a href="https://dataswamp.org/~incal/sw-vidz/pix-el.mkv">pix-el.mkv</a></li>
</ul></li>
<li>LLMs:
<ul class="org-ul">
<li><a href="https://github.com/ahyatt/llm">LLM release 0.33.0, with decisions!</a> (<a href="https://www.reddit.com/r/emacs/comments/1wxn0jg/llm_release_0330_with_decisions/">Reddit</a>, <a href="https://www.reddit.com/r/emacs/comments/1ws60sw/llm_package_support_for_jev_layastyle_quick/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=wwW7D80JK0M">AI built my Emacs plugin</a> (01:31)</li>
<li><a href="https://www.youtube.com/watch?v=mz9JQnCbbzg">Emacs ollama agent demo 01</a> (02:22)
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=MNpu2kRcKd0">introduction (配音版)</a> (06:04)</li>
<li><a href="https://www.youtube.com/watch?v=jkQnKvSrBaM">change font and size</a> (02:22)</li>
<li><a href="https://www.youtube.com/watch?v=zUwNkaD41ws">網站內容擷取</a> (01:14)</li>
<li><a href="https://www.youtube.com/watch?v=c81VC5mIWF4">排序</a> (02:17)</li>
</ul></li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.emacswiki.org/emacs/CarnivalOctober2026">EmacsWiki : CarnivalOctober2026 - Crystal ball</a> (<a href="https://fosstodon.org/@eludom/117362492633626441">@eludom@fosstodon.org</a>)</li>
<li><a href="https://hachyderm.io/@emacs_london/117388137407624934">Matei Candea (social anthropologist) is looking for interviewees for a research project on Emacs, its users and its community (@emacs_london@hachyderm.io)</a></li>
<li><a href="https://social.tchncs.de/@omidmash/117364362694272553">Looking for people who want to have a Lisp meetup in Hamburg (@omidmash@social.tchncs.de)</a></li>
<li><a href="https://chrismaiorana.com/m-x-magic/">Chris Maiorana: M-x and the future of Emacs</a></li>
<li><a href="https://ffloyd.space/thoughts/2026-10-01-roman-and-editors">Roman and Editors ⋄ ffloyd.space</a> (<a href="https://mastodon.social/@ffloyd/117366593139144188">@ffloyd</a>)</li>
<li><a href="https://eliasebner.com/blog/thoughts/switching-to-emacs-as-a-neovim-user/">Switching To Emacs as a Neovim User</a> (<a href="https://www.reddit.com/r/emacs/comments/1wsmcxe/switching_to_emacs_as_a_neovim_user/">Reddit</a>, <a href="https://lobste.rs/s/bctr1m/switching_emacs_as_neovim_user">lobste.rs</a>)</li>
<li><a href="https://www.youtube.com/watch?v=ysq9HQ5H_gU">Yay Emacs 39: Testing my new streaming functions</a> (01:54:59) working on Emacs News, tinkering with speech commands
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=SqsxuN3CPWc">Yay Emacs 40: Tinkering with my speech commands and working on the schedule for EmacsConf</a> (58:14)</li>
</ul></li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=LmjESSIlyDg">Let Emacs make you happy</a> (12:05) - Highlight mode, sentences, split windows, Org mode, functions, and navigation.</li>
<li><a href="https://v.redd.it/phpq8z7eyxsh1">Emacs is now my new rofi</a> (<a href="https://www.reddit.com/r/emacs/comments/1wvepbp/emacs_is_now_my_new_rofi/">Reddit</a>) - emacsclient + vertico for launching applications</li>
<li><a href="http://yummymelon.com/devnull/announcing-aqui.html">nfdn: Announcing Aquí</a> (<a href="https://irreal.org/blog/?p=14114">Irreal</a>) - location finder</li>
<li><a href="https://github.com/cark/isled/blob/main/frontends/emacs/README.md">isled - a personal issue ledger</a> (<a href="https://www.reddit.com/r/emacs/comments/1wvgd6l/isled_a_personal_issue_ledger/">Reddit</a>) see also org-edna if you want to have task dependencies; mostly AI written</li>
<li><a href="https://github.com/jamescherti/bufferfile.el">Emacs bufferfile.el: Rename, Delete, or Copy Files and Associated Buffers (e.g., clones/indirect buffers) [Release 1.0.9]​</a></li>
<li><a href="https://github.com/ruediger/qrencode-el/releases/tag/v1.6">qrencode-el 1.6: export QR codes as SVG, get the SVG DOM using Elisp</a> (<a href="https://hachyderm.io/@ruediger/117368390989543260">@ruediger@hachyderm.io</a>)</li>
<li><a href="https://tv.dyne.org/w/aQTaXgg7Zvp7j5HNnnzoPN">[22] Emacs Reader: Rendering Architecture Refactor and Other Fixes - Dyne.org TV</a> (<a href="https://mathstodon.xyz/@divyaranjan/117383432660564714">@divyaranjan@mathstodon.xyz</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel:
<ul class="org-ul">
<li><a href="https://yhetil.org/emacs-devel/jwv1pa9r14c.fsf-monnier+emacs@gnu.org/">Getting rid of pathologically slow regexp matches - Stefan Monnier</a></li>
<li><a href="https://yhetil.org/emacs-devel/2b9df97c-4882-4f42-bdf0-4818a3afd81e@imayhem.com/">Library for exporting PDF - Cecilio Pardo</a></li>
<li><a href="https://yhetil.org/emacs-devel/jwv8q4oypd1.fsf-monnier+emacs@gnu.org/">Explanation of quoting in docstrings</a></li>
</ul></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=314cc0201f118daf5bd5a202a371166bbc3a492f">* lisp/faces.el (header-line-emphasis): New face.</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=1324e3660105b08a90596c47eee66eca5426aa01">Add a 'syntax-propertize-function' to 'lisp-mode'</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=f78ab3b719d3db8203b2bf9fc877a277a6d4ad1b">Indent HTML lists by a consistent width in SHR</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://elpa.nongnu.org/nongnu/ebuild-mode.html">ebuild-mode</a>: edit ebuild and eclass files (NonGNU ELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/triode">triode</a>: Interface to Triode app, macOS internet radio (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/pyfun-mode">pyfun-mode</a>: Major mode for the Pyfun language (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/neofetch">neofetch</a>: Pretty system information tool for the Eshell (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/latex-to-svg-for-latex">latex-to-svg-for-latex</a>: Preview LaTeX math as SVG in LaTeX buffers (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/gptel-annotate">gptel-annotate</a>: Annotate files or buffers with LLMs (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/clel">clel</a>: Runtime library for ClojureElisp (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/brewpage">brewpage</a>: Publish buffers/regions to brewpage.app (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-10">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!</p>
<div><a href="https://sachachua.com/blog/2026/10/2026-10-05-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F10%2F2026-10-05-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 31: Pedro A. Aranda Gutierrez</title>
		<link>https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Fri, 02 Oct 2026 23:01:46 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/</guid>
		<description><![CDATA[<p>
We chatted with Pedro about Org Mode, LaTeX exports and font management
including alternatives and things you can and can't do depending
on your choices.
</p>

<p>
Update <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-10-04">[2026-10-04 Sun]</time></span>: Looks like the issue with the hand emoji was
that there's a regression in TeXLive: LaTeX 2024 produces the PDF with
the right fonts and colours, but LaTeX 2026 doesn't.
</p>

<p>
Links:
</p>

<ul class="org-ul">
<li><a href="https://codeberg.org/paaguti">paaguti - Codeberg.org</a></li>
<li><a href="https://orgmode.org/worg/org-mailing-list.html">Org mailing list</a></li>
</ul>

<p>
<video preload="none" controls="1" src="https://archive.org/download/emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez.webm" poster="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/2026-09-24_19-03-03.png" type="video/webm"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/2026-09-24_19-03-03.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/emacs-chat-31-pedro-a-aranda-gutierrez/">View in the Internet Archive</a>, <a href="https://youtube.com/live/aEnacESU-DU">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-emacs-chat-31-pedro-a-aranda-gutierrez-transcript">read the transcript online</a>, download the transcript (<a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez.vtt">VTT</a> or <a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez.txt">TXT</a>), or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>
<div id="outline-container-emacs-chat-31-pedro-a-aranda-gutierrez-chapters" class="outline-3">
<h3 id="emacs-chat-31-pedro-a-aranda-gutierrez-chapters"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-31-pedro-a-aranda-gutierrez-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-emacs-chat-31-pedro-a-aranda-gutierrez-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="3.528">0:00</span> Opening</li>
<li><span class="audio-time" data-start="84.912" data-stop="90.099">1:24</span> Setting things up</li>
<li><span class="audio-time" data-start="153.222" data-stop="155.404">2:33</span> Local variables</li>

<li><span class="audio-time" data-start="236.831" data-stop="242.158">3:56</span> Mini export menu</li>

<li><span class="audio-time" data-start="257.281" data-stop="259.784">4:17</span> Basic output with different fonts</li>
<li><span class="audio-time" data-start="289.865" data-stop="296.215">4:49</span> Adding a code block as source</li>
<li><span class="audio-time" data-start="378.757" data-stop="381.700">6:18</span> The problem with exporting Unicode</li>
<li><span class="audio-time" data-start="465.578" data-stop="467.781">7:45</span> Trying a different font</li>
<li><span class="audio-time" data-start="545.026" data-stop="548.691">9:05</span> LuaLaTeX</li>
<li><span class="audio-time" data-start="637.678" data-stop="640.762">10:37</span> Switching to FreeSerif, FreeSans, and FreeMono</li>
<li><span class="audio-time" data-start="724.925" data-stop="726.507">12:04</span> LuaLaTeX is slower</li>
<li><span class="audio-time" data-start="762.482" data-stop="766.428">12:42</span> The fonts are rendered</li>
<li><span class="audio-time" data-start="822.896" data-stop="824.558">13:42</span> The farmer on the donkey in front of the train</li>
<li><span class="audio-time" data-start="935.772" data-stop="937.134">15:35</span> Unicode and LuaLaTeX</li>
<li><span class="audio-time" data-start="1020.428" data-stop="1021.449">17:00</span> Emojis</li>
<li><span class="audio-time" data-start="1117.654" data-stop="1123.061">18:37</span> Fallback fonts</li>

<li><span class="audio-time" data-start="1299.389" data-stop="1302.132">21:39</span> Fallback configuration</li>

<li><span class="audio-time" data-start="1367.285" data-stop="1369.810">22:47</span> Selecting fonts</li>
<li><span class="audio-time" data-start="1450.642" data-stop="1454.547">24:10</span> Fallbacks</li>
<li><span class="audio-time" data-start="1606.485" data-stop="1609.869">26:46</span> The LaTeX produced</li>

<li><span class="audio-time" data-start="1641.521" data-stop="1643.644">27:21</span> Character families should be in the Messages buffer</li>
<li><span class="audio-time" data-start="1809.653" data-stop="1812.076">30:09</span> Behind the scenes</li>
<li><span class="audio-time" data-start="1860.410" data-stop="1862.292">31:00</span> Refreshing local variables</li>
<li><span class="audio-time" data-start="2017.885" data-stop="2023.331">33:37</span> Scaling fonts to match lowercase</li>

<li><span class="audio-time" data-start="2057.987" data-stop="2062.375">34:17</span> Specifying the fallbacks</li>
<li><span class="audio-time" data-start="2133.006" data-stop="2136.350">35:33</span> HarfBuzz</li>
<li><span class="audio-time" data-start="2177.821" data-stop="2180.284">36:17</span> Upcoming work on Babel (the LaTeX package)</li>
<li><span class="audio-time" data-start="2222.401" data-stop="2225.364">37:02</span> More about HarfBuzz and ligatures?</li>
<li><span class="audio-time" data-start="2363.982" data-stop="2368.612">39:23</span> Upcoming talk on accessible presentations</li>
<li><span class="audio-time" data-start="2479.838" data-stop="2482.741">41:19</span> Upcoming work on Polyglossia and Babel</li>
<li><span class="audio-time" data-start="2522.932" data-stop="2529.583">42:02</span> Chinese, Japanese, and Korean</li>

<li><span class="audio-time" data-start="2662.973" data-stop="2666.497">44:22</span> The development process</li>
<li><span class="audio-time" data-start="2892.519" data-stop="2894.583">48:12</span> Retirement</li>
<li><span class="audio-time" data-start="2981.142" data-stop="2982.285">49:41</span> Fallback fonts</li>
<li><span class="audio-time" data-start="3186.429" data-stop="3189.254">53:06</span> LaTeX versions</li>
<li><span class="audio-time" data-start="3398.714" data-stop="3402.640">56:38</span> Sans serif fonts are better for accessibility</li>
<li><span class="audio-time" data-start="3429.775" data-stop="3432.518">57:09</span> Wanting markup for sans serif</li>
<li><span class="audio-time" data-start="3633.922" data-stop="3638.668">1:00:33</span> Contacting Pedro</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-emacs-chat-31-pedro-a-aranda-gutierrez-transcript-section" class="outline-3">
<h3 id="emacs-chat-31-pedro-a-aranda-gutierrez-transcript-section"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-31-pedro-a-aranda-gutierrez-transcript-section">Transcript</a></h3>
<div class="outline-text-3" id="text-emacs-chat-31-pedro-a-aranda-gutierrez-transcript-section">
<details class="code-details"><a name="ID-emacs-chat-31-pedro-a-aranda-gutierrez-transcript"></a><summary>Expand this to read the transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="3.528000"><strong class="speaker-name">Sacha:</strong>  But first, I will press the go live</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3.568000" data-stop="5.738000">button because this time I'm going to remember.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="9.042000" data-stop="13.068000">Okay, now I think we are live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="13.829000" data-stop="17.014000">Welcome to Emacs Chat 31.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="17.034000" data-stop="20.840000">Today we have Pedro Aranda Gutierrez, who is here</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.900000" data-stop="23.212000">to talk about all the cool things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="23.213000" data-stop="24.706000">with Org LaTeX Export.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="25.527000" data-stop="28.612000">And Prot is here also because he knows a lot more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="28.652000" data-stop="30.795000">about fonts and writing in multiple languages and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="30.815000" data-stop="31.356000">all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="31.376000" data-stop="33.559000">So I'm counting on Prot to ask questions when my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="33.579000" data-stop="37.345000">mind just goes like, ooh, cool demo.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="37.848000" data-stop="42.934000"><strong class="speaker-name">Pedro:</strong>  Hello, here we are.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="44.256000" data-stop="49.803000">So yes, I wanted to talk about what is news for all.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="50.544000" data-stop="55.269000">At least this part, the integration of the basic</span> <span class="audio-time caption" data-speaker="Pedro" data-start="55.309000" data-stop="61.937000">font management with lualatex is in main</span> <span class="audio-time caption" data-speaker="Pedro" data-start="61.938000" data-stop="63.079000">right now in Org Mode.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="64.358000" data-stop="65.239000"><strong class="speaker-name">Prot:</strong>  Very well, very well.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="65.259000" data-stop="70.968000"><strong class="speaker-name">Pedro:</strong>  I was not expecting that to happen,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="70.969000" data-stop="73.072000">but it happened.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="73.092000" data-stop="74.194000">So that's the situation.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="74.755000" data-stop="80.004000">And I would just like to go stepwise on what you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="80.044000" data-stop="82.468000">have to do, what you can do, what you can't do</span> <span class="audio-time caption" data-speaker="Pedro" data-start="83.289000" data-stop="84.932000">with these things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="84.000000">1:24</span> <strong>Setting things up</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="84.912000" data-stop="90.099000"><strong class="speaker-name">Pedro:</strong> This is my Emacs 31 compiled a couple of days</span> <span class="audio-time caption" data-speaker="Pedro" data-start="90.139000" data-stop="91.821000">ago and I'm on devel.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="92.081000" data-stop="97.167000">I'm on main here, on main for Org mode.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="98.549000" data-stop="102.054000">I have a small Org file here which initially</span> <span class="audio-time caption" data-speaker="Pedro" data-start="102.154000" data-stop="104.777000">I'm going to be using pdflatex to compile,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="106.073000" data-stop="109.218000">with a trick: I'm not compiling in the background,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="109.279000" data-stop="113.165000">but I have a script here in the terminal to have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="113.205000" data-stop="117.413000">a bit more of feedback or direct feedback of what</span> <span class="audio-time caption" data-speaker="Pedro" data-start="117.493000" data-stop="118.054000">is happening.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="119.296000" data-stop="122.901000">If we go through this...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="122.902000" data-stop="127.550000">I mean this is basically my template</span> <span class="audio-time caption" data-speaker="Pedro" data-start="127.830000" data-stop="129.854000">to start any article. It's going to be an</span> <span class="audio-time caption" data-speaker="Pedro" data-start="129.954000" data-stop="130.495000">article.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="132.533000" data-stop="134.296000">we are going to use pdflatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="135.358000" data-stop="141.770000">And the other thing is I have a very small thing</span> <span class="audio-time caption" data-speaker="Pedro" data-start="141.891000" data-stop="144.596000">with the default font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="144.676000" data-stop="147.100000">Then I have also the Sans Serif font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="147.701000" data-stop="152.871000">I also have some monospaced fonts with it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="153.000000">2:33</span> <strong>Local variables
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-03-16-167.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-03-16-167.jpg" alt="image from video 00:03:16.167" data-time="00:03:16.167"></a><span class="audio-time caption" data-speaker="Pedro" data-start="153.222000" data-stop="155.404000"><strong class="speaker-name">Pedro:</strong> The things that I have here that might be</span> <span class="audio-time caption" data-speaker="Pedro" data-start="155.444000" data-stop="157.867000">interesting for people is that another thing that</span> <span class="audio-time caption" data-speaker="Pedro" data-start="157.967000" data-stop="161.911000">is quite recent for Emacs is that we are starting</span> <span class="audio-time caption" data-speaker="Pedro" data-start="161.971000" data-stop="169.339000">to have a lot of the configuration variables as</span> <span class="audio-time caption" data-speaker="Pedro" data-start="169.459000" data-stop="170.420000">local variables.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="170.440000" data-stop="173.723000">So you don't have to go and get in</span> <span class="audio-time caption" data-speaker="Pedro" data-start="173.724000" data-stop="177.508000">your init's .el to have anything configured.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="177.725000" data-stop="178.547000">Why?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="178.567000" data-stop="182.474000">This is another sort of fight against the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="182.654000" data-stop="183.696000">windmills I've had.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="184.618000" data-stop="184.879000">Why?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="185.099000" data-stop="189.287000">Because with this I can make my Org files more</span> <span class="audio-time caption" data-speaker="Pedro" data-start="189.327000" data-stop="191.251000">distributable, so I can share them with more</span> <span class="audio-time caption" data-speaker="Pedro" data-start="191.291000" data-stop="193.936000">people and they don't have to touch anything in</span> <span class="audio-time caption" data-speaker="Pedro" data-start="193.996000" data-stop="195.138000">their configurations.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="196.160000" data-stop="198.805000">That's the basic idea.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="199.392000" data-stop="202.795000">Small little trick that I have is that I'm using</span> <span class="audio-time caption" data-speaker="Pedro" data-start="202.875000" data-stop="206.258000">fancyvrb for everything instead of listings.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="207.139000" data-stop="211.163000">And there was somewhere in the documentation, you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="211.183000" data-stop="215.046000">also have an explanation for how to use fancyvrb</span> <span class="audio-time caption" data-speaker="Pedro" data-start="215.507000" data-stop="218.469000">to substitute listings and get nice listings in</span> <span class="audio-time caption" data-speaker="Pedro" data-start="218.529000" data-stop="225.796000">your LaTeX exported by Org.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="225.816000" data-stop="229.399000">And that's the only thing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="229.379000" data-stop="231.663000">Initially, pdflatex,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="231.763000" data-stop="232.844000">Everything is plain.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="233.726000" data-stop="236.830000">If I go and just go and export...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="236.000000">3:56</span> <strong>Mini export menu
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-03-57-700.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-03-57-700.jpg" alt="image from video 00:03:57.700" data-time="00:03:57.700"></a><span class="audio-time caption" data-speaker="Pedro" data-start="236.831000" data-stop="242.158000"><strong class="speaker-name">Pedro:</strong> This is a mini export menu I have myself</span> <span class="audio-time caption" data-speaker="Pedro" data-start="242.159000" data-stop="242.920000">because I think it's</span> <span class="audio-time caption" data-speaker="Pedro" data-start="243.461000" data-stop="249.350000">much more handy than the export thing that we</span> <span class="audio-time caption" data-speaker="Pedro" data-start="249.410000" data-stop="250.092000">have in Org Mode.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="250.112000" data-stop="252.315000">So I did a small one for me.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="252.295000" data-stop="257.280000">And so I'm exporting to LaTeX and there you see the...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="257.000000">4:17</span> <strong>Basic output with different fonts</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="257.281000" data-stop="259.784000"><strong class="speaker-name">Pedro:</strong> This was quick, of course, but what you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="259.803000" data-stop="265.311000">see is I have my serif, my sans serif, and I have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="265.431000" data-stop="270.497000">my monofont and that's nice, right?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="270.517000" data-stop="273.381000">So that's one of the things that we always want</span> <span class="audio-time caption" data-speaker="Pedro" data-start="273.421000" data-stop="273.741000">to have.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="274.622000" data-stop="278.387000">Now, the next thing is everything would be nice.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="279.008000" data-stop="285.759000">And now I need my [??], full file where I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="285.799000" data-stop="287.842000">have the rest of the things that I want to copy</span> <span class="audio-time caption" data-speaker="Pedro" data-start="287.882000" data-stop="289.304000">and paste into this presentation.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="289.000000">4:49</span> <strong>Adding a code block as source</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="289.865000" data-stop="296.215000"><strong class="speaker-name">Pedro:</strong> Everything would be nice if I just were to go and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="296.575000" data-stop="304.253000">add a small command to do things, but I'm only going</span> <span class="audio-time caption" data-speaker="Pedro" data-start="304.293000" data-stop="305.756000">to be listing the source.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="306.157000" data-stop="309.363000">So let me just go and check that.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="309.383000" data-stop="312.689000">If I do like this, so I have a small listing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="313.070000" data-stop="314.492000">Why do I need listings?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="314.593000" data-stop="317.378000">This is partially for my lectures.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="318.480000" data-stop="322.347000">I want to share code with my students and tell them</span> <span class="audio-time caption" data-speaker="Pedro" data-start="323.238000" data-stop="324.820000">how to program, right?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="325.560000" data-stop="328.724000">Or they are in a lab and they need an example of</span> <span class="audio-time caption" data-speaker="Pedro" data-start="328.784000" data-stop="332.508000">a command that they need to achieve a search and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="332.568000" data-stop="333.849000">output in the computer.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="334.790000" data-stop="338.094000">So what I would do, first step, which would</span> <span class="audio-time caption" data-speaker="Pedro" data-start="338.314000" data-stop="342.318000">also work with pdflatex, is I'm going to go and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="342.418000" data-stop="344.140000">export the source.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="344.160000" data-stop="346.663000">If I now go and export the source,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="348.010000" data-stop="354.297000">I got a second compile, and now you see that I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="354.357000" data-stop="355.422000">included the command.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="356.583000" data-stop="361.571000">Nice thing about using fancyvrb here is that as</span> <span class="audio-time caption" data-speaker="Pedro" data-start="361.651000" data-stop="366.498000">I have fancyvrb here configured, I'm using the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="366.578000" data-stop="369.242000">listings stuff, but this is the configuration for</span> <span class="audio-time caption" data-speaker="Pedro" data-start="369.282000" data-stop="369.863000">fancyvrb.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="370.204000" data-stop="373.629000">I can include things like a frame to separate</span> <span class="audio-time caption" data-speaker="Pedro" data-start="373.950000" data-stop="378.777000">code from other things in the document.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="378.000000">6:18</span> <strong>The problem with exporting Unicode</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="378.757000" data-stop="381.700000"><strong class="speaker-name">Pedro:</strong> But now here problems started and this is this</span> <span class="audio-time caption" data-speaker="Pedro" data-start="381.741000" data-stop="385.225000">was practically what happened two years ago when</span> <span class="audio-time caption" data-speaker="Pedro" data-start="385.265000" data-stop="388.669000">someone asked in the list how can I do this and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="388.709000" data-stop="390.991000">the thing is he also wanted to have something</span> <span class="audio-time caption" data-speaker="Pedro" data-start="391.071000" data-stop="394.195000">like I want to export both so I also want to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="394.255000" data-stop="394.956000">export the results.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="397.699000" data-stop="399.041000">Let's see what happens in this case.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="399.341000" data-stop="401.784000">It's the tree command so it will be showing a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="401.844000" data-stop="404.747000">couple of files that I have on my on my system</span> <span class="audio-time caption" data-speaker="Pedro" data-start="405.809000" data-stop="407.751000">and let's see what happens with pdflatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="413.198000" data-stop="418.327000">It seems to be working, but then if you go to the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="418.488000" data-stop="420.852000">log, and this is why I have the log here, you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="420.872000" data-stop="424.078000">start seeing a lot of errors.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="426.042000" data-stop="426.342000">Why?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="426.402000" data-stop="430.249000">Because it has records that do not exist.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="430.269000" data-stop="431.151000"><strong class="speaker-name">Prot:</strong>  Missing characters.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="431.952000" data-stop="433.656000"><strong class="speaker-name">Pedro:</strong>  Missing characters and things like that.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="433.796000" data-stop="435.018000">So this was the question.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="435.058000" data-stop="436.641000">How can I solve this?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="437.954000" data-stop="441.740000">The obvious answer is pdflatex is not as good</span> <span class="audio-time caption" data-speaker="Pedro" data-start="441.900000" data-stop="447.208000">with UTF-8 extended, so migrate to lualatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="450.534000" data-stop="451.615000">That was one of the things.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="452.637000" data-stop="455.902000">But you could actually do it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="456.122000" data-stop="462.092000">Before going to that, people said, let's go back</span> <span class="audio-time caption" data-speaker="Pedro" data-start="462.152000" data-stop="463.033000">and put source.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="465.000000">7:45</span> <strong>Trying a different font</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="465.578000" data-stop="467.781000"><strong class="speaker-name">Pedro:</strong> You already have the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="467.841000" data-stop="472.989000">different font packages in in pdflatex, so why not</span> <span class="audio-time caption" data-speaker="Pedro" data-start="473.390000" data-stop="475.433000">using one of the font packages that you have, for</span> <span class="audio-time caption" data-speaker="Pedro" data-start="475.493000" data-stop="478.517000">example, the Bera fonts. This Bera font here</span> <span class="audio-time caption" data-speaker="Pedro" data-start="478.557000" data-stop="481.862000">Bera, Bera Sans and Bera Mono should</span> <span class="audio-time caption" data-speaker="Pedro" data-start="482.604000" data-stop="485.187000">allow you to do what you want to do. I checked.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="486.069000" data-stop="488.793000">What I'm doing here is I have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="488.813000" data-stop="493.560000">my local variables.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="494.198000" data-stop="496.781000">I've refreshed my local variables to include</span> <span class="audio-time caption" data-speaker="Pedro" data-start="497.262000" data-stop="500.024000">in the packages, the packages for Bera,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="500.025000" data-stop="501.767000">Bera sans, and Bera mono.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="503.049000" data-stop="503.950000">Let's see what happens.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="504.070000" data-stop="514.602000">If I go just for the source, I get the Bera thing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="514.643000" data-stop="518.607000">So there should be some sort, I get the Bera font</span> <span class="audio-time caption" data-speaker="Pedro" data-start="518.628000" data-stop="519.269000">integrated.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="520.429000" data-stop="523.498000">So there should be some hope with this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="523.938000" data-stop="524.239000">Fine.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="524.820000" data-stop="531.649000">So let's go back into doing things with the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="531.889000" data-stop="532.890000">results included.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="536.615000" data-stop="537.196000">Bad luck.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="538.558000" data-stop="539.879000">We continue to have this problem.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="540.260000" data-stop="542.303000">This is inherent to pdflatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="544.185000" data-stop="544.425000">Right?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="545.000000">9:05</span> <strong>LuaLaTeX</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="545.026000" data-stop="548.691000"><strong class="speaker-name">Pedro:</strong> So we have to move to lualatex, right?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="552.232000" data-stop="556.878000">And now to be able to do what I'm doing here with</span> <span class="audio-time caption" data-speaker="Pedro" data-start="556.938000" data-stop="559.921000">lualatex and with my script in the background</span> <span class="audio-time caption" data-speaker="Pedro" data-start="559.961000" data-stop="562.585000">to see what is happening, I just need to get out</span> <span class="audio-time caption" data-speaker="Pedro" data-start="563.666000" data-stop="564.527000">and get in again.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="570.574000" data-stop="574.619000">So we were at this point, we had the Bera fonts.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="575.300000" data-stop="579.866000">Let's go to see the Bera fonts just with a source</span> <span class="audio-time caption" data-speaker="Pedro" data-start="580.667000" data-stop="581.648000">on lualatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="582.877000" data-stop="584.881000">This is something that some people ask.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="593.256000" data-stop="595.440000">The Bera fonts don't have the mono font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="596.502000" data-stop="598.405000">So we have to move to something else.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="600.494000" data-stop="601.756000">Fine.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="601.776000" data-stop="603.658000">That's point number one.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="604.379000" data-stop="606.040000">And since that does not work...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="606.041000" data-stop="608.484000"><strong class="speaker-name">Prot:</strong>  Sans also, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="608.504000" data-stop="610.406000">You should have a sans-serif line.</span> <span class="audio-time caption" data-speaker="Prot" data-start="610.426000" data-stop="612.869000">I didn't see that.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="613.050000" data-stop="613.790000"><strong class="speaker-name">Pedro:</strong>  Yes. Exactly.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="614.511000" data-stop="617.735000">So the Bera fonts, as some people suggested, do</span> <span class="audio-time caption" data-speaker="Pedro" data-start="617.855000" data-stop="621.540000">not work with lualatex as we want.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="622.820000" data-stop="627.686000">So if this doesn't work and the corresponding is</span> <span class="audio-time caption" data-speaker="Pedro" data-start="627.746000" data-stop="632.452000">not one-to-one, so why not go directly into using</span> <span class="audio-time caption" data-speaker="Pedro" data-start="632.492000" data-stop="637.638000">the full thing with lualatex, right?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="637.000000">10:37</span> <strong>Switching to FreeSerif, FreeSans, and FreeMono</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="637.678000" data-stop="640.762000"><strong class="speaker-name">Pedro:</strong> The first thing I would have to do is I'm going</span> <span class="audio-time caption" data-speaker="Pedro" data-start="640.802000" data-stop="642.964000">to get rid of the Bera fonts here</span> <span class="audio-time caption" data-speaker="Pedro" data-start="642.965000" data-stop="650.154000">in my local variables.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="650.174000" data-stop="651.055000">I put it at the end.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="652.823000" data-stop="656.528000">So now with my local variables like this, I'm</span> <span class="audio-time caption" data-speaker="Pedro" data-start="656.608000" data-stop="659.511000">only going to have packages like enumitem and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="659.591000" data-stop="660.232000">fancyvrb.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="662.675000" data-stop="667.361000">I'm going to be using lualatex and now in a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="667.401000" data-stop="670.144000">very big first thing, what I would have to do is</span> <span class="audio-time caption" data-speaker="Pedro" data-start="670.505000" data-stop="675.811000">to start with my LaTeX header and then start</span> <span class="audio-time caption" data-speaker="Pedro" data-start="675.851000" data-stop="677.173000">with my setmainfont.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="677.573000" data-stop="679.354000">Let's say we use the simple ones,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="679.355000" data-stop="681.598000">the setmainfont</span> <span class="audio-time caption" data-speaker="Pedro" data-start="682.979000" data-stop="694.092000">FreeSerif, FreeSans... As always, the fingers are...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="698.096000" data-stop="706.025000">And here you go with the mono, and with the mono</span> <span class="audio-time caption" data-speaker="Pedro" data-start="706.406000" data-stop="709.249000">right. Let's try this at this point in time.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="709.589000" data-stop="711.210000">What will happen? I'm going to be using</span> <span class="audio-time caption" data-speaker="Pedro" data-start="711.211000" data-stop="713.908000">the free fonts directly</span> <span class="audio-time caption" data-speaker="Pedro" data-start="713.909000" data-stop="716.633000">with lualatex and with lualatex commands.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="718.315000" data-stop="719.437000">Let's see what happens here.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="722.401000" data-stop="724.524000">Starts compiling, starts compiling.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="724.000000">12:04</span> <strong>LuaLaTeX is slower</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="724.925000" data-stop="726.507000"><strong class="speaker-name">Pedro:</strong> lualatex is slower, yes.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="727.529000" data-stop="730.473000">That's the main drawback, mainly for people who</span> <span class="audio-time caption" data-speaker="Pedro" data-start="730.553000" data-stop="737.083000">want to have equations, LaTeX preview.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="739.055000" data-stop="742.182000">In Org, when they want to have the preview for</span> <span class="audio-time caption" data-speaker="Pedro" data-start="742.242000" data-stop="745.689000">equations and maths and so on in Org Mode, that</span> <span class="audio-time caption" data-speaker="Pedro" data-start="746.370000" data-stop="750.860000">is the main challenge because lualatex gets</span> <span class="audio-time caption" data-speaker="Pedro" data-start="750.880000" data-stop="754.588000">slower, and that will of course make them not be</span> <span class="audio-time caption" data-speaker="Pedro" data-start="754.688000" data-stop="761.060000">able to get a flashy auto-refreshing display and so on.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="762.000000">12:42</span> <strong>The fonts are rendered</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="762.482000" data-stop="766.428000"><strong class="speaker-name">Pedro:</strong> But the thing for me and for my manuals, if you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="766.488000" data-stop="769.693000">want to say it like this, is that first of all we</span> <span class="audio-time caption" data-speaker="Pedro" data-start="769.753000" data-stop="773.158000">have here the serif fonts, you have the sans</span> <span class="audio-time caption" data-speaker="Pedro" data-start="773.178000" data-stop="777.064000">fonts, you have the mono font with the free fonts, right?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="778.146000" data-stop="782.012000">So the next thing that came in was of course,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="782.453000" data-stop="786.038000">let's see what happens with the listing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="798.893000" data-stop="804.664000">Takes longer, but that is something that I can</span> <span class="audio-time caption" data-speaker="Pedro" data-start="804.864000" data-stop="808.731000">use to show my students how things will look like</span> <span class="audio-time caption" data-speaker="Pedro" data-start="808.832000" data-stop="809.353000">in the screen.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="811.717000" data-stop="815.424000">And this was a question that was raised beginning</span> <span class="audio-time caption" data-speaker="Pedro" data-start="815.444000" data-stop="817.628000">of 2024 in the list.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="820.392000" data-stop="821.694000"><strong class="speaker-name">Sacha:</strong>  I appreciate your persistence.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="822.000000">13:42</span> <strong>The farmer on the donkey in front of the train</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="822.896000" data-stop="824.558000"><strong class="speaker-name">Pedro:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="825.560000" data-stop="830.086000">There's this film, Spanish film from the 30s,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="830.126000" data-stop="831.188000">from beginning of the 30s.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="831.288000" data-stop="833.211000">It was still Republic before the Civil War.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="834.092000" data-stop="840.882000">And there's a man dressed as a farmer in Aragon</span> <span class="audio-time caption" data-speaker="Pedro" data-start="841.443000" data-stop="845.809000">(they are known to be very stubborn) on his donkey</span> <span class="audio-time caption" data-speaker="Pedro" data-start="845.789000" data-stop="847.752000">on a train track,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="848.493000" data-stop="851.778000">and the train behind him, and he doesn't move</span> <span class="audio-time caption" data-speaker="Pedro" data-start="851.798000" data-stop="852.799000">from the track.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="852.819000" data-stop="856.885000">The only thing he's saying, "You can toot as much</span> <span class="audio-time caption" data-speaker="Pedro" data-start="856.945000" data-stop="858.467000">as you want, I'm not going to move.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="858.808000" data-stop="860.450000">If you want to move, move yourself."</span> <span class="audio-time caption" data-speaker="Pedro" data-start="860.871000" data-stop="861.532000">So he continues.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="861.592000" data-stop="865.377000">And the train, and the people: "Why don't you move?"</span> <span class="audio-time caption" data-speaker="Pedro" data-start="865.898000" data-stop="867.761000">At the end, they come to a joint, he</span> <span class="audio-time caption" data-speaker="Pedro" data-start="867.821000" data-stop="870.084000">continues on the road, and the train takes the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="870.144000" data-stop="871.165000">other track.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="871.186000" data-stop="874.170000">When the train goes by, he says, I told you,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="874.250000" data-stop="875.712000">you had to go another way.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="877.548000" data-stop="880.974000">So this is more or less, this in Spanish has</span> <span class="audio-time caption" data-speaker="Pedro" data-start="881.054000" data-stop="885.422000">become a saying.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="885.622000" data-stop="887.045000">It's more than a phrase.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="887.145000" data-stop="889.269000">It's a chufla chufla.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="890.311000" data-stop="894.017000">And I'm a bit of a chufla chufla.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="894.197000" data-stop="897.263000">When I think that there's something that needs to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="897.303000" data-stop="899.607000">be done, I can be very stubborn.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="901.713000" data-stop="905.779000"><strong class="speaker-name">Prot:</strong>  And of course you need to be stubborn</span> <span class="audio-time caption" data-speaker="Prot" data-start="906.119000" data-stop="909.704000">because these sorts of things are tricky and they</span> <span class="audio-time caption" data-speaker="Prot" data-start="909.784000" data-stop="911.606000">require time. Especially on</span> <span class="audio-time caption" data-speaker="Prot" data-start="911.607000" data-stop="914.069000">a mailing-list-driven workflow,</span> <span class="audio-time caption" data-speaker="Prot" data-start="914.070000" data-stop="915.952000">you have to listen to what users want.</span> <span class="audio-time caption" data-speaker="Prot" data-start="915.953000" data-stop="918.696000">You have to take in feedback. It is a slow process.</span> <span class="audio-time caption" data-speaker="Prot" data-start="918.697000" data-stop="920.279000">You really have to be patient and</span> <span class="audio-time caption" data-speaker="Prot" data-start="920.339000" data-stop="921.640000">stubborn, for sure.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="921.641000" data-stop="929.492000"><strong class="speaker-name">Pedro:</strong>  Yes. Basically, my motivation was I know that I need it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="930.485000" data-stop="933.089000">Maybe other people don't want to say,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="933.129000" data-stop="934.310000">but they need it also.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="935.000000">15:35</span> <strong>Unicode and LuaLaTeX</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="935.772000" data-stop="937.134000"><strong class="speaker-name">Prot:</strong>  Can I ask a comment?</span> <span class="audio-time caption" data-speaker="Prot" data-start="937.214000" data-stop="939.898000">Can I ask a question here or will you continue?</span> <span class="audio-time caption" data-speaker="Prot" data-start="939.918000" data-stop="943.844000">Because I want to clarify the Unicode characters.</span> <span class="audio-time caption" data-speaker="Prot" data-start="944.104000" data-stop="945.406000">Earlier we were getting an error.</span> <span class="audio-time caption" data-speaker="Prot" data-start="946.187000" data-stop="947.909000">Now we see the tree.</span> <span class="audio-time caption" data-speaker="Prot" data-start="949.151000" data-stop="951.734000">Is this because of FreeFont?</span> <span class="audio-time caption" data-speaker="Prot" data-start="951.754000" data-stop="953.417000">Is this because of lualatex?</span> <span class="audio-time caption" data-speaker="Prot" data-start="953.917000" data-stop="954.739000">Is it a combination?</span> <span class="audio-time caption" data-speaker="Prot" data-start="954.879000" data-stop="957.943000">What exactly helped us fix this?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="958.160000" data-stop="961.404000"><strong class="speaker-name">Pedro:</strong>  Okay, it's a very, very good question.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="961.444000" data-stop="962.545000">I was forgetting that.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="962.946000" data-stop="964.528000">So here we have a combination.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="966.490000" data-stop="971.576000">lualatex is handling the UTF characters very nicely.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="971.596000" data-stop="975.541000">Something that pdflatex did not or was very</span> <span class="audio-time caption" data-speaker="Pedro" data-start="975.581000" data-stop="978.685000">difficult to have them done, doing it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="979.686000" data-stop="984.212000">The second thing is that Free Mono has these</span> <span class="audio-time caption" data-speaker="Pedro" data-start="985.013000" data-stop="986.074000">display characters.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="986.763000" data-stop="988.307000">which is also important.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="989.010000" data-stop="991.096000">And of course, if you want to use free mono, you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="991.156000" data-stop="995.568000">need to use lualatex to drive the thing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="995.589000" data-stop="997.554000">So it's the three things.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="997.574000" data-stop="1000.663000">You have the right font, the right compiler and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1000.703000" data-stop="1001.987000">the right environment.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1003.486000" data-stop="1009.173000">So the next thing is, of course, also on the list.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1009.193000" data-stop="1012.838000">Once again, I need my full because it's going to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1012.878000" data-stop="1015.982000">be a bit quicker than if I go writing everything</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1016.062000" data-stop="1016.583000">on my own.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1017.284000" data-stop="1020.427000">If I go down...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1020.000000">17:00</span> <strong>Emojis</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1020.428000" data-stop="1021.449000"><strong class="speaker-name">Pedro:</strong> There was someone saying,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1021.569000" data-stop="1024.313000">"Hey, I want my emojis."</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1027.056000" data-stop="1028.278000"><strong class="speaker-name">Sacha:</strong>  They're very important, you know.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1029.490000" data-stop="1031.352000"><strong class="speaker-name">Pedro:</strong>  Yeah, I know.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1031.412000" data-stop="1035.217000">For me, it's as important as for anyone.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1036.238000" data-stop="1042.185000">Because maybe you want this, or if you're just...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1042.305000" data-stop="1047.431000">If I'm on a manual, I might want to point out</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1047.491000" data-stop="1053.378000">things like... And then I go with the hand, with</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1053.418000" data-stop="1057.843000">the body, with the hand, with the...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1059.072000" data-stop="1062.256000">single finger which is the S and then I just want</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1062.297000" data-stop="1066.342000">to point at things like this for example and to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1066.402000" data-stop="1070.648000">make it... I might want to highlight something</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1070.688000" data-stop="1075.014000">that people have to do with this. Let's try</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1075.235000" data-stop="1077.778000">with this current configuration. If I try with</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1077.798000" data-stop="1080.422000">this current configuration... And there we are going</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1080.462000" data-stop="1086.661000">to see the second part of the answer to Prot's question:</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1086.681000" data-stop="1089.804000">we start compiling, we start compiling, we start</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1089.864000" data-stop="1093.728000">compiling, and then suddenly we have like two</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1093.828000" data-stop="1097.452000">characters which are not part of the thing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1098.312000" data-stop="1098.533000">Why?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1098.553000" data-stop="1101.315000">Because they are not part of Free Font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1101.956000" data-stop="1107.582000">Or in this case they are not part of FreeSerif.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1108.482000" data-stop="1110.244000">They are not included in FreeSerif.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1110.304000" data-stop="1112.046000">I need something else.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1112.768000" data-stop="1116.953000">There's where the full thing came in.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1117.000000">18:37</span> <strong>Fallback fonts
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-20-01-900.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-20-01-900.jpg" alt="image from video 00:20:01.900" data-time="00:20:01.900"></a><span class="audio-time caption" data-speaker="Pedro" data-start="1117.654000" data-stop="1123.061000"><strong class="speaker-name">Pedro:</strong> I was very much inspired by what Pandoc is doing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1123.101000" data-stop="1125.484000">In Pandoc, you can say, "I have my serif font, which</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1125.545000" data-stop="1129.970000">is this font. For this font, I want</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1130.010000" data-stop="1134.656000">these fallbacks because that's..." Fallback is, first</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1134.696000" data-stop="1135.638000">of all, fallback fonts.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1135.798000" data-stop="1141.425000">Fallback is a term used by lualatex to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1141.540000" data-stop="1144.744000">say, if you can't find a character in a font,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1144.745000" data-stop="1147.709000">try to find it in another font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1148.030000" data-stop="1151.756000">And then, if you provide lualatex with a list of</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1151.816000" data-stop="1155.161000">fonts, it's going to be looking up the fonts</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1155.501000" data-stop="1156.723000">to get your characters.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1158.686000" data-stop="1160.148000">That's the main idea.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1161.330000" data-stop="1164.715000"><strong class="speaker-name">Prot:</strong>  Let me ask something here, because if you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1164.855000" data-stop="1166.518000">notice the output...</span> <span class="audio-time caption" data-speaker="Prot" data-start="1166.735000" data-stop="1169.939000">Of course, it is not what we want, but it is also</span> <span class="audio-time caption" data-speaker="Prot" data-start="1170.099000" data-stop="1174.245000">not just the tofu, you know, like the missing</span> <span class="audio-time caption" data-speaker="Prot" data-start="1174.285000" data-stop="1174.865000">character.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1175.406000" data-stop="1179.652000">If you notice, there is some kind of a symbol</span> <span class="audio-time caption" data-speaker="Prot" data-start="1179.732000" data-stop="1181.354000">there going on.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1181.594000" data-stop="1185.079000">From what I recall, we have characters and</span> <span class="audio-time caption" data-speaker="Prot" data-start="1185.119000" data-stop="1186.861000">then we have something that is called the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1186.961000" data-stop="1188.742000">grapheme or grapheme cluster,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1188.743000" data-stop="1189.764000">something like that,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1189.765000" data-stop="1191.647000">which is basically characters laid on top</span> <span class="audio-time caption" data-speaker="Prot" data-start="1191.707000" data-stop="1193.890000">of each other to produce the emoji.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1194.359000" data-stop="1197.908000">It seems here that Free Font has the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1198.028000" data-stop="1199.993000">underlying characters, but maybe not the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1200.073000" data-stop="1201.896000">composition codes or something like that.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1201.897000" data-stop="1205.966000"><strong class="speaker-name">Pedro:</strong>  No. It only has some characters.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1205.967000" data-stop="1207.671000">It only has some some underlying</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1207.731000" data-stop="1210.157000">characters. For example it only has the...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1210.424000" data-stop="1213.407000">It has the finger, but it doesn't have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1213.987000" data-stop="1216.310000">all the compositions that you need for that.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1216.330000" data-stop="1216.950000"><strong class="speaker-name">Prot:</strong>  Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1216.990000" data-stop="1219.293000"><strong class="speaker-name">Sacha:</strong>  That one in particular, I think, changes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1219.333000" data-stop="1220.494000">the color of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1220.514000" data-stop="1221.415000">So that's why.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1221.435000" data-stop="1222.576000"><strong class="speaker-name">Pedro:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1222.816000" data-stop="1226.460000">And if you look at the, if we go back here, it's</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1226.520000" data-stop="1233.086000">saying there's no character at all for the face.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1234.087000" data-stop="1236.169000">But if you go to the beginning, you will also</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1236.289000" data-stop="1239.452000">notice that there was some, where was it?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1239.512000" data-stop="1240.313000">I've seen it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1244.393000" data-stop="1248.918000">At some point, they are also telling you that the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1248.978000" data-stop="1250.120000">thing... where is it?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1250.420000" data-stop="1250.981000">Okay, fine.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1251.622000" data-stop="1252.843000">It's going to take too long to find.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1253.304000" data-stop="1254.325000"><strong class="speaker-name">Sacha:</strong>  It's fine.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1254.345000" data-stop="1256.307000">Besides, you fixed the problem, so you don't have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1256.327000" data-stop="1257.929000">to dig into the old way of doing things.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1259.231000" data-stop="1263.276000"><strong class="speaker-name">Pedro:</strong>  Yes, so that's my main problem right now.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1264.477000" data-stop="1269.743000">So I go and I'm going to go to the... I keep</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1269.783000" data-stop="1275.336000">trying to use the teleconference, the conference screen,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1275.396000" data-stop="1277.199000">the shared screen instead of the red one.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1277.580000" data-stop="1281.827000">This is why sometimes I sort of get mixed up.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1282.708000" data-stop="1284.091000">We had this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1287.136000" data-stop="1291.623000">And I'm just going to go and comment this out</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1292.144000" data-stop="1294.127000">because I'm going to go for the new one.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1299.000000">21:39</span> <strong>Fallback configuration
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-22-31-167.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-22-31-167.jpg" alt="image from video 00:22:31.167" data-time="00:22:31.167"></a><span class="audio-time caption" data-speaker="Pedro" data-start="1299.389000" data-stop="1302.132000"><strong class="speaker-name">Pedro:</strong> For the new one, I have a full example here.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1302.592000" data-stop="1306.456000">Here we go with the fontspec configuration,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1309.639000" data-stop="1313.462000">which is at the beginning. You say, what are you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1313.502000" data-stop="1320.769000">doing there, right? I know it might</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1320.809000" data-stop="1323.372000">look a bit scary at the beginning but then if you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1323.552000" data-stop="1325.774000">if you're familiar with what Pandoc is doing it's</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1325.854000" data-stop="1326.915000">not that different</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1328.701000" data-stop="1329.302000"><strong class="speaker-name">Sacha:</strong>  Nonsense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1329.482000" data-stop="1330.162000">It's not scary at all.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1330.182000" data-stop="1331.584000">We'll just copy whatever you post.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1335.007000" data-stop="1335.828000"><strong class="speaker-name">Prot:</strong>  Life is simple.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1336.809000" data-stop="1340.212000"><strong class="speaker-name">Pedro:</strong>  Yeah, no, but I mean, that's the basic idea.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1340.913000" data-stop="1343.636000">You have something very similar to this in the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1344.036000" data-stop="1349.261000">actual documentation, both in the docstring and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1349.441000" data-stop="1350.583000">in the manual.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1351.143000" data-stop="1354.066000">So all this process that I'm telling you is also</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1354.166000" data-stop="1357.189000">part of the manual, step by step.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1357.928000" data-stop="1361.414000">So let's go for this and let's try to... First of</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1361.475000" data-stop="1363.478000">all, I'm going to load my new variables.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1363.498000" data-stop="1365.001000">I'm going to refresh the variables.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1366.143000" data-stop="1367.225000">Let's go.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1367.000000">22:47</span> <strong>Selecting fonts</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1367.285000" data-stop="1369.810000"><strong class="speaker-name">Pedro:</strong> What I'm saying here is I have a main font,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1371.072000" data-stop="1372.194000">I have a sans font,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1373.096000" data-stop="1375.140000">and I have a mono font, right?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1375.921000" data-stop="1377.744000">That's something that I also had here...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1377.745000" data-stop="1379.548000">about here in this part.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1382.043000" data-stop="1384.126000">The next thing that I'm saying is that the font</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1384.146000" data-stop="1387.770000">is free serif, which is this mapping, but saying</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1387.810000" data-stop="1390.012000">that for main I'm going to use free serif,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1390.013000" data-stop="1392.335000">for sans I'm going to use free sans,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1392.336000" data-stop="1394.298000">and for mono I'm going to use Noto Sans Mono.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1394.599000" data-stop="1395.680000">Why Noto Sans Mono?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1395.700000" data-stop="1396.381000">Because I like it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1397.702000" data-stop="1400.806000">It's a bit of a change too. So you can also</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1400.846000" data-stop="1405.112000">see that you can mix font families and so on.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1405.132000" data-stop="1407.915000">Basically I like it because it's very readable.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1409.060000" data-stop="1410.181000">And it's very accessible.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1410.762000" data-stop="1413.525000">So for this, everything would be what I had</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1413.585000" data-stop="1414.306000">before, right?</span> <p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-23-39-033.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-23-39-033.jpg" alt="image from video 00:23:39.033" data-time="00:23:39.033"></a><span class="audio-time caption" data-speaker="Pedro" data-start="1415.287000" data-stop="1418.151000"><strong class="speaker-name">Pedro:</strong> If you have noticed before I compile, you see</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1418.231000" data-stop="1421.214000">that each font has its own size.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1422.636000" data-stop="1426.140000">That is sometimes sort of not very nice, right?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1426.741000" data-stop="1429.224000">So what I would do... The next is I'm going to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1429.484000" data-stop="1433.188000">add a property to both the sans and the monophon</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1433.228000" data-stop="1436.913000">to say, try to scale them so that they match the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1436.973000" data-stop="1438.915000">lowercase of the main font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1440.768000" data-stop="1445.294000">That sort of makes them more proportional,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1445.775000" data-stop="1449.480000">better look and feel, right?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1450.000000">24:10</span> <strong>Fallbacks</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1450.642000" data-stop="1454.547000"><strong class="speaker-name">Pedro:</strong> Now comes the really nice thing, the fallbacks.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1455.569000" data-stop="1457.632000">We've said, fallback is what?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1457.672000" data-stop="1462.218000">Fallback is an alternative font I want to add to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1462.699000" data-stop="1467.445000">the document when a character is missing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1467.465000" data-stop="1470.049000">I could just have a list of different fonts</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1471.210000" data-stop="1476.796000">and go with it and have lualatex decide which</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1476.976000" data-stop="1477.857000">characters to use.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1479.059000" data-stop="1482.563000">But that would make the whole thing very, very, very slow.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1483.564000" data-stop="1490.011000">So there's one extra step here, which is look at the document,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1491.693000" data-stop="1495.497000">find what kind of Emacs scripts you have in the document.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1496.776000" data-stop="1499.539000">Then, if you need to add fallbacks, add them</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1499.599000" data-stop="1501.702000">for the scripts that are present in the document.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1503.664000" data-stop="1505.907000">For example, in this case, we have the emojis.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1507.789000" data-stop="1511.654000">These are the ones that I want to change.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1512.655000" data-stop="1517.581000">But I don't have any simplified Chinese here,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1518.803000" data-stop="1522.547000">so there's not going to be any Han character</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1523.860000" data-stop="1526.684000">in the document, so it's not going to be included</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1528.126000" data-stop="1530.710000">in the produced LaTeX.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1533.434000" data-stop="1535.177000">That's the whole idea of the fallbacks.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1537.720000" data-stop="1540.945000">You have fallbacks for the fonts that need them.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1540.965000" data-stop="1543.509000">You might want to have fallbacks</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1543.629000" data-stop="1547.134000">for sans serif, maybe, if you need it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1548.751000" data-stop="1550.196000">If not, you can omit it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1550.216000" data-stop="1553.024000">In this case, we are only having fallbacks here</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1553.125000" data-stop="1557.880000">in the serif font, so I'm only going to be adding</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1558.321000" data-stop="1561.832000">the serif, the fallbacks for serif.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1563.263000" data-stop="1565.006000">So that's the basic idea.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1565.827000" data-stop="1568.051000">If you go to Pandoc and you read the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1568.111000" data-stop="1571.016000">documentation, you will notice that most of the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1571.076000" data-stop="1572.999000">things are okay.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1573.199000" data-stop="1581.573000">It's not an Emacs Lisp list here or a plist because</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1581.633000" data-stop="1585.339000">it's YAML, but it's very similar.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1586.045000" data-stop="1590.710000">I did some state-of-the-art research before</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1591.430000" data-stop="1594.113000">actually coming at the end to this definition.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1595.034000" data-stop="1598.778000">So now, before I compile and we see that we have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1598.978000" data-stop="1602.081000">everything we want, I'm also going to show you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1602.181000" data-stop="1604.704000">what is produced.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1604.724000" data-stop="1605.104000"><strong class="speaker-name">Sacha:</strong>  Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1606.000000">26:46</span> <strong>The LaTeX produced
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-26-51-067.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-26-51-067.jpg" alt="image from video 00:26:51.067" data-time="00:26:51.067"></a><span class="audio-time caption" data-speaker="Pedro" data-start="1606.485000" data-stop="1609.869000"><strong class="speaker-name">Pedro:</strong>  This is the LaTeX that is produced.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1609.889000" data-stop="1611.791000">The important part is here.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1612.932000" data-stop="1613.993000">That's the fallbacks.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1615.306000" data-stop="1619.452000">If you see, I'm only having the Noto Color</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1619.472000" data-stop="1622.116000">emoji font being included.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1622.236000" data-stop="1624.579000">Why? Because what I told you before, there is no Han,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1625.080000" data-stop="1628.845000">so there's no character being added there.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1629.526000" data-stop="1632.510000">I don't add the Han font because I don't need it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1635.094000" data-stop="1638.078000">That's sort of a mini optimization that you may</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1638.158000" data-stop="1638.799000">want to have.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1640.399000" data-stop="1641.520000">Next thing...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1641.000000">27:21</span> <strong>Character families should be in the Messages buffer</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1641.521000" data-stop="1643.644000"><strong class="speaker-name">Sacha:</strong>  Sorry, how do people find out what keys</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1643.704000" data-stop="1646.087000">they need to put into that alist? Can they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1646.147000" data-stop="1648.371000">describe-char for example to see whether</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1648.731000" data-stop="1651.235000">they need to put in emoji or some other...?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1652.336000" data-stop="1657.163000"><strong class="speaker-name">Pedro:</strong>  That's a very good question. For</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1657.203000" data-stop="1659.987000">that, I need to get to the Messages,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1663.693000" data-stop="1667.318000">or... Oops. I have Warnings...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1672.006000" data-stop="1672.687000">Where is it?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1674.028000" data-stop="1687.020000">You should normally have, in your Messages,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1687.021000" data-stop="1690.283000">a message from Org Mode</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1690.284000" data-stop="1693.687000">telling you that it found the characters.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1693.727000" data-stop="1696.110000">I don't know why I'm not seeing it here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1696.130000" data-stop="1697.912000"><strong class="speaker-name">Sacha:</strong>  Is it maybe in that Tilix window that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1697.952000" data-stop="1699.313000">you have there with a make edit?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1700.778000" data-stop="1701.419000"><strong class="speaker-name">Pedro:</strong>  No, no, no.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1702.161000" data-stop="1704.286000">It's inside the Emacs.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1704.587000" data-stop="1711.783000">And I'm not finding it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1715.105000" data-stop="1715.966000">I'm not finding it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1716.026000" data-stop="1718.390000">I don't know why, but it should be there.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1719.151000" data-stop="1725.240000">Normally, Org Mode would tell you that you have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1726.222000" data-stop="1729.547000">these and those characters, that you have the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1729.587000" data-stop="1730.388000">different families.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1730.849000" data-stop="1741.324000">You will also see it if I were to, say... I'm going</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1741.365000" data-stop="1744.369000">to move this out so I don't have fallbacks.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1746.475000" data-stop="1749.499000">This would be a basic configuration.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1750.260000" data-stop="1758.292000">So now that I have my fallbacks out, and I go and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1758.312000" data-stop="1766.783000">I... So you see that I don't have fallbacks.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1767.184000" data-stop="1770.829000">And then if I go to the warrings, where is it?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1773.020000" data-stop="1774.590000"><strong class="speaker-name">Prot:</strong>  Maybe messages?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1775.435000" data-stop="1777.005000"><strong class="speaker-name">Pedro:</strong>  To the messages, exactly.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1784.984000" data-stop="1786.225000">I'm sorry, I don't find it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1786.766000" data-stop="1787.287000"><strong class="speaker-name">Sacha:</strong>  It's okay.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1787.487000" data-stop="1788.528000"><strong class="speaker-name">Pedro:</strong>  But there is a message,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1789.009000" data-stop="1791.911000">I'm sure there is a message</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1791.912000" data-stop="1796.797000">which tells you which families or which scripts</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1796.798000" data-stop="1799.601000">you have in your document.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1800.362000" data-stop="1800.562000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1800.582000" data-stop="1801.403000">No problem.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1801.423000" data-stop="1803.826000">I'm sure all of this will come with wonderful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1803.886000" data-stop="1809.633000">documentation because the Org project is very good at that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1809.000000">30:09</span> <strong>Behind the scenes</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1809.653000" data-stop="1812.076000"><strong class="speaker-name">Pedro:</strong>  Yes. We spend a lot of time going through the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1812.116000" data-stop="1813.337000">documentation.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1814.009000" data-stop="1819.398000">The current documentation currently has undergone</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1819.658000" data-stop="1823.444000">a lot of scrutiny both by Ihor and by myself.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1823.645000" data-stop="1825.608000">I've rewritten it two or three times to make it</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1825.708000" data-stop="1830.656000">clearer as I gained insights into what I wanted</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1830.716000" data-stop="1833.621000">to tell people and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1833.601000" data-stop="1836.985000">At one point in time I isolated myself completely.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1837.005000" data-stop="1838.326000">I rewrote everything.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1838.887000" data-stop="1842.471000">I forgot about all the exchanges I had with Ihor</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1842.791000" data-stop="1847.957000">and I had my own ideas of what I wanted to say.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1848.337000" data-stop="1850.639000">I rewrote everything from scratch and suddenly</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1850.800000" data-stop="1852.181000">Ihor said, this is what I wanted.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1853.883000" data-stop="1858.508000">Currently the documentation is at least a bit</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1858.548000" data-stop="1859.809000">more than just usable.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1860.000000">31:00</span> <strong>Refreshing local variables</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1860.410000" data-stop="1862.292000"><strong class="speaker-name">Pedro:</strong> Let's go back to this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1863.082000" data-stop="1869.171000">As you see... This is something stupid.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1869.191000" data-stop="1872.797000">I mean, you see that this refresh local variables</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1873.258000" data-stop="1875.100000">is a small function that I've written myself.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1875.842000" data-stop="1880.889000">Since I'm working a lot with local variables, I'm</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1881.270000" data-stop="1884.315000">also trying to have shortcuts for all this kind</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1884.375000" data-stop="1884.695000">of things.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1885.036000" data-stop="1887.179000"><strong class="speaker-name">Sacha:</strong>  Oh, I thought C-c C-c did that in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1887.219000" data-stop="1887.840000">directive.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1889.288000" data-stop="1894.155000"><strong class="speaker-name">Pedro:</strong>  Sometimes it does not, or at least...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1894.175000" data-stop="1899.682000">the case is... I did it myself.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1899.963000" data-stop="1902.246000">I rewrote everything to be sure that I got my</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1902.486000" data-stop="1904.509000">local variables, my directory variables, and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1904.569000" data-stop="1909.115000">everything nice as I wanted. Once I have this...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1909.395000" data-stop="1913.241000">Once again... There. If I now go and compile</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1913.261000" data-stop="1915.684000">for the last time...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1918.313000" data-stop="1919.334000">What is missing?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1919.375000" data-stop="1921.778000">What have I done wrong?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1935.958000" data-stop="1939.764000"><strong class="speaker-name">Sacha:</strong>  Do you want a series of undoes?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1940.384000" data-stop="1942.648000"><strong class="speaker-name">Pedro:</strong>  I'm going to go the quick way.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1943.329000" data-stop="1945.231000"><strong class="speaker-name">Prot:</strong>  I think there was a missing parenthesis in that.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1945.492000" data-stop="1946.413000"><strong class="speaker-name">Pedro:</strong>  Yeah, somewhere.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1947.322000" data-stop="1951.927000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah, yeah, there it is.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1957.073000" data-stop="1959.576000"><strong class="speaker-name">Pedro:</strong>  No, it looks right, actually.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1959.596000" data-stop="1964.682000">No, yes, because I've copied it from my notebook.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1969.948000" data-stop="1970.889000"><strong class="speaker-name">Sacha:</strong>  It's not doing the thing yet.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="1973.312000" data-stop="1973.532000"><strong class="speaker-name">Pedro:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1975.165000" data-stop="1979.346000">And that comes... That's something that I...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1979.347000" data-stop="1981.176000">So at least if you do it like this...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1983.215000" data-stop="1986.560000">I don't know why this hand does not work</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1986.600000" data-stop="1989.264000">correctly with Noto Color Emoji.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1989.765000" data-stop="1991.167000">Another takeaway.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1991.188000" data-stop="1994.773000">You have to find your own wonderful emoji file.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1995.094000" data-stop="1996.115000">The other one is Apple.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="1996.296000" data-stop="2001.343000">Apple Color Emoji has a different [??] for emojis.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2001.964000" data-stop="2003.807000">That's something that I also wanted to highlight.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2003.887000" data-stop="2007.433000">Sometimes you don't get the full...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2007.413000" data-stop="2011.458000">It's important you have to do a lot of look and find.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2012.459000" data-stop="2015.661000">But at least with this you get your...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2015.662000" data-stop="2017.705000">At least with this, what do I get?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2017.000000">33:37</span> <strong>Scaling fonts to match lowercase
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-33-39-067.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-33-39-067.jpg" alt="image from video 00:33:39.067" data-time="00:33:39.067"></a><span class="audio-time caption" data-speaker="Pedro" data-start="2017.885000" data-stop="2023.331000"><strong class="speaker-name">Pedro:</strong> I get my fonts scaled so that they look more or</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2023.351000" data-stop="2024.733000">less the same size,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2026.194000" data-stop="2027.376000">which is a nice appearance.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2027.456000" data-stop="2032.281000">I have my listings and my outputs.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2033.963000" data-stop="2034.984000">And I have my emojis.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2036.646000" data-stop="2037.387000"><strong class="speaker-name">Prot:</strong>  This looks good.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2038.396000" data-stop="2039.579000"><strong class="speaker-name">Pedro:</strong>  This is basically what I need.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2039.580000" data-stop="2042.883000"><strong class="speaker-name">Prot:</strong>  Can I ask something?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2043.484000" data-stop="2044.746000">Two questions, actually.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2045.708000" data-stop="2050.535000">One is, I see the props parameter you have for the...</span> <span class="audio-time caption" data-speaker="Prot" data-start="2050.536000" data-stop="2051.838000">if you switch to your Emacs buffer...</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2053.360000" data-stop="2053.981000"><strong class="speaker-name">Pedro:</strong>  Just a second.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2054.001000" data-stop="2056.205000">I was on the wrong stream.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2056.344000" data-stop="2058.007000"><strong class="speaker-name">Prot:</strong>  Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2057.000000">34:17</span> <strong>Specifying the fallbacks</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2057.987000" data-stop="2062.375000"><strong class="speaker-name">Prot:</strong> So you see you have that props, and then you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="2062.435000" data-stop="2067.963000">passing it a string. In the fallbacks, you have a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2068.023000" data-stop="2072.268000">slightly different expression where you have the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2072.329000" data-stop="2075.554000">font set, and then you pass it the font, but for</span> <span class="audio-time caption" data-speaker="Prot" data-start="2075.594000" data-stop="2077.838000">example, with Noto Color Emoji, you are not just</span> <span class="audio-time caption" data-speaker="Prot" data-start="2077.878000" data-stop="2080.021000">passing Noto Color Emoji, you are also passing a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2080.081000" data-stop="2084.788000">parameter to me that looks like the pango markup,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2085.292000" data-stop="2088.518000">whereas the other one looks like something else,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2088.539000" data-stop="2090.322000">another markup.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2090.342000" data-stop="2092.708000">I just want to ask if you know, off the top of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2092.748000" data-stop="2096.034000">your head, if the documentation for Pango and for</span> <span class="audio-time caption" data-speaker="Prot" data-start="2096.074000" data-stop="2097.758000">whatever else that is,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2097.759000" data-stop="2102.000000">is clearly available somewhere so that we can follow it because</span> <span class="audio-time caption" data-speaker="Prot" data-start="2102.001000" data-stop="2103.933000">one issue I always find with</span> <span class="audio-time caption" data-speaker="Prot" data-start="2103.934000" data-stop="2107.833000">LaTeX or with anything that has to do with these complex things</span> <span class="audio-time caption" data-speaker="Prot" data-start="2107.834000" data-stop="2110.600000">is that they assume you are a domain expert.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2110.601000" data-stop="2112.167000">And it's like, okay, just do fonts</span> <span class="audio-time caption" data-speaker="Prot" data-start="2112.168000" data-stop="2113.733000">the way you do it in LaTeX.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2113.734000" data-stop="2115.833000">And I'm like, okay, how do you do it...</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2115.834000" data-stop="2116.567000"><strong class="speaker-name">Pedro:</strong>  "No, but how?"</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2116.568000" data-stop="2123.955000">Yeah, I know. Exactly. That part is extremely complex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2125.117000" data-stop="2128.621000">Because in this case, what you're saying</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2128.741000" data-stop="2131.303000">is do whatever you do with your normal fonts</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2131.304000" data-stop="2132.345000">if you don't have the colon.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2133.000000">35:33</span> <strong>HarfBuzz</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2133.006000" data-stop="2136.350000"><strong class="speaker-name">Pedro:</strong> If you have the colon, then what they say is you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2136.410000" data-stop="2139.394000">need to have, in this case, you need to have the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2139.434000" data-stop="2146.582000">HarfBuzz rasterizer or however it is called.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2147.563000" data-stop="2149.986000">And that... Yes, you're completely right.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2150.306000" data-stop="2152.569000">This is a problem with the documentation.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2152.589000" data-stop="2156.256000">I have... To the best of my knowledge,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2156.257000" data-stop="2163.225000">the only ones that really need harf are the emojis.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2165.360000" data-stop="2167.690000">That's the example.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2167.710000" data-stop="2170.233000">For the rest of the font, at least at this point</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2170.313000" data-stop="2174.117000">in time, you don't need, or with this feature</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2174.137000" data-stop="2177.261000">set, you don't need any sort of extra things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2177.000000">36:17</span> <strong>Upcoming work on Babel (the LaTeX package)</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2177.821000" data-stop="2180.284000"><strong class="speaker-name">Pedro:</strong> The extra things will come in the future,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2180.804000" data-stop="2186.211000">when you try to integrate things like Babel,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2186.212000" data-stop="2189.255000">with controlling the fonts in Babel,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2189.256000" data-stop="2191.418000">which I personally already have running,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2191.419000" data-stop="2195.045000">but it's not yet integrated into Org Mode.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2195.766000" data-stop="2197.408000">That's going to take another year, I think.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2199.751000" data-stop="2202.275000"><strong class="speaker-name">Prot:</strong>  But you are persistent, so yeah, you will do it.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2202.295000" data-stop="2205.239000"><strong class="speaker-name">Pedro:</strong>  Yeah, no, no. I mean, I want to have it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2205.660000" data-stop="2206.782000">I need it also.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2206.802000" data-stop="2209.866000">At least I would like to see it officially</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2210.183000" data-stop="2214.096000">sanctioned by whoever needs to sanction it before</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2214.176000" data-stop="2215.461000">I retire in two years,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2217.869000" data-stop="2220.598000">so that people can use it once I retire.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2222.000000">37:02</span> <strong>More about HarfBuzz and ligatures?</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2222.401000" data-stop="2225.364000"><strong class="speaker-name">Prot:</strong>  Good, good. The other question I have related to this and</span> <span class="audio-time caption" data-speaker="Prot" data-start="2225.384000" data-stop="2229.048000">emoji is I remember when HarfBuzz was discussed</span> <span class="audio-time caption" data-speaker="Prot" data-start="2229.068000" data-stop="2231.130000">in the context of integrating it with Emacs.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2231.170000" data-stop="2233.813000">Maybe that was Emacs 28 or something along those lines.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2234.734000" data-stop="2235.915000">There was this point.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2235.995000" data-stop="2238.397000">Now, maybe I am conflating things, but there was</span> <span class="audio-time caption" data-speaker="Prot" data-start="2238.417000" data-stop="2241.861000">this point that with this included, like you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2241.921000" data-stop="2245.304000">build Emacs with support for HarfBuzz and now it</span> <span class="audio-time caption" data-speaker="Prot" data-start="2245.385000" data-stop="2247.767000">also supports ligatures.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2247.747000" data-stop="2251.375000">Now, a ligature is something that is fancy. Like, for</span> <span class="audio-time caption" data-speaker="Prot" data-start="2251.435000" data-stop="2254.021000">example, you take three characters, like</span> <span class="audio-time caption" data-speaker="Prot" data-start="2254.061000" data-stop="2256.025000">the equal sign in JavaScript,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2256.026000" data-stop="2257.147000">three equal signs,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2257.148000" data-stop="2259.894000">and you make it look like one character.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2260.155000" data-stop="2262.280000">I don't know if this is part of what you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="2262.360000" data-stop="2262.921000">doing here.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2263.778000" data-stop="2267.864000"><strong class="speaker-name">Pedro:</strong>  Well, a very good question.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2270.287000" data-stop="2275.274000">This discussion that there was on Emacs 28 for</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2275.594000" data-stop="2278.298000">HarfBuzz (yes or no) and ligatures and all these</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2278.338000" data-stop="2282.343000">kind of things has not helped.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2283.365000" data-stop="2284.666000">Let's say it this way...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2286.269000" data-stop="2288.031000">It adds confusion.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2288.011000" data-stop="2293.178000">In this context, sorry to be that clear.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2293.419000" data-stop="2296.723000">Why? Because you have to think it as two different,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2297.264000" data-stop="2299.868000">this is two different, completely different pairs</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2299.928000" data-stop="2300.248000">of shoes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2300.869000" data-stop="2304.154000"><strong class="speaker-name">Sacha:</strong>  Okay, because we're saying it's not LaTeX export.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2304.174000" data-stop="2308.099000"><strong class="speaker-name">Pedro:</strong>  Yes, so I'm delegating as much as I can</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2308.800000" data-stop="2312.345000">to lualatex and to all these, so ligatures and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2312.405000" data-stop="2315.790000">things like that are part of LaTeX.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2316.479000" data-stop="2319.505000">I don't want to treat them at all.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2320.126000" data-stop="2324.575000">The only point where I need to sort of touch</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2325.997000" data-stop="2328.242000">lower level, which would be like HarfBuzz, for</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2328.302000" data-stop="2332.430000">example, is telling lualatex to use HarfBuzz to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2333.351000" data-stop="2334.313000">include some characters.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2336.097000" data-stop="2338.842000">So that's the full question.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2339.041000" data-stop="2340.463000"><strong class="speaker-name">Sacha:</strong>  So far you've shown us how to include</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2340.523000" data-stop="2344.027000">Unicode in the output and also how to specify</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2344.067000" data-stop="2346.870000">fallback fonts for things like emojis and other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2346.910000" data-stop="2348.992000">things that are not included in your main font.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2349.493000" data-stop="2351.435000">Were there other parts of your very large patch?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2353.617000" data-stop="2358.203000"><strong class="speaker-name">Pedro:</strong>  Oh, the other parts, which are not...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2358.223000" data-stop="2362.127000">Well, I mean, the current state is that we have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2362.387000" data-stop="2363.108000">all this.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2363.000000">39:23</span> <strong>Upcoming talk on accessible presentations</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2363.982000" data-stop="2368.612000"><strong class="speaker-name">Pedro:</strong> We also have support for accessible presentations,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2369.193000" data-stop="2373.082000">and there... In EmacsConf 26, we're going to have a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2374.645000" data-stop="2377.391000">presentation on how this came to life by the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2377.451000" data-stop="2378.593000">person who inspired it,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2378.594000" data-stop="2382.362000">and by the person who wrote it, yours truly.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2382.629000" data-stop="2386.593000">The third thing that we have for that,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2386.594000" data-stop="2391.201000">we also have a lot of things related with metadata</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2392.382000" data-stop="2396.468000">management for LaTeX and for PDF documents.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2397.369000" data-stop="2401.635000">That's also something where I directly call on</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2401.755000" data-stop="2407.082000">experts to help us because I know what I know,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2407.342000" data-stop="2410.206000">which is at this point I know I don't know.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2410.608000" data-stop="2412.890000">That's my current situation.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2414.652000" data-stop="2416.734000">I know very little about all this document</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2417.535000" data-stop="2419.237000">metadata stuff.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2419.257000" data-stop="2423.401000">I'm learning in the process of writing things</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2423.461000" data-stop="2426.865000">for accessible presentations.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2427.285000" data-stop="2431.369000">I'm also learning things related with tagging</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2431.409000" data-stop="2434.152000">PDFs and the tag PDF and all this kind of</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2435.554000" data-stop="2438.016000">packages which are emerging right now and latest.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2439.160000" data-stop="2440.122000">And all this kind of things.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2440.202000" data-stop="2444.730000">This integration, which is starting to be fruitful.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2445.672000" data-stop="2450.140000">I already have... I'm using it with a couple of</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2450.200000" data-stop="2451.442000">students who need that.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2452.003000" data-stop="2454.688000">They can access my presentations right now.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2457.753000" data-stop="2463.143000">I'm also sort of using them as guinea pigs,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2463.123000" data-stop="2467.827000">as willing guinea pigs. I'm going beyond</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2468.308000" data-stop="2470.610000">presentations to providing them with documents</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2470.670000" data-stop="2473.592000">and so on, and they provide feedback about how</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2473.693000" data-stop="2475.554000">accessible those documents are and so on.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2476.615000" data-stop="2478.937000">For that, we need help.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2479.000000">41:19</span> <strong>Upcoming work on Polyglossia and Babel</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2479.838000" data-stop="2482.741000"><strong class="speaker-name">Pedro:</strong> Then the other big thing which is still part</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2482.781000" data-stop="2489.667000">of our conversation right now is the Polyglossia</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2490.928000" data-stop="2492.910000">and Babel packages.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2493.346000" data-stop="2500.535000">Polyglossian Babel for internationalization.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2502.898000" data-stop="2506.061000">For example, Babel is very nice in managing</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2506.062000" data-stop="2510.007000">left to right and right to left and things like that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2511.389000" data-stop="2513.211000"><strong class="speaker-name">Sacha:</strong>  I don't suppose you have a quick demonstration?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2514.558000" data-stop="2515.560000"><strong class="speaker-name">Pedro:</strong>  Not yet.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2517.042000" data-stop="2520.327000">That would be another long presentation to show</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2520.368000" data-stop="2522.892000">you all the kinds of things that we can do.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2522.000000">42:02</span> <strong>Chinese, Japanese, and Korean
</strong></div><p></p><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-43-47-100.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/emacs-chat-31-pedro-a-aranda-gutierrez-00-43-47-100.jpg" alt="image from video 00:43:47.100" data-time="00:43:47.100"></a><span class="audio-time caption" data-speaker="Pedro" data-start="2522.932000" data-stop="2529.583000"><strong class="speaker-name">Pedro:</strong> And just before we close this, I've been showing</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2530.023000" data-stop="2534.190000">what I mostly hear dominate, which is English,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2534.571000" data-stop="2538.878000">Spanish, or Latin alphabet.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2538.858000" data-stop="2543.224000">But with this package, we also have initial</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2543.264000" data-stop="2548.390000">support for when you're using xelatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2549.011000" data-stop="2553.336000">There's a package which is called xeCJK to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2553.477000" data-stop="2556.559000">provide simplified Chinese, Japanese,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2556.560000" data-stop="2557.962000">and Korean documents.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2558.643000" data-stop="2563.689000">So this, with lualatex, raw, without any Babel or</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2563.770000" data-stop="2566.732000">anything else, raw and monolingual,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2566.733000" data-stop="2568.055000">is also supported.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2568.794000" data-stop="2573.861000">What I basically do is I map what is on</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2574.101000" data-stop="2578.307000">Overleaf describing how to do this with xelatex</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2578.427000" data-stop="2581.992000">and this package which is called xeCJK.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2583.575000" data-stop="2587.761000">I map that with the same kind of header.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2588.021000" data-stop="2591.946000">You can use this kind of variables to do the same</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2592.547000" data-stop="2597.434000">for this Chinese, Japanese, and Korean document.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2598.022000" data-stop="2600.888000"><strong class="speaker-name">Sacha:</strong>  Would you happen to have an example so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2601.650000" data-stop="2603.754000">that people can see what the markup looks like?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2605.738000" data-stop="2608.564000"><strong class="speaker-name">Pedro:</strong>  The markup, I mean, the idea would be</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2608.724000" data-stop="2612.993000">instead of using main... I don't have an example here..</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2614.289000" data-stop="2616.895000">But the idea is that instead of calling the fonts</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2617.155000" data-stop="2621.464000">main, sans, and mono, you have CJKmain.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2621.945000" data-stop="2623.910000">So you would have something like, the font would</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2623.950000" data-stop="2625.132000">be like CJKMain.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2625.774000" data-stop="2630.203000">C, J, K. And the other thing is that you would</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2630.243000" data-stop="2634.272000">have to change your compiler to xelatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2635.973000" data-stop="2642.502000">That's also very, very well documented in current</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2643.082000" data-stop="2644.364000">main Org.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2645.165000" data-stop="2646.206000">So we have it.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2650.672000" data-stop="2653.977000">That would be more or less the effort of the last</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2654.137000" data-stop="2660.265000">couple of years and how it has crystallized into</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2660.305000" data-stop="2662.588000">things that are already in master.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2662.000000">44:22</span> <strong>The development process</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2662.973000" data-stop="2666.497000"><strong class="speaker-name">Sacha:</strong>  I'm quite curious about the development process.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2666.577000" data-stop="2669.641000">Since it's a large change and it's taking a while</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.661000" data-stop="2672.144000">to develop, what was it like for you to keep it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2672.204000" data-stop="2675.989000">going despite all the developments in Org</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2676.069000" data-stop="2679.113000">underneath?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2679.133000" data-stop="2681.055000"><strong class="speaker-name">Pedro:</strong>  Well, it's not that difficult.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2681.756000" data-stop="2686.382000">At the end, I needed to learn to use VC.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2687.948000" data-stop="2691.653000">Last year in Emacs, I'm doing everything from the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2691.673000" data-stop="2693.996000">VC package in Emacs.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2694.016000" data-stop="2698.361000">So I have a nice workflow there to go and get</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2698.461000" data-stop="2703.948000">my... I have two... On one side, I'm, of course,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2705.150000" data-stop="2708.034000">going back and putting everything into the main</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2708.314000" data-stop="2711.458000">Org git.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2711.438000" data-stop="2716.086000">But I'm also having my own Codeberg with most</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2716.146000" data-stop="2718.290000">things that I'm using.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2719.993000" data-stop="2723.379000">With Emacs it's quite easy to go, either modify</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2723.519000" data-stop="2726.885000">one and have the things pushed up, or generating</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2726.925000" data-stop="2731.793000">the patches so that Ihor blesses them,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2731.773000" data-stop="2733.315000">puts them into main.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2733.735000" data-stop="2738.520000">Or when I'm doing lots of things that I need for</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2738.600000" data-stop="2740.803000">a certain point, I go to my Codeberg.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2740.843000" data-stop="2742.725000">There I have my FontSpec 3 branch.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2743.305000" data-stop="2745.428000">There I do my own changes.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2745.448000" data-stop="2746.108000">I check them.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2746.168000" data-stop="2746.809000">I test them.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2746.989000" data-stop="2749.051000">I test drive them.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2749.692000" data-stop="2752.715000">Because, yes, it's been a lot of work to have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2752.795000" data-stop="2753.917000">everything running.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2755.138000" data-stop="2759.322000">But it's always based on real life.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2759.342000" data-stop="2764.119000">And how would... I try to say</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2764.120000" data-stop="2766.703000">how would someone do it, who knows a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2766.763000" data-stop="2772.151000">bit about Emacs and a bit about LaTeX and wants</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2772.651000" data-stop="2774.133000">to write as little as possible.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2775.736000" data-stop="2777.799000"><strong class="speaker-name">Sacha:</strong>  This is so much better than the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2777.879000" data-stop="2781.403000">other way of specifying a new LaTeX command that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2781.424000" data-stop="2783.326000">just changes the font for that one specific</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2783.366000" data-stop="2784.908000">character and then you have to use it for all the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2784.968000" data-stop="2786.430000">emojis that you have in your document.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2786.891000" data-stop="2789.775000">So having it automatically fall back is so much nicer.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2791.308000" data-stop="2794.452000"><strong class="speaker-name">Pedro:</strong>  Yeah, no, I mean, I was not going to go</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2794.512000" data-stop="2797.856000">the PDF way of having every emoji that I want,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2798.557000" data-stop="2801.300000">recoded, and then inserted into the document.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2802.041000" data-stop="2804.965000">I tried some.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2806.887000" data-stop="2807.528000">What was it?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2807.949000" data-stop="2808.810000">When did we start?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2810.652000" data-stop="2813.115000">I tried it like eight years ago, and I decided</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2813.155000" data-stop="2817.154000">once I have emojis in a nice way, I will use them.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2817.795000" data-stop="2820.340000">So my first manuals, if you go back, the first</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2820.380000" data-stop="2823.285000">manuals that I distributed for that specific</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2823.345000" data-stop="2825.189000">course did not have any emojis.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2826.571000" data-stop="2832.482000">So I was able to do basically this, which was</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2832.783000" data-stop="2836.890000">what I needed for... I started with a header like this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2839.334000" data-stop="2843.639000">And then when things came and I also needed to go</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2843.739000" data-stop="2848.765000">like the scaling, what I did was scale.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2851.969000" data-stop="2855.093000">So this was my beginning in all this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2857.496000" data-stop="2859.939000">And these were the commands that I always had in</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2859.959000" data-stop="2862.802000">the beginning with my lualatex.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2863.062000" data-stop="2865.325000">The moment I moved to lualatex</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2865.777000" data-stop="2872.248000">which was when I needed to do things like this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2873.730000" data-stop="2878.017000">Then once I wanted to go further, then I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2878.057000" data-stop="2880.742000">started. When this came to the mailing list,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2880.982000" data-stop="2883.246000">my first answer was I'm doing this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2884.660000" data-stop="2886.523000">And then the next question was,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2886.524000" data-stop="2887.507000">what about the emojis?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2887.527000" data-stop="2892.499000">That sort of triggered the rest.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2892.000000">48:12</span> <strong>Retirement</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2892.519000" data-stop="2894.583000"><strong class="speaker-name">Sacha:</strong>  You mentioned wanting to retire in two years.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2895.024000" data-stop="2897.751000">I very much hope that you will retire and do even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2897.811000" data-stop="2898.653000">more Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2899.814000" data-stop="2906.965000"><strong class="speaker-name">Pedro:</strong>  I want to continue because it's a nice pastime.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2908.587000" data-stop="2914.396000">I want to transition from my tool at work, or in</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2914.456000" data-stop="2918.762000">this case, my tool at the university, to this is</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2918.843000" data-stop="2924.291000">a nice pastime to keep this up and running.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2924.812000" data-stop="2927.155000">It would be a real pity to lose all this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2927.860000" data-stop="2929.544000"><strong class="speaker-name">Sacha:</strong>  I'm sure we can find you volunteer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2929.584000" data-stop="2930.106000">guinea pigs.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="2932.652000" data-stop="2936.341000"><strong class="speaker-name">Pedro:</strong>  I hope I'll get more and more, because</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2936.762000" data-stop="2941.313000">the more people test it, the better it will get.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2941.968000" data-stop="2944.411000">And I'm really looking forward to... I mean, I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2944.471000" data-stop="2948.716000">already showed all the things that you can do in</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2948.736000" data-stop="2955.383000">the last big... In the last Emacs conference last winter.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2956.444000" data-stop="2959.368000">So I'm not going to repeat this here.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2960.509000" data-stop="2964.413000">So the talk, because I think it's more important</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2964.474000" data-stop="2967.377000">to go move on to the next big thing and have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2967.437000" data-stop="2970.220000">people doing accessible documents.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2971.634000" data-stop="2975.826000">I'll keep on top of my donkey with the train</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2975.866000" data-stop="2979.357000">behind me until I get Babel and Polyglossia also</span> <span class="audio-time caption" data-speaker="Pedro" data-start="2979.437000" data-stop="2981.122000">integrated.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2981.000000">49:41</span> <strong>Fallback fonts</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2981.142000" data-stop="2982.285000"><strong class="speaker-name">Prot:</strong>  Nice, nice, nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2983.902000" data-stop="2986.484000">Let me ask you the other question I had,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2986.504000" data-stop="2988.146000">which maybe it is simple.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2988.666000" data-stop="2990.428000">Because you mentioned that you want to have</span> <span class="audio-time caption" data-speaker="Prot" data-start="2990.908000" data-stop="2993.571000">local variables so that the documents are</span> <span class="audio-time caption" data-speaker="Prot" data-start="2993.651000" data-stop="2997.474000">portable, which brings me to the question about</span> <span class="audio-time caption" data-speaker="Prot" data-start="2998.075000" data-stop="2999.916000">specifying generic fonts.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2999.936000" data-stop="3004.320000">Like, can you do something like use whatever the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3004.380000" data-stop="3007.864000">system has for Serif, Sans, Mono?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3007.884000" data-stop="3011.467000">Or you always have to specify a font family, like</span> <span class="audio-time caption" data-speaker="Prot" data-start="3011.547000" data-stop="3013.909000">Free Serif, Noto Sans, etc.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3013.889000" data-stop="3019.198000"><strong class="speaker-name">Pedro:</strong>  At this point, this was a very very long</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3019.238000" data-stop="3020.360000">discussion with Ihor.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3020.901000" data-stop="3023.605000">Do you want to have generics or do you want to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3023.665000" data-stop="3024.607000">have specifics?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3026.510000" data-stop="3029.956000">I was looking more towards specifics.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3030.317000" data-stop="3035.911000">Why? Because in my experience, I mean, before I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3035.931000" data-stop="3039.216000">started lecturing, I was for a long time in a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3039.316000" data-stop="3041.079000">research and development company.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3041.981000" data-stop="3043.483000">We had European projects.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3043.744000" data-stop="3049.754000">There you had your own LaTeX templates.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3050.294000" data-stop="3053.059000">There you had to specify each and every font.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3054.052000" data-stop="3057.578000">Then in parallel with that, in the company they</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3057.618000" data-stop="3061.784000">had their own templates for PowerPoint, for Word</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3061.844000" data-stop="3065.510000">and so on, and you had to specify each and every</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3065.570000" data-stop="3067.854000">font that you wanted to use.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3068.695000" data-stop="3073.723000">So I've been mapping my experience in my prior</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3073.763000" data-stop="3076.547000">life into this.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3077.409000" data-stop="3079.452000">Having font families</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3080.090000" data-stop="3082.592000">might be nice. For example, Bera, I said at the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3082.632000" data-stop="3084.494000">beginning, that's one of the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3084.554000" data-stop="3087.577000">things that might be interesting, right? But as you</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3087.617000" data-stop="3091.720000">see, even in pdflatex, with Bera, you have to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3091.921000" data-stop="3095.384000">include three different packages. So what's</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3095.444000" data-stop="3097.306000">the difference between including three different</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3097.346000" data-stop="3101.870000">packages, or directly saying, here, you have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3101.890000" data-stop="3104.492000">three different fonts, one for main, one for...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3104.552000" data-stop="3107.495000">it's only one for main, one</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3107.535000" data-stop="3110.097000">for sans and one for...</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3110.077000" data-stop="3112.083000">That's the only thing that you have in LaTeX.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3112.705000" data-stop="3115.454000"><strong class="speaker-name">Sacha:</strong>  So, not like the CSS way of specifying</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3115.474000" data-stop="3119.146000">multiple fonts just in case one of them is not there?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3119.166000" data-stop="3124.232000"><strong class="speaker-name">Pedro:</strong>  No. I mean, in this case,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3124.233000" data-stop="3129.400000">you are always going to go with what the system has.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3129.420000" data-stop="3132.424000">Normally, most of the fonts that, at least</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3132.484000" data-stop="3135.608000">most of the fonts that I recommend to use, are</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3135.669000" data-stop="3139.333000">fonts that are included because you have your</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3139.554000" data-stop="3142.718000">LaTeX installed underneath.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3144.160000" data-stop="3146.843000">It's not that I'm going to be there with a, I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3146.883000" data-stop="3150.428000">don't know, what was this, what was it?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3151.505000" data-stop="3156.614000">Well, there was this Telefonica font family.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3160.120000" data-stop="3161.583000">No one is going to have it in real life.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3163.987000" data-stop="3169.016000">But the Free fonts are part of LaTeX.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3169.537000" data-stop="3171.560000">Another font that I really like a lot, because</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3171.620000" data-stop="3176.128000">it's very, very readable, is the TeX Gyre family.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3176.969000" data-stop="3178.813000">TeX Gyre is very, very readable.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3179.174000" data-stop="3180.436000">They have all kinds of fonts.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3180.937000" data-stop="3181.879000">I'm using two.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3182.140000" data-stop="3182.260000">Why?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3182.300000" data-stop="3184.505000">Because it's part of LaTeX.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3186.000000">53:06</span> <strong>LaTeX versions</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3186.429000" data-stop="3189.254000"><strong class="speaker-name">Pedro:</strong> And by the way, all this that I've shown today</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3189.295000" data-stop="3195.788000">can be done with a LaTeX which is basically 2024.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3197.202000" data-stop="3200.570000">What I'm going to be showing in December needs a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3200.650000" data-stop="3202.274000">very, very modern LaTeX.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3202.935000" data-stop="3203.116000">Why?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3203.136000" data-stop="3207.025000">Because accessibility has not been in the wire</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3207.165000" data-stop="3210.954000">for the last... Well, it has only been in the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3210.994000" data-stop="3212.157000">wire for the last months.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3213.352000" data-stop="3216.295000">So, the real support for accessibility things</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3216.415000" data-stop="3219.718000">comes with very, very modern LaTeX stuff.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3219.738000" data-stop="3222.681000">But this is something you can do with, I mean,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3222.901000" data-stop="3229.307000">Ubuntu 2024, I'm sure, and Ubuntu even earlier,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3229.668000" data-stop="3230.769000">you could also do.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3231.690000" data-stop="3235.393000">Because the LaTeX is not that fancy.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3235.413000" data-stop="3238.016000">I think fallback fonts are already a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3238.076000" data-stop="3241.779000">well-established mechanism in lualatex for a lot</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3241.819000" data-stop="3242.380000">of time.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3243.608000" data-stop="3245.210000"><strong class="speaker-name">Sacha:</strong>  Would you happen to know if the widely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3245.250000" data-stop="3248.234000">released LaTeX 2024, for example, might have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3248.314000" data-stop="3250.837000">support for multiple fallback fonts?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3253.040000" data-stop="3256.445000"><strong class="speaker-name">Pedro:</strong>  That should be starting 2020.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3256.485000" data-stop="3266.378000"><strong class="speaker-name">Sacha:</strong>  Okay. So it's just in the Org side</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3266.498000" data-stop="3269.182000">where you might say main, this font is just Free</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3269.202000" data-stop="3272.586000">Serif, and not Free Serif, something, something.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3273.022000" data-stop="3277.770000"><strong class="speaker-name">Pedro:</strong>  Yeah exactly all right because...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3277.771000" data-stop="3280.235000"><strong class="speaker-name">Sacha:</strong>  I do actually use custom fonts. When I export my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3280.295000" data-stop="3282.760000">configuration, I want to use my handwriting for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3282.840000" data-stop="3285.465000">the titles, but of course nobody else is going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3285.485000" data-stop="3287.508000">to have my handwriting... I mean, it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3287.548000" data-stop="3289.392000">public but people are not going to go to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3289.412000" data-stop="3292.337000">trouble of downloading it, so yes, it would be nice</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3292.377000" data-stop="3295.142000">to have that fallback. Not that I'm saying, "Please</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3295.162000" data-stop="3296.785000">get on your donkey and go in that direction..."</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3298.233000" data-stop="3301.397000"><strong class="speaker-name">Pedro:</strong>  No, of course not. But in this case,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3301.817000" data-stop="3305.682000">good news for you, if you have this as a ttf or as</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3305.742000" data-stop="3310.587000">an otf font, then you can include that as your</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3310.627000" data-stop="3314.492000">main font, and the PDF that you post at the end</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3315.413000" data-stop="3319.157000">will have that already embedded, so you can</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3319.378000" data-stop="3321.540000">produce your PDFs with your fonts.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3321.858000" data-stop="3324.843000">The thing is, if you want to share the font, if</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3324.863000" data-stop="3327.688000">you want to share the source and then have other</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3327.728000" data-stop="3330.633000">people compile it, then you have to tell them to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3330.693000" data-stop="3335.782000">install the fonts that are missing.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3336.523000" data-stop="3338.026000">But I think that's something that happens always.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3339.148000" data-stop="3340.871000">You enter a company, they have their own fonts.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3340.911000" data-stop="3343.195000">The first thing that you have to do, if you don't</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3343.235000" data-stop="3348.918000">get a pre-installed computer: download the fonts.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3349.018000" data-stop="3351.061000">If you want to produce documents for the company,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3351.081000" data-stop="3353.084000">you have to download the fonts and install them</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3353.124000" data-stop="3354.406000">so that you can produce.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3355.247000" data-stop="3356.949000">You don't have a boss telling you, no,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3356.989000" data-stop="3358.672000">the fonts, the fonts, the fonts.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3359.593000" data-stop="3361.375000"><strong class="speaker-name">Prot:</strong>  It's part of the brand, of course, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3361.716000" data-stop="3363.879000"><strong class="speaker-name">Pedro:</strong>  Yeah, no, no, it's a very important part</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3363.919000" data-stop="3364.420000">of the brand.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3364.660000" data-stop="3368.926000"><strong class="speaker-name">Sacha:</strong>  And of course, LaTeX is very good for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3368.986000" data-stop="3371.710000">controlling all these matters of presentation.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3372.702000" data-stop="3375.549000"><strong class="speaker-name">Pedro:</strong>  Exactly. I mean one of the things that I</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3375.910000" data-stop="3381.663000">I like most... Once again, here I've tried a</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3382.385000" data-stop="3384.670000">couple of times to have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3385.696000" data-stop="3389.141000">a movement in that direction, a bit more</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3389.241000" data-stop="3395.229000">control of fonts within a LaTeX document or</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3395.350000" data-stop="3397.032000">within an Org document.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3398.000000">56:38</span> <strong>Sans serif fonts are better for accessibility</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3398.714000" data-stop="3402.640000"><strong class="speaker-name">Pedro:</strong> What you can do now is in LaTeX you can go and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3402.700000" data-stop="3407.767000">say no, the main font is SF family.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3408.888000" data-stop="3411.152000">That's the default font so that you have</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3411.212000" data-stop="3412.834000">everything in some series.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3413.017000" data-stop="3416.180000">That's something that, by the way, enhances</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3416.561000" data-stop="3417.262000">accessibility.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3419.324000" data-stop="3423.268000">Because there are some people who will just</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3423.869000" data-stop="3429.755000">collapse with serif fonts and they need sans serif.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3429.000000">57:09</span> <strong>Wanting markup for sans serif</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3429.775000" data-stop="3432.518000"><strong class="speaker-name">Pedro:</strong> The other thing, the step that I wanted to move</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3432.558000" data-stop="3435.641000">forward is I want to highlight some words with</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3435.942000" data-stop="3437.083000">Sans Serif.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3437.148000" data-stop="3441.393000">Instead of bold or with the emphasis with the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3441.453000" data-stop="3446.298000">italics and so on, why not make some words stand</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3446.399000" data-stop="3447.960000">out with sans serif?</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3448.381000" data-stop="3450.804000">That's something that I also discussed in the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3450.844000" data-stop="3452.826000">Org list and no one wanted that.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3454.308000" data-stop="3457.131000">That's a pity.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3458.232000" data-stop="3460.314000"><strong class="speaker-name">Prot:</strong>  Because it might introduce new markup, of</span> <span class="audio-time caption" data-speaker="Prot" data-start="3460.375000" data-stop="3460.635000">course.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3461.055000" data-stop="3466.281000"><strong class="speaker-name">Pedro:</strong>  Yes. I would need just one more markup.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3466.301000" data-stop="3468.535000">And I was like, "Another one, please?" "No."</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3470.217000" data-stop="3470.657000"><strong class="speaker-name">Sacha:</strong>  I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3472.379000" data-stop="3474.402000">I've been just overriding the standard one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3474.422000" data-stop="3477.305000">because, for example, I won't actually underline things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3477.846000" data-stop="3480.930000">So I just change my underline to be something else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3480.950000" data-stop="3483.313000">But of course, as a general practice, it's not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3483.353000" data-stop="3484.995000">going to be that useful.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3485.436000" data-stop="3487.438000">You only have so many emphasis characters.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3488.532000" data-stop="3489.474000"><strong class="speaker-name">Pedro:</strong>  Yeah, no, of course.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3489.554000" data-stop="3492.900000">But if you don't want to underline another thing</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3492.920000" data-stop="3497.809000">that many people find disturbing or really</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3497.869000" data-stop="3501.756000">challenging, this is why I'm saying, let's try to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3501.816000" data-stop="3504.962000">also have the possibility of having a specific</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3505.022000" data-stop="3507.486000">markup just for Sans Serif for that.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3510.284000" data-stop="3512.667000">It's all accessibility.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3513.307000" data-stop="3518.053000">I'm quite, how can I say, I'm very sensible to</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3518.113000" data-stop="3518.853000">this kind of things.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3519.995000" data-stop="3521.656000">I'm very sensitive to this kind of things.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3524.179000" data-stop="3528.344000">Mainly because I've been from very, very young,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3528.644000" data-stop="3536.713000">I've been very involved in the disability world.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3537.436000" data-stop="3540.421000"><strong class="speaker-name">Sacha:</strong>  I'm looking forward to hearing more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3540.461000" data-stop="3545.008000">about your accessibility improvements in December</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3545.188000" data-stop="3546.490000">at EmacsConf.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3548.053000" data-stop="3549.956000">Thank you so much for working on this.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3551.518000" data-stop="3552.480000"><strong class="speaker-name">Pedro:</strong>  You're welcome.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3552.500000" data-stop="3556.947000">Thank you, yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3557.433000" data-stop="3561.685000"><strong class="speaker-name">Sacha:</strong>  You showed us Unicode, you showed us</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3561.785000" data-stop="3564.894000">emojis, you showed us theoretically how you would</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3565.356000" data-stop="3568.625000">do it for non-Latin character sets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3569.146000" data-stop="3571.172000">It will all be wonderfully documented.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3571.490000" data-stop="3574.535000">And it is now in Org Devel, right?</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3575.156000" data-stop="3577.399000"><strong class="speaker-name">Pedro:</strong>  It's in Org Main.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3578.220000" data-stop="3578.701000"><strong class="speaker-name">Sacha:</strong>  Oh, sorry, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3578.801000" data-stop="3579.242000">Org Main.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3579.262000" data-stop="3580.924000">So it'll make it into its release.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3581.946000" data-stop="3584.670000">I'm looking forward to seeing all of that.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3585.351000" data-stop="3592.142000"><strong class="speaker-name">Pedro:</strong>  It should be like Org 10 when it comes into being.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3592.162000" data-stop="3596.128000">People will still need to download stuff and</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3596.548000" data-stop="3598.932000">compile it on their own.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3598.912000" data-stop="3601.514000">That's the main problem.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3601.814000" data-stop="3604.116000">That's the only thing that I would like to see</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3604.156000" data-stop="3606.659000">advance at some point.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3607.119000" data-stop="3609.340000">But maybe that's with the next Emacs,</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3609.341000" data-stop="3610.182000">with Emacs 32.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3611.082000" data-stop="3612.203000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3612.604000" data-stop="3614.365000">Looking forward to seeing how that works out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3614.445000" data-stop="3616.587000">If people are curious, they can find you on the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3616.687000" data-stop="3619.449000">Org Mode mailing list and volunteer to be guinea</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3619.469000" data-stop="3620.871000">pigs for various things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3621.671000" data-stop="3624.073000">Your code is already in main, so it's easy enough</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3624.113000" data-stop="3624.834000">to try out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3625.474000" data-stop="3627.596000">And thank you very much for sharing the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3627.636000" data-stop="3628.497000">demonstration today.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3629.877000" data-stop="3630.678000"><strong class="speaker-name">Pedro:</strong>  Okay, fine.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3630.898000" data-stop="3631.679000">Thank you very much.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3632.100000" data-stop="3633.862000">Just one small comment.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3633.000000">1:00:33</span> <strong>Contacting Pedro</strong></div><p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3633.922000" data-stop="3638.668000"><strong class="speaker-name">Pedro:</strong> I'm also maintaining LaTeX and Beamer in Org.</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3638.688000" data-stop="3642.453000">So any bugs, any questions, anything through the</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3642.493000" data-stop="3646.038000">mailing list and I'll try to answer as soon as</span> <span class="audio-time caption" data-speaker="Pedro" data-start="3646.078000" data-stop="3649.122000">possible.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3649.142000" data-stop="3650.443000"><strong class="speaker-name">Sacha:</strong>  I will end the stream there so people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3650.483000" data-stop="3652.486000">have an hour of wonderful stuff to listen to.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3652.726000" data-stop="3654.028000">Thanks everyone for joining.</span> <p></p><span class="audio-time caption" data-speaker="Pedro" data-start="3655.358000" data-stop="3656.767000"><strong class="speaker-name">Pedro:</strong>  Thank you.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3656.768000" data-stop="3658.205000"><strong class="speaker-name">Prot:</strong>  Thank you.</span></div>
<p></p>


<a name="end-emacs-chat-31-pedro-a-aranda-gutierrez-transcript"></a></details>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F10%2Foct-2-emacs-chat-31-pedro-a-aranda-gutierrez%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>2026-09-28 Emacs news</title>
		<link>https://sachachua.com/blog/2026/09/2026-09-28-emacs-news/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 28 Sep 2026 13:31:07 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/09/2026-09-28-emacs-news/</guid>
		<description><![CDATA[<p>
There's a <a href="https://www.youtube.com/watch?v=KQEZBGkImII">nice long video about Org mode</a> with plenty of tips for beginners. Also, it's the end of the month, so check out the submissions for the <a href="https://www.emacswiki.org/emacs/Carnival">Emacs Carnival</a> for September (<a href="https://www.emacswiki.org/emacs/CarnivalSeptember2026">"Games"</a>) and consider volunteering to host the next one!
</p>

<ul class="org-ul">
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs Berlin: Emacs-Berlin Hybrid Meetup <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Wed Sep 30 1000 America/Vancouver - 1200 America/Chicago - 1300 America/Toronto - 1700 Etc/UTC - 1900 Europe/Berlin - 2230 Asia/Kolkata &ndash; Thu Oct 1 0100 Asia/Singapore</li>
<li>EmacsATX: Emacs Social <a href="https://www.meetup.com/emacsatx/events/316464079/">https://www.meetup.com/emacsatx/events/316464079/</a> Thu Oct 1 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/UTC &ndash; Fri Oct 2 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore</li>
<li><a href="https://sachachua.com/blog/2026/10/oct-2-emacs-chat-31-pedro-a-aranda-gutierrez/">Sacha Chua: Oct 2 - Emacs Chat 31: Pedro A. Aranda Gutierrez</a> (<a href="https://protesilaos.com/codelog/2026-09-25-emacs-live-sacha-pedro/">Protesilaos</a>, <a href="https://www.youtube.com/watch?v=aEnacESU-DU">YouTube</a>)</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Fri Oct 2 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/UTC - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
<li>Emacs.si (in person): Emacs.si meetup #10 2026 (v #živo) <a href="https://dogodki.kompot.si/events/df5d39f6-4d78-4841-b207-ef2c9e60bd5c">https://dogodki.kompot.si/events/df5d39f6-4d78-4841-b207-ef2c9e60bd5c</a> Mon Oct 5 1900 CET</li>
<li>Atelier Emacs Montpellier (in person) <a href="https://lebib.org/date/atelier-emacs">https://lebib.org/date/atelier-emacs</a> Fri Oct 9 1800 Europe/Paris</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1wl2rhp/confirmkillemacs_should_be_a_boolean/">Discussion about confirm-kill-emacs</a> (<a href="https://irreal.org/blog/?p=14104">Irreal</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="http://yummymelon.com/devnull/announcing-restlib.html">Charles Choi: Announcing restlib - a utility library for building Emacs REST clients</a></li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://techhub.social/@lispwizard/117348649189858245">Tip about changing the default font size (@lispwizard@techhub.social)</a></li>
<li><a href="https://github.com/masukomi/doom_config/blob/main/config.org#per-mode-themes">Per-mode themes</a> (<a href="https://connectified.com/@masukomi/117337835482059211">@masukomi@connectified.com</a>)</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://mbork.pl/2026-09-21_forward-paragraph_in_Magit">Marcin Borkowski: forward-paragraph in Magit</a></li>
<li><a href="https://kod.ujo.moe/jadedctrl/bookmark-groups.el">jadedctrl/bookmark-groups.el: Easily manage separate Emacs bookmark files - Kodujo Ŝɪɴᴏɴᴏᴍᴇ</a> (<a href="https://jam.xwx.moe/objects/24911119-eaa5-4ba4-9d4b-c8dbd7c57ff3">@jadedctrl@jam.xwx.moe</a>)</li>
<li><a href="https://github.com/benleis1/ilist-plus">Some updates on my package ilist-plus</a> (<a href="https://www.reddit.com/r/emacs/comments/1wooper/some_updates_on_my_package_ilistplus/">Reddit</a>) extensions to imenu-list</li>
</ul></li>
<li>Hyperbole:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=o27oIxbSpBQ">Crie botões no Emacs</a> (10:36)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://techhub.social/@lispwizard/117328387866174436">C-u M-x dired to pass flags to ls command (@lispwizard@techhub.social)</a></li>
<li><a href="http://yummymelon.com/devnull/binding-the-spc-key-in-dired-and-ibuffer.html">Charles Choi: Binding the SPC key in Dired and IBuffer</a> (<a href="https://irreal.org/blog/?p=14106">Irreal</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1ws28im/til_about_remember_mode_builtin_persistentscratch/">TIL about Remember mode - built-in persistent-scratch</a></li>
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsFlyspellWordTracking">How Emacs does things: flyspell's way of tracking misspelled words</a> (<a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsFlyspellWordTracking">@chris_siebenmann@robot.villas</a>)</li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-09-25-emacs-denote-find-file/">Protesilaos: Emacs: find a file in the ‘denote-directory’</a></li>
<li><a href="https://protesilaos.com/codelog/2026-09-26-emacs-experiment-denote-cache/">Protesilaos: Emacs: I am experimenting with a Denote cache</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=KQEZBGkImII">How I Actually Use Org Mode - Emacs Everywhere #3</a> (01:00:42)</li>
<li><a href="https://www.youtube.com/watch?v=HqV_l5lry00">Spacemacs | What kind of notes I take? | Productivity</a> (07:04, in French)</li>
<li><a href="https://www.youtube.com/watch?v=YvFS1O2Oqvs">org for creator - turn your thought from graphs into meaningful posts</a> (13:43)
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=ZTsmHx7yoGo">org per creatori - i tuoi pensieri in grafi che creano storie</a> (12:55)</li>
</ul></li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20260924135500-emacs&#45;&#45;copy-only-what-you-see-teaching-m-w-a-prefix-argument/">James Dyer: Copy Only What You See: Teaching M-w a Prefix Argument</a> (<a href="https://irreal.org/blog/?p=14108">Irreal</a>)</li>
<li><a href="https://github.com/yibie/org-table-widget">org-table-widget 0.3.0: long Org tables now scroll like ordinary text</a> (<a href="https://www.reddit.com/r/emacs/comments/1wow52y/orgtablewidget_030_long_org_tables_now_scroll/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1wo1som/a_small_featurenot_sure_if_its_useful_but_its_a/">Org tangle and run</a></li>
<li><a href="https://v.redd.it/r82fm3ayg1rh1">Supertag V2: I rebuilt a note-taking system, and what I learned</a> (<a href="https://www.reddit.com/r/emacs/comments/1wn4hy7/supertag_v2_i_rebuilt_a_notetaking_system_and/">Reddit</a>)</li>
<li><a href="https://github.com/yibie/chai">Chai 2.1: read, highlight, search and ask your Org book library, with notes you can carry out</a> (<a href="https://www.reddit.com/r/emacs/comments/1wph5b1/chai_21_read_highlight_search_and_ask_your_org/">Reddit</a>)</li>
<li>Org development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=10814296c77681fbbf708f0d898fa88cbaa7ccce">Add OTHER_LANGUAGES to the metadata</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=578c2650bcd17d74658b7a3fdfc9fd4917eb159d">ox-latex: add :alt attribute for images</a></li>
</ul></li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1wpuk2f/emacs_clangd_and_lspmode_diagnostic_lag_while/">Emacs: clangd and lsp-mode -&gt; diagnostic lag while typing, and an on-demand solution</a></li>
<li><a href="https://protesilaos.com/codelog/2026-09-23-emacs-sxhkdrc-mode-1-3-0/">Protesilaos: Emacs: sxhkdrc-mode version 1.3.0</a></li>
<li><a href="https://www.reddit.com/r/lisp/comments/1wozt4o/varhammer_118_midnight/">Varhammer 1.1.8 "Midnight" - Portable Common Lisp for Windows</a> (<a href="https://www.reddit.com/r/emacs/comments/1wquz2p/varhammer_118_midnight/">Reddit</a>)</li>
</ul></li>
<li>Math:
<ul class="org-ul">
<li><a href="https://fosstodon.org/@aethor/117310180115101422">Tip: latex-math-mode minor mode has a menu of symbols (@aethor@fosstodon.org)</a></li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://techhub.social/@lispwizard/117343857396819133">send-invisible: Handle password prompts in shells or comint when not properly detected (@lispwizard@techhub.social)</a></li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://git.andros.dev/andros/termweb.el">andros/termweb.el: Reformat web pages so they read well in EWW, the Emacs browser</a> (<a href="https://activity.andros.dev/@andros/statuses/01M34VJZBRYMZGAX9H8BJFDZD4">@andros@activity.andros.dev</a>)</li>
<li><a href="https://einar.codeberg.page/eww-in-emacs-31-would-not-use-browse-url-generic-as-browse-url-secondary-browser-function.html">Einar Mostad: EWW in Emacs 31 would not use browse-url-generic as browse-url-secondary-browser-function</a></li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://github.com/guibor/teams4e">GitHub - guibor/teams4e: A mu4e-inspired Microsoft Teams client for Emacs.</a> (<a href="https://www.reddit.com/r/emacs/comments/1wpw4fb/github_guiborteams4e_a_mu4einspired_microsoft/">Reddit</a>)</li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=j2YSbH6OMD8">Playing around with OBS, Emacs, and speech commands</a> (01:54)</li>
</ul></li>
<li>LLMs:
<ul class="org-ul">
<li><a href="https://github.com/ahyatt/llm/tree/decision">llm package support for jev / laya-style quick decisions</a> (<a href="https://www.reddit.com/r/emacs/comments/1ws60sw/llm_package_support_for_jev_layastyle_quick/">Reddit</a>)</li>
<li><a href="https://moxnet.eu/braindump/brainiac-v3-0-released">Brainiac v3.0 released</a> (<a href="https://www.reddit.com/r/emacs/comments/1wncjh2/brainiac_v30_released/">Reddit</a>)</li>
<li><a href="https://xenodium.com/agent-shell-0-78-updates">Alvaro Ramirez: agent-shell 0.78 updates</a> (<a href="https://www.reddit.com/r/emacs/comments/1wn768h/agentshell_078_updates/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=mzba_LQQCLM">Fazendo gambiarra com Emacs e Remux</a> (55:31)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1wmxqol/fortnightly_tips_tricks_and_questions_20260922/">Fortnightly Tips, Tricks, and Questions — 2026-09-22 / week 38</a></li>
<li><a href="https://www.youtube.com/watch?v=3hBdSrqdXqs">Everyday Emacs 2026-2027 Series - 1</a> (02:11) - Series of videos in Turkish; live-coding?</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://olddeuteronomy.github.io/post/running-emacs-in-microvm/">The Emacs Cat: Running Emacs in microVM</a></li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel:
<ul class="org-ul">
<li><a href="https://lists.gnu.org/archive/html/emacs-devel/2026-09/msg00430.html">Detecting and warning about homoglyph attacks</a></li>
</ul></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=cc7a4dfbf175a361aecb4c0696ded20e02d6a8aa">Improve directory-files-recursively</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=193785af9fb7c269dfadfdbf96d3418e03787cc2">Fix creation of commit message from ChangeLog (bug#81909)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=70662bc0ff44c36674adf4ea9fd52e87a76a576a">New option vc-dir-simple-unmark-all-files</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=7b578f7d886b5dc5ef1a22b2b20a52ea443ed708">New option vc-quick-select-current-working-tree</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=b41af68695860eefacbae0a05c03798aee2f99c1">New command diff-goto-old-source</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/adif">adif</a>: Major mode for viewing and editing ADIF log files (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/aqui">aqui</a>: Location update (optimized for macOS) (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/consult-ghostel">consult-ghostel</a>: Consult integration for ghostel (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/consult-zoxide">consult-zoxide</a>: Jump to zoxide directories with Consult (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/dharmamitra">dharmamitra</a>: Sanskrit/Pāli/Tibetan/Chinese analysis via dharmamitra.org (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/latex-to-svg-for-markdown">latex-to-svg-for-markdown</a>: Preview Markdown LaTeX math as SVG (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/preview-tab">preview-tab</a>: Temporary file buffers, like VS Code's preview tab (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-09">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!</p>
<div><a href="https://sachachua.com/blog/2026/09/2026-09-28-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F09%2F2026-09-28-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>2026-09-21 Emacs news</title>
		<link>https://sachachua.com/blog/2026/09/2026-09-21-emacs-news/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 21 Sep 2026 12:02:45 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/09/2026-09-21-emacs-news/</guid>
		<description><![CDATA[<p>
I put the new <a href="https://elpa.gnu.org/packages/typewriter.html">typewriter</a> mode in the Fun category, but people might actually find the constraints useful for focused writing.
</p>

<ul class="org-ul">
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs APAC: Emacs APAC meetup (virtual) <a href="https://emacs-apac.gitlab.io/announcements/">https://emacs-apac.gitlab.io/announcements/</a> Sat Sep 26 0130 America/Vancouver - 0330 America/Chicago - 0430 America/Toronto - 0830 Etc/UTC - 1030 Europe/Berlin - 1400 Asia/Kolkata - 1630 Asia/Singapore</li>
<li>Emacs Berlin: Emacs-Berlin Hybrid Meetup <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Wed Sep 30 1000 America/Vancouver - 1200 America/Chicago - 1300 America/Toronto - 1700 Etc/UTC - 1900 Europe/Berlin - 2230 Asia/Kolkata &ndash; Thu Oct 1 0100 Asia/Singapore</li>
<li>EmacsATX: Emacs Social <a href="https://www.meetup.com/emacsatx/events/316464079/">https://www.meetup.com/emacsatx/events/316464079/</a> Thu Oct 1 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/UTC &ndash; Fri Oct 2 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Fri Oct 2 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/UTC - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1wj30nh/repeat_mode_finally_made_emacs_navigation_click/">Repeat mode finally made Emacs navigation click</a></li>
<li><a href="https://onlisp.co.uk/New-from-Emacs-31_002e1-_002d-Upgrade-packages-without-breaking-other-Emacsen.html">J.e.r.e.m.y B.r.y.a.n.t: New from Emacs 31.1 - Upgrade packages without breaking other Emacsen</a></li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/09/a-niftier-way-to-asciify-emacs-buffer.html">Raymond Zeitler: A Niftier Way To ASCIIfy An Emacs Buffer</a> - replace-char-fold</li>
<li><a href="https://www.youtube.com/watch?v=UGSV8XG-JMA">Livecoding for emacs: supersonic.el</a> (08:06)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-09-20-emacs-spacious-padding-0-9-0/">Protesilaos: Emacs: spacious-padding version 0.9.0</a></li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-09-17-emacs-beframe-1-6-0/">Protesilaos: Emacs: beframe version 1.6.0</a></li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-09-18-emacs-dired-preview-0-7-0/">Protesilaos: Emacs: dired-preview version 0.7.0</a></li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://github.com/robert-zaremba/markup2html">markup2html: aesthetic renderer of markdown and org-mode documents</a> (<a href="https://www.reddit.com/r/emacs/comments/1wk14sn/markup2html_aesthetic_renderer_of_markdown_and/">Reddit</a>)</li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://list.orgmode.org/87v7814la7.fsf@localhost">Org Mode requests: [RFC] Org markup inside comments (was: [Bug] Confusing appearance of bracket link in comment)</a></li>
<li><a href="https://ashishpanigrahi.com/blog/completed-org-items-since-date/">Ashish Panigrahi: An upgraded workflow on reviewing finished tasks with org-agenda</a></li>
<li><a href="https://coyotetracks.org/blog/org-mode-and-marked/">Org Mode, Marked, and Workflows</a></li>
<li><a href="https://www.youtube.com/watch?v=f2AAE2u5Xic">I Migrated My Obsidian Vault to Org Mode - Emacs Everywhere #2</a> (01:12:35)</li>
<li><a href="https://www.youtube.com/watch?v=20WfbmJmV1M">Org Roam Dashboard</a> (10:01)</li>
<li>Org development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=63022c5a0cb61cd7642625618c0f310d04916d3d">org-id: Standardize UUIDs to lowercase and use built-in uuid.el</a></li>
</ul></li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://shivjm.blog/emacs-consult-and-async-completion/">Bumbling my way through the Consult docs to build an async completer</a> (<a href="https://www.reddit.com/r/emacs/comments/1wh6t5h/bumbling_my_way_through_the_consult_docs_to_build/">Reddit</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://mastodon.social/@slackline/117307778876629546">TIL magit wraps around smerge so you can discard one side of a hunk with an unresolved conflict (@slackline)</a></li>
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/python/PythonEmacsFlycheckSettings">Python settings for Flycheck in GNU Emacs (as of September 2026)</a> (<a href="https://utcc.utoronto.ca/~cks/space/blog/python/PythonEmacsFlycheckSettings">@chris_siebenmann@robot.villas</a>)</li>
<li><a href="https://github.com/judaew/emacs-treesit-grammars">Pinned Tree-sitter grammars for Emacs treesit (emacs-treesit-grammars flake)</a> (<a href="https://www.reddit.com/r/emacs/comments/1wkyd15/pinned_treesitter_grammars_for_emacs_treesit/">Reddit</a>)</li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://www.jamescherti.com/emacs-terminal-performance-vterm-eat-ansi-term-ghostel/">Why Your Emacs Terminal is Slow and How to Fix It (vterm, eat, ghostel, term, and ansi-term)</a> (<a href="https://www.reddit.com/r/emacs/comments/1wg5zrw/why_your_emacs_terminal_is_slow_and_how_to_fix_it/">Reddit</a>, <a href="https://irreal.org/blog/?p=14085">Irreal</a>)</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://www.macs.hw.ac.uk/~rs46/posts/2022-01-11-mu4e-oauth.html">Microsoft outlook OAuth authentication with mu4e</a> (<a href="https://www.reddit.com/r/emacs/comments/1wir2yy/microsoft_outlook_oauth_authentication_with_mu4e/">Reddit</a>) - updated to use Thunderbird client ID</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1wkzx7r/using_an_existing_microsoft_365_mcp_login_to_get/">Using an existing Microsoft 365 MCP login to get Outlook mail into mu4e</a></li>
<li><a href="https://git.andros.dev/andros/presence.el">andros/presence.el: See when your friends are online, away or offline, and send and read simple messages, right from Emacs</a></li>
</ul></li>
<li>Doom Emacs:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=LumS4REqIjs">¿Por qué Doom Emacs es el secreto de los expertos?</a> (22:25)</li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=0taEcb0wq3o">Images with Emacs</a> (19:00)</li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="https://elpa.gnu.org/packages/typewriter.html">New package: Typewriter</a> (<a href="https://www.reddit.com/r/emacs/comments/1wh2wlr/new_package_typewriter/">Reddit</a>)</li>
</ul></li>
<li>LLMs:
<ul class="org-ul">
<li><a href="https://github.com/nick-maderight/envoy">envoy: hand an org heading or email from Emacs to a coding harness in tmux</a> (<a href="https://www.reddit.com/r/emacs/comments/1wlljjy/envoy_hand_an_org_heading_or_email_from_emacs_to/">Reddit</a>)</li>
<li><a href="https://notxor.nueva-actitud.org/2026/09/13/gptel-emacs-y-la-ia.html">gptel: Emacs y la IA</a></li>
<li><a href="https://github.com/sw-ml-study/moe-microscope/blob/main/docs/literate/moe-microscope.org">moe-microscope/docs/literate/moe-microscope.org at main · sw-ml-study/moe-microscope · GitHub</a></li>
<li><a href="https://blog.softwarewrighter.com/2026/09/16/ai-tools-coding-agent-in-mlpl/">AI Tools #7: A Coding Agent Small Enough to Understand | Software Wrighter Lab Blog</a></li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://techhub.social/@lispwizard/117300042182131627">Tip: C-u C-y yanks but leaves the cursor at the beginning of the string (@lispwizard@techhub.social)</a></li>
<li><a href="https://www.youtube.com/watch?v=SsC-OsHR9RY">Create beautiful diagrams in Emacs using d2</a> (11:08, <a href="https://gitlab.com/skybert/my-little-friends/-/blob/master/emacs/">code</a>, <a href="https://www.reddit.com/r/emacs/comments/1wkj6r5/create_beautiful_diagrams_in_emacs_using_d2/">Reddit</a>, <a href="https://irreal.org/blog/?p=14095">Irreal</a>) - also Org support</li>
<li><a href="https://www.jamescherti.com/prevent-emacs-freeze-so-long-files-very-long-lines/">How to Prevent Emacs from Freezing on Files files with Very Long Lines (e.g, minified JavaScript, compiled CSS, SQL dumps, large JSON files&hellip;)</a> (<a href="https://www.reddit.com/r/emacs/comments/1wiymsm/how_to_prevent_emacs_from_freezing_on_files_files/">Reddit</a>, <a href="https://irreal.org/blog/?p=14091">Irreal</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=50789ff15be6471c90765f4d095491e61d2ecb08">; * etc/NEWS: Announce underline styles support on Windows Terminal.</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=123b259040d590583f24120cba4fb021a1445f76">Add TTY support for overline (Bug#80208)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=0b01ea4fc22dc2793e3293e39243ffdc8423b080">use-package-ensure.el: Don't install during compilation (bug#81710)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=ba3879da490a1d95e7a8372e0f4f1340d19a3291">; Some followup Tramp changes of sync with 2.9.0</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=99a64e9f1285226f51a9bf87492f0ba4624f91ba">Update to Unicode 18.0 (bug#81880)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=82f763756c71aae1f6361c7ae116a31887f8cc8d">Document tramp-tolerate-tilde</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=30a6d006700b0c8ba9d785a9f6aed81a86e9025f">* lisp/vc/diff.el (diff-switches): Include "-r".</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=e66ebf54ae191d3e1993a82fae5b4a8bd4078cf6">Populate 'pcpu' and 'pmem' attributes on Darwin</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/amber-mode">amber-mode</a>: A major mode for the Amber programming language (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/git-modeline">git-modeline</a>: Show the git status of the current file in the modeline (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/latex-to-svg-for-org">latex-to-svg-for-org</a>: Preview Org LaTeX math as SVG (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/magit-standup">magit-standup</a>: Collect recent git commits for standup notes (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/nightpanel-theme">nightpanel-theme</a>: Saab instrument cluster colorscheme (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/org-roam-stats">org-roam-stats</a>: Personal Knowledge Management Dashboard (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/remoto">remoto</a>: Browse GitHub repos without cloning (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/restlib">restlib</a>: Utility library for building REST clients (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/testcover-audit">testcover-audit</a>: Quantitative coverage statistics for testcover.el (MELPA)</li>
<li><a target="_blank" href="https://elpa.gnu.org/packages/typewriter.html">typewriter</a>: Turn Emacs into a text adder (GNU ELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-09">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!</p>
<div><a href="https://sachachua.com/blog/2026/09/2026-09-21-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F09%2F2026-09-21-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>2026-09-14 Emacs news</title>
		<link>https://sachachua.com/blog/2026/09/2026-09-14-emacs-news/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 14:09:11 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/09/2026-09-14-emacs-news/</guid>
		<description><![CDATA[<div class="update" id="org415e773">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-09-15">[2026-09-15 Tue]</time></span>: Fixed link to <a href="https://ooblick.com/2026/09/customizing-pasted-strings-in-emacs/">Customizing Pasted Strings in Emacs | Epsilon Clue</a>
</p>

</div>

<p>
Not much commentary this week, but plenty of cool stuff to explore!
</p>

<ul class="org-ul">
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs Paris <a href="https://emacs-doctor.com/">https://emacs-doctor.com/</a> Tue Sep 15 0830 America/Vancouver - 1030 America/Chicago - 1130 America/Toronto - 1530 Etc/UTC - 1730 Europe/Berlin - 2100 Asia/Kolkata - 2330 Asia/Singapore</li>
<li>PDX Emacs (in person) <a href="https://pdx.social/@howard/117147689957341583">https://pdx.social/@howard/117147689957341583</a> - Tue Sept 15 6:00 pm in Portland, OR</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Wed Sep 16 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/UTC - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
<li>OrgDevMeetup <a href="https://bbb.emacsverse.org/rooms/orgdevmeetup">https://bbb.emacsverse.org/rooms/orgdevmeetup</a> Sat Sep 19 0100 America/Vancouver - 0300 America/Chicago - 0400 America/Toronto - 0800 Etc/UTC - 1000 Europe/Berlin - 1330 Asia/Kolkata - 1600 Asia/Singapore</li>
<li>EmacsSF (in person): coffee.el in SF <a href="https://www.meetup.com/emacs-sf/events/316535239/">https://www.meetup.com/emacs-sf/events/316535239/</a> Sat Sep 19 1100 America/Los_Angeles</li>
<li>Emacs APAC: Emacs APAC meetup (virtual) <a href="https://emacs-apac.gitlab.io/announcements/">https://emacs-apac.gitlab.io/announcements/</a> Sat Sep 26 0130 America/Vancouver - 0330 America/Chicago - 0430 America/Toronto - 0830 Etc/UTC - 1030 Europe/Berlin - 1400 Asia/Kolkata - 1630 Asia/Singapore</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://www.alcarney.me/blog/2026/emacs-tip-of-the-day/">Emacs Tip of the Day — Alex Carney</a> (<a href="https://mastodon.social/@alcarney/117252363109100092">@alcarney</a>) - news entries on splash screen</li>
<li><a href="https://stefanorodighiero.net/blog/personalized-embark-actions.html">Personalized embark actions</a> (<a href="https://mastodon.social/@eslr/117268821165139636">@eslr</a>, <a href="https://irreal.org/blog/?p=14112">Irreal</a>)</li>
<li><a href="https://www.youtube.com/watch?v=OSAYCVmJ12I">Emacs Meow Motions</a> (15:44)</li>
<li><a href="https://www.youtube.com/watch?v=5abGoq6Zi3I">Emacs Meow-mode</a> (01:40:58)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsDebuggingStandardBits">Notes on debugging standard and third-party Emacs code</a> (<a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsDebuggingStandardBits">@chris_siebenmann@robot.villas</a>)</li>
<li><a href="https://paste.sr.ht/~zackw/945a7d8263b7d2e681d935042a686321a02322d9">musing about the difficulty of doing one-off scripted edits in emacs lisp — paste.sr.ht</a> (<a href="https://masto.hackers.town/@zwol/117241809283394751">@zwol@masto.hackers.town</a>)</li>
<li><a href="https://mastodon.xyz/@beetle_b/117247435226635160">TIL with-demoted-errors (@beetle_b@mastodon.xyz)</a></li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://github.com/djr7C4/multi-buf">Announcing multi-buf: a generalized buffer multiplexer for shells and other buffers</a> (<a href="https://www.reddit.com/r/emacs/comments/1wc2d3v/announcing_multibuf_a_generalized_buffer/">Reddit</a>)</li>
<li><a href="https://github.com/MArpogaus/modern-tab">New Package: `modern-tab`</a> (<a href="https://www.reddit.com/r/emacs/comments/1w9nahs/new_package_moderntab/">Reddit</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://irreal.org/blog/?p=14068">Irreal: Jinx Update Number …</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://outputerror.com/posts/prepping-courses-with-org-mode/">Un-Learning the LMS: Prepping Courses with Org Mode - Output Error</a> (<a href="https://social.lol/@swrogers/117255362358214177">@swrogers@social.lol</a>)</li>
<li><a href="https://github.com/SenkiReign/org-grid">org-grid</a> (<a href="https://www.reddit.com/r/emacs/comments/1wcniwk/orggrid/">Reddit</a>)</li>
<li><a href="https://github.com/Gleek/org-timegrid/blob/main/ANDROID.org">org-timegrid now works on Android Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1wb79xd/orgtimegrid_now_works_on_android_emacs/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=fYVm9myTt5E">my dream setup (bonus: it’s free)</a> (18:33) - Org</li>
<li><a href="https://silentarchitect.org/articles/2026/09/whisper-engine-2-0.html">[New Release] Whisper Engine v2.0.0 - Org static site generator</a> (<a href="https://mastodon.social/@silentarchitect/117246845787011290">@silentarchitect</a>)</li>
<li><a href="https://github.com/pjones/org-clock-dbus">pjones/org-clock-dbus: Monitor org-clock from outside Emacs · GitHub</a> (<a href="https://hostux.social/@devalot/117268955061397864">@devalot@hostux.social</a>)</li>
<li><a href="https://list.orgmode.org/87o6e2khh0.fsf@localhost/T/#u">[notes] #33 bbb:OrgMeetup on Wed, August 12, 19:00 UTC+3</a> (<a href="https://fosstodon.org/@yantar92/117258721313848858">@yantar92@fosstodon.org</a>)</li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://www.jamescherti.com/emacs-consult-speed-async-searche-grep-ripgrep-fd-find/">Why Emacs Consult async searches feel slow and how to speed them up? (consult-fd, consult-find, consult-grep, consult-ripgrep&hellip;)</a> (<a href="https://www.reddit.com/r/emacs/comments/1wau1cz/why_emacs_consult_async_searches_feel_slow_and/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=49629865#49634164">HN</a>, <a href="https://lobste.rs/s/ffvipw/why_emacs_consult_async_searches_feel">lobste.rs</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://heiwiper.com/posts/magit-stage-and-commit/">Staging and Comitting using Magit</a> (<a href="https://www.youtube.com/watch?v=muVGcc8R39U">YouTube</a> 12:14, <a href="https://www.reddit.com/r/emacs/comments/1waijar/staging_and_comitting_using_magit/">Reddit</a>)</li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20260907140012-emacs&#45;&#45;emacs-31-native-git-worktrees-vs-my-vc-setup/">James Dyer: Emacs 31 Does Git Worktrees Natively: How My vc Setup Compares</a></li>
<li><a href="https://github.com/benleis1/emacs-init/blob/83db0d7849e781d82263ed04d441ded9e591c907/init.el#L1439">Further progress configuring java + eglot + dape</a> (<a href="https://www.reddit.com/r/emacs/comments/1wfd2yv/further_progress_configuring_java_eglot_dape/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=T5yMmzwgN8Q">Eglot DAPE debugging setup for java (jdtls) in emacs</a> (05:39)</li>
<li><a href="https://codeberg.org/jjba23/maak.el">maak.el: Lisp machine command runner, infinitely extensible, integrating nicely with Emacs, for Lisp power on your projects and automation at your fingertips</a> (<a href="https://www.reddit.com/r/emacs/comments/1waj79o/maakel_lisp_machine_command_runner_infinitely/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=49607858">HN</a>)</li>
<li><a href="https://lambdafoo.com/posts/2026-09-14-more-trees-more-neocaml.html">More tree-sitter, more neocaml, more elisp · Perpetually Curious</a> (<a href="https://hachyderm.io/@tsmc/117266592975661357">@tsmc@hachyderm.io</a>)</li>
<li><a href="https://metaredux.com/posts/2026/09/10/clojurists-together-update-july-august-2026.html">Meta Redux: Clojurists Together Update: July and August 2026</a></li>
<li><a href="https://codeberg.org/martianh/fj.el">martianh/fj.el 0.39 - performance boost</a> (<a href="https://todon.nl/@mousebot/117236054632187569">@mousebot@todon.nl</a>)</li>
</ul></li>
<li>Doom Emacs:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=MV53Vkkewds">A Tour of Doom Emacs - Emacs Everywhere #1</a> (01:04:03)</li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://lars.ingebrigtsen.no/2026/09/14/emacs-movies-and-sqlite/">Lars Ingebrigtsen: Emacs, movies and SQLite</a></li>
<li><a href="https://youtu.be/Cs5T4rgbHtk">supersonic.el Music player v0.5.0 update</a> (<a href="https://www.youtube.com/watch?v=Cs5T4rgbHtk">YouTube</a> 00:37, <a href="https://www.reddit.com/r/emacs/comments/1wenqmh/supersonicel_music_player_v050_update/">Reddit</a>)</li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="https://github.com/Daskeladden/smear-cursor">smear-cursor: a cursor trail for Emacs 32</a> (<a href="https://www.reddit.com/r/emacs/comments/1wdqglu/smearcursor_a_cursor_trail_for_emacs_32/">Reddit</a>)</li>
<li><a href="https://github.com/vikram-mandyam/betweenle.el">betweenle.el: an Emacs version of Betweenle (alphabetical word guessing)</a> (<a href="https://www.reddit.com/r/emacs/comments/1wdk33z/betweenleel_an_emacs_version_of_betweenle/">Reddit</a>)</li>
</ul></li>
<li>LLMs:
<ul class="org-ul">
<li><a href="https://github.com/wakamenod/emacs-claude-code">Another Claude Code integration for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1wdxfsc/another_claude_code_integration_for_emacs/">Reddit</a>)</li>
<li><a href="https://lars.ingebrigtsen.no/2026/09/10/some-llm-spell-check-experiences/">Lars Ingebrigtsen: Some LLM spell check experiences</a></li>
<li><a href="https://lars.ingebrigtsen.no/2026/09/11/spellchecking-total-eclipse-with-an-ai/">Lars Ingebrigtsen: Spellchecking Total Eclipse with an AI</a></li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1wacjm8/fortnightly_tips_tricks_and_questions_20260908/">Fortnightly Tips, Tricks, and Questions — 2026-09-08 / week 36</a></li>
<li><a href="https://indieweb.social/@xenodium/117235507871817070">Any Emacs users in Tokyo want to meet up? (@xenodium@indieweb.social)</a></li>
<li><a href="https://www.youtube.com/watch?v=RatVp4YLwiM">September 2026 Emacs Meetup recap.</a> (42:19, <a href="https://news.ycombinator.com/item?id=49604410">HN</a>)</li>
<li><a href="https://einar.codeberg.page/an-apology-to-david-wilson-and-protesilaos-stavrou.html">Einar Mostad: An apology to Protesilaos Stavrou and David Wilson</a> (<a href="https://protesilaos.com/codelog/2026-09-15-emacs-reply-einar-mostad/">Protesilaos</a>)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://mbork.pl/2026-09-12_Duplicating_lines_and_other_Emacs_miscellanea">Marcin Borkowski: Duplicating lines and other Emacs miscellanea</a></li>
<li><a href="https://ooblick.com/2026/09/customizing-pasted-strings-in-emacs/">yank-transform-functions (@arensb@ooblick.com)</a></li>
<li><a href="https://github.com/zkazure/visual-regexp-rx.el">visual-regexp-rx: write regexp with rx notation in visual-regexp</a> (<a href="https://www.reddit.com/r/emacs/comments/1wac34i/visualregexprx_write_regexp_with_rx_notation_in/">Reddit</a>)</li>
<li><a href="https://masutaka.net/en/2026-09-14-1/">Moving the Credentials I Kicked Out of init.el from Plaintext Files to Keychain | Masutaka's ChangeLog Memo</a> (<a href="https://mstdn.love/@masutaka/117269912433371037">@masutaka@mstdn.love</a>)</li>
<li><a href="https://www.jamescherti.com/emacs-display-line-numbers-mode-performance/">The Root Causes of Scrolling Lag in Emacs display-line-numbers-mode</a> (<a href="https://www.reddit.com/r/emacs/comments/1wefnt6/the_root_causes_of_scrolling_lag_in_emacs/">Reddit</a>, <a href="https://irreal.org/blog/?p=14079">Irreal</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1wf7bts/v31_for_windows_heavily_flagged_by_av/">v31 for Windows heavily flagged by AV</a></li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=5210b89cfad217e97fa57d93979ec6825dc617ab">Allow setting font-lock-keyword property using declare form</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=a8736d5f88882fd28e855aab35dcc288f73549d3">Improve where the replacement is previewed (bug#81583)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=92acd66831b31e551d0d408e28c23d45b77f9cdb">Use short symbols for query-replace-show-preview (bug#81583)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=e33b54d938668dfc1889127d7452524c92cbcd5d">Rename `outline-xref' command to `outline-find-headings'</a> (<a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=38a6fd7cea467525ca122eea9a63a39aaa30063e">correction: C-c @ M-o</a>)</li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/elfeed-protocol-freshrss">elfeed-protocol-freshrss</a>: FreshRSS protocol for elfeed (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/latex-to-svg-frontend">latex-to-svg-frontend</a>: Preview LaTeX math in markup buffers as SVG (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/nonogram">nonogram</a>: Play nonogram (picross) puzzles with SVG graphics (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/org-clock-dbus">org-clock-dbus</a>: Monitor org-clock from D-Bus (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/single-window">single-window</a>: Always open buffers in the current window (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-09">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!
</p>
<div><a href="https://sachachua.com/blog/2026/09/2026-09-14-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F09%2F2026-09-14-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Experimenting with Orukeet for speech recognition</title>
		<link>https://sachachua.com/blog/2026/09/experimenting-with-orukeet-for-speech-recognition/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sat, 12 Sep 2026 13:39:22 GMT</pubDate>
    <category>speech</category>
<category>emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/09/experimenting-with-orukeet-for-speech-recognition/</guid>
		<description><![CDATA[<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/Hl_0WrOyROs?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtu.be/Hl_0WrOyROs">Watch on YouTube</a></div>
<p></p>

<p>
This is a quick demonstration of using Orukeet as a speech recognition model inside Emacs. I'm recording this in real time on a Lenovo P52 laptop using only CPU. I can replay just one part of my recording. I can switch languages in the middle of recording too. Par exemple, maintenant je parle français. Seems promising.
</p>

<p>
Links/notes:
</p>

<ul class="org-ul">
<li><a href="https://huggingface.co/oruk/orukeet">oruk/orukeet · Hugging Face</a></li>
<li><a href="https://sachachua.com/blog/2026/09/experimenting-with-orukeet-for-speech-recognition/orukeet-server.py">file:///home/sacha/vendor/orukeet/orukeet-server.py</a> - I generated this with Google Gemini for a quick POC. It keeps the model in memory for slightly faster processing per segment.</li>
<li><a href="https://oruk.ai/guides/orukeet-local-transcription">Run Orukeet locally: Python speech recognition | oruk</a>
<ul class="org-ul">
<li><a href="https://oruk.ai/examples/orukeet-local.py">https://oruk.ai/examples/orukeet-local.py</a> - Python script you can run from the command line to transcribe files.</li>
</ul></li>
<li><a href="https://sachachua.com/blog/2026/09/experimenting-with-orukeet-for-speech-recognition/orukeet-local.py">file:///home/sacha/vendor/orukeet/orukeet-local.py</a></li>
<li><a href="https://github.com/sachac/whisper.el/">sachac/whisper.el</a> - my fork of natrys/whisper.el</li>
<li><a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-queue-multiple-transcriptions-with-whisper-el-speech-recognition">sacha-whisper-continue</a> - This lets me cue transcriptions of previous segments while continuing to record new ones. I like it because I tend to pause while thinking out loud. I can define the chunk that will get transcribed so that I don't end up with incomplete chunks or lost context.</li>
</ul>
<div><a href="https://sachachua.com/blog/2026/09/experimenting-with-orukeet-for-speech-recognition/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F09%2Fexperimenting-with-orukeet-for-speech-recognition%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item>
	</channel>
</rss>