<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Asger Sommer</title>
 <link href="https://asgersommer.com/atom.xml" rel="self"/>
 <link href="https://asgersommer.com"/>
 <updated>2026-03-24T06:37:16+00:00</updated>
 <id>https://asgersommer.com</id>
 <author>
   <name>Asger Sommer</name>
   <email></email>
 </author>

 
 <entry>
   <title>Automated zip archives on macOS</title>
   <link href="https://asgersommer.com/2026/02/28/archiving-git-repos-on-macos/"/>
   <updated>2026-02-28T00:00:00+00:00</updated>
   <id>https://asgersommer.com/2026/02/28/archiving-git-repos-on-macos</id>
   <content type="html">&lt;p&gt;I keep my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Git&lt;/code&gt; folder outside of synchronized file storage (e.g. Dropbox, iCloud Drive, &lt;a href=&quot;https://filen.io/r/8370aa48105fdfb4d60fa6fececbd914&quot;&gt;Filen&lt;/a&gt;, etc.).&lt;/p&gt;

&lt;p&gt;On the sync side, this is to avoid unnecessary syncing due to frequent file operations by git, code building, etc.&lt;/p&gt;

&lt;p&gt;Even more so, its also to avoid the synchronizer from messing with the state of the git and build folders.&lt;/p&gt;

&lt;p&gt;But, besides:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Normal syncing to the git repository.&lt;/li&gt;
  &lt;li&gt;Normal backups to external hard drives.&lt;/li&gt;
  &lt;li&gt;I’d still like it to be backed up on my synchronized file storage…&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;…so I’ve made a script to make it easy to zip the entire git folder into a synchronized folder, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;archiver.sh&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#!/bin/bash

set -euo pipefail

SRC=&quot;$HOME/&amp;lt;from&amp;gt;&quot;
DEST=&quot;$HOME/&amp;lt;to&amp;gt;&quot;

TIMESTAMP=&quot;$(/bin/date +&quot;%Y-%m-%d_%H-%M-%S&quot;)&quot;
ARCHIVE=&quot;$DEST/archive-$TIMESTAMP.zip&quot;

# Ensure destination exists
/bin/mkdir -p &quot;$DEST&quot;

# Create archive (contents of A, not the folder itself)
cd &quot;$SRC&quot;
/usr/bin/zip -r &quot;$ARCHIVE&quot; .

# Keep only newest 3 archives
cd &quot;$DEST&quot;

/bin/ls -t archive-*.zip 2&amp;gt;/dev/null \
| /usr/bin/tail -n +4 \
| while read -r old; do
    /bin/rm -f &quot;$old&quot;
done
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And a script to setup it up to run daily (on macOS):&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#!/bin/bash

set -euo pipefail

LABEL=&quot;com.user.archiver&quot;
PLIST=&quot;$HOME/Library/LaunchAgents/$LABEL.plist&quot;
SCRIPT_PATH=&quot;$(cd &quot;$(dirname &quot;$0&quot;)&quot; &amp;amp;&amp;amp; pwd)/archiver.sh&quot;

if [ ! -f &quot;$SCRIPT_PATH&quot; ]; then
    echo &quot;archiver.sh not found&quot;
    exit 1
fi

/bin/mkdir -p &quot;$HOME/Library/LaunchAgents&quot;

cat &amp;gt; &quot;$PLIST&quot; &amp;lt;&amp;lt;EOF
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot;
 &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&amp;gt;
&amp;lt;plist version=&quot;1.0&quot;&amp;gt;
&amp;lt;dict&amp;gt;

    &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;$LABEL&amp;lt;/string&amp;gt;

    &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
    &amp;lt;array&amp;gt;
        &amp;lt;string&amp;gt;$SCRIPT_PATH&amp;lt;/string&amp;gt;
    &amp;lt;/array&amp;gt;

    &amp;lt;key&amp;gt;StartCalendarInterval&amp;lt;/key&amp;gt;
    &amp;lt;dict&amp;gt;
        &amp;lt;key&amp;gt;Hour&amp;lt;/key&amp;gt;
        &amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;
        &amp;lt;key&amp;gt;Minute&amp;lt;/key&amp;gt;
        &amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
    &amp;lt;/dict&amp;gt;

    &amp;lt;key&amp;gt;StandardOutPath&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;/tmp/archiver.out&amp;lt;/string&amp;gt;

    &amp;lt;key&amp;gt;StandardErrorPath&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;/tmp/archiver.err&amp;lt;/string&amp;gt;

&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;
EOF

/bin/launchctl unload &quot;$PLIST&quot; 2&amp;gt;/dev/null || true
/bin/launchctl load &quot;$PLIST&quot;

echo &quot;Archiver installed&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Plus an uninstaller as well:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#!/bin/bash

set -euo pipefail

LABEL=&quot;com.user.archiver&quot;
PLIST=&quot;$HOME/Library/LaunchAgents/$LABEL.plist&quot;

/bin/launchctl unload &quot;$PLIST&quot; 2&amp;gt;/dev/null || true
/bin/rm -f &quot;$PLIST&quot;

echo &quot;Archiver removed&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;All the given &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;filename&amp;gt;.sh&lt;/code&gt; script files can be made executable with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chmod +x &amp;lt;filename&amp;gt;.sh&lt;/code&gt; statement per script, and afterwards run with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;./&amp;lt;filename&amp;gt;.sh&lt;/code&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Are software jobs on the rise again?</title>
   <link href="https://asgersommer.com/2026/02/27/are-software-jobs-going-up-again/"/>
   <updated>2026-02-27T00:00:00+00:00</updated>
   <id>https://asgersommer.com/2026/02/27/are-software-jobs-going-up-again</id>
   <content type="html">&lt;h4 id=&quot;numbers-go-up&quot;&gt;Numbers go up&lt;/h4&gt;
&lt;p&gt;Recent online discourse (and probably quite a bit of  financially invested marketing) has built up a substantial uncertainty and angst about the job market for software developers in the future.&lt;/p&gt;

&lt;p&gt;However, looking at &lt;a href=&quot;https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE&quot;&gt;U.S. job posting data for software developers&lt;/a&gt;, we can actually see a recent spike in the job market data, looking at the past 12 months:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/jobs_1_software_12months.png&quot; alt=&quot;U.S. software developer job postings in the past 12 months, going slightly down and then up sharply&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Of course, one can debate whether &lt;em&gt;job postings&lt;/em&gt; say anything at all about the health of a &lt;em&gt;job market&lt;/em&gt;, but lets assume that it is at least a useful proxy.&lt;/p&gt;

&lt;h4 id=&quot;zooming-out-in-time&quot;&gt;Zooming out in time&lt;/h4&gt;
&lt;p&gt;Zooming out beyond just the recent months, the recent uptick pales in comparison to a much larger market mover, the pandemic:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/jobs_2_software_only.png&quot; alt=&quot;U.S. software developer job postings since 2021, going up around the COVID-19 pandemic, and then down afterwards.&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;zooming-out-in-scope&quot;&gt;Zooming out in scope&lt;/h4&gt;
&lt;p&gt;However, what about &lt;a href=&quot;https://fred.stlouisfed.org/series/IHLIDXUS&quot;&gt;the job market in its entirety&lt;/a&gt;? Maybe all jobs are just ebbing and flowing together? Well, yes, somewhat overall… but software jobs have been uniquely &lt;em&gt;sensitive&lt;/em&gt; to the pandemic:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/jobs_3_raw.png&quot; alt=&quot;...&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Of course, a lot of what happened afterwards was likely just a counter-reaction to overhiring.&lt;/p&gt;

&lt;h4 id=&quot;normalizing-it-all&quot;&gt;Normalizing it all&lt;/h4&gt;
&lt;p&gt;We can focus further on what movements were unique to the software job market, relative to the rest of the job market, by normalizing the data:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/jobs_4_normalized.png&quot; alt=&quot;...&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;going-back-again&quot;&gt;Going back again&lt;/h4&gt;
&lt;p&gt;And similarly, we can do the same for the past 12 months:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/jobs_5_normalized_12months.png&quot; alt=&quot;...&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now… 5-6 months isn’t much in the grand scheme of things. But I’ll propose a couple of possible hypotheses:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;AI is making software development cheaper and more accessible, which is counter-intuitively causing an increase in the total demand for software development. (See &lt;a href=&quot;https://en.wikipedia.org/wiki/Jevons_paradox&quot;&gt;Jevon’s Paradox&lt;/a&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;AI is erroding &lt;em&gt;other&lt;/em&gt; job submarkets faster than that it is erroding that of software developers, and the rise we are observing is actually due to some other factor entirely.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What we are actually seeing is an increase in AI-generated software job postings… somehow directed at hiring software developers?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;This is just a short-term noise in the data that means nothing.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;
</content>
 </entry>
 
 <entry>
   <title>Using Mistral AI in Xcode</title>
   <link href="https://asgersommer.com/2026/02/04/using-mistral-ai-in-xcode/"/>
   <updated>2026-02-04T00:00:00+00:00</updated>
   <id>https://asgersommer.com/2026/02/04/using-mistral-ai-in-xcode</id>
   <content type="html">&lt;ol&gt;
  &lt;li&gt;Create a Mistral AI API key in the &lt;a href=&quot;https://console.mistral.ai/home?workspace_dialog=apiKeys&quot;&gt;Workspace API keys settings&lt;/a&gt; (not in the &lt;a href=&quot;https://console.mistral.ai/codestral&quot;&gt;Codestral page&lt;/a&gt;, as those API keys are not the same)&lt;/li&gt;
  &lt;li&gt;Open Xcode, then go to Settings &amp;gt; Intelligence &amp;gt; “Add a Model Provider”&lt;/li&gt;
  &lt;li&gt;Use the following Model Provider configuration:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;API key: &amp;lt;the API key from above&amp;gt;
API key header: &amp;lt;empty&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Then select a model, e.g. codestral or devstral.&lt;/li&gt;
&lt;/ol&gt;
</content>
 </entry>
 
 <entry>
   <title>Using Mistral AI in VS Code</title>
   <link href="https://asgersommer.com/2026/01/31/using-mistral-ai-in-vs-code/"/>
   <updated>2026-01-31T00:00:00+00:00</updated>
   <id>https://asgersommer.com/2026/01/31/using-mistral-ai-in-vs-code</id>
   <content type="html">&lt;ol&gt;
  &lt;li&gt;First install the &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev&quot;&gt;CLine Extension&lt;/a&gt; in VS Code.&lt;/li&gt;
  &lt;li&gt;Create a Mistral AI API key in the &lt;a href=&quot;https://console.mistral.ai/home?workspace_dialog=apiKeys&quot;&gt;Workspace API keys settings&lt;/a&gt; (not in the &lt;a href=&quot;https://console.mistral.ai/codestral&quot;&gt;Codestral page&lt;/a&gt;, as those API keys are not the same)&lt;/li&gt;
  &lt;li&gt;Use the following API configuration in the CLine Extension settings:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;API Provider: Mistral
Mistral API key: &amp;lt;the API key from above&amp;gt;
Model: devstral-2512 (for example)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Go.&lt;/li&gt;
&lt;/ol&gt;
</content>
 </entry>
 
 <entry>
   <title>Restarting the Blog</title>
   <link href="https://asgersommer.com/2025/03/22/restarting-the-blog/"/>
   <updated>2025-03-22T00:00:00+00:00</updated>
   <id>https://asgersommer.com/2025/03/22/restarting-the-blog</id>
   <content type="html">&lt;h4 id=&quot;picking-up-where-i-left-off&quot;&gt;Picking up where I left off…&lt;/h4&gt;
&lt;p&gt;So, I finally decided to dust off the blog again. Which of course meant updating the configuration and setup, breaking everything, fixing it, and adding some fresh new things.&lt;/p&gt;

&lt;p&gt;First, it meant setting up Jekyll again.&lt;/p&gt;

&lt;h4 id=&quot;setting-up-jekyll-again&quot;&gt;Setting up Jekyll again&lt;/h4&gt;
&lt;p&gt;Here, I wanted to try out how useful AI might be for the task. I decided to consult &lt;a href=&quot;https://chat.mistral.ai&quot;&gt;Le Chat&lt;/a&gt; on how to setup Jekyll on Windows. Easy enough:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Download and install Ruby from the &lt;a href=&quot;https://rubyinstaller.org/&quot;&gt;RubyInstaller for Windows&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here we reach obstacle &lt;strong&gt;#1&lt;/strong&gt;: Windows doesn’t know the installer, and nags about whether I want to even run such un-authenticated software. I proceed and succeed in installing jekyll:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install jekyll bundler&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since it’s been a lot of years since I last updated the blog, a lot of Jekyll versions have come and gone. I decided to use the fresh jekyll builder:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec jekyll build&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which generated a fresh &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt; that I could reference.&lt;/p&gt;

&lt;p&gt;That brings us to obstacle &lt;strong&gt;#2&lt;/strong&gt;: The latest Jekyll version, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4.4.1&lt;/code&gt;, has of course meant a lot of old plugins being deprecated in favor of new ones. E.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jekyll-paginate&lt;/code&gt; has been replaced by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jekyll-paginate-2&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;So, I proceeded to remove and replace plugins. After a few rounds of trial and error, I got the fresh config to build, and everything sort of worked locally.&lt;/p&gt;

&lt;p&gt;Everything seemed ready to go: just commit, push and refresh the website.&lt;/p&gt;

&lt;p&gt;Alas, everything was a bit off, various pages went 404 instead of displaying like they did locally. Another obstacle has arrived (&lt;strong&gt;#3&lt;/strong&gt;): &lt;a href=&quot;https://pages.github.com/versions/&quot;&gt;GitHub Pages&lt;/a&gt; doesn’t support the latest Jekyll version: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4.4.1&lt;/code&gt;, but only &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;3.10.0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The solution then, it’s to actually run Jekyll via a GitHub action, whereby the html gets generated on GitHub and then published. Jekyll has a &lt;a href=&quot;https://jekyllrb.com/docs/continuous-integration/github-actions/&quot;&gt;guide for it here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Even that needs some adjustments, because a gemfile generated on Windows, of course has platform specific configurations, which doesn’t work on Linux (which GitHub actions runs on). The Ruby version in the default GitHub action for Jekyll was also too old.&lt;/p&gt;

&lt;p&gt;But finally, everything seems to just work now. I even added a &lt;a href=&quot;/tag/&quot;&gt;cool tag cloud&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Counting Units Directly in LaTeX</title>
   <link href="https://asgersommer.com/2017/12/05/counting-units-in-latex/"/>
   <updated>2017-12-05T00:00:00+00:00</updated>
   <id>https://asgersommer.com/2017/12/05/counting-units-in-latex</id>
   <content type="html">&lt;p&gt;Ever wondered how to deal with requests like these, when writing your assignments in LaTeX?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You have a maximum of two pages to do it. One page equals 2400 units (incl. letters, digits and spaces).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Like many others, I’ve been in that situation, and as far as I know there doesn’t exist a LaTeX package for inserting the unit count directly in the document. &lt;a href=&quot;http://app.uio.no/ifi/texcount/&quot;&gt;TeXcount&lt;/a&gt; does exist, but it will require you to manually determine and write the character count, and doesn’t count spaces as a part of the character count. So what to do?&lt;/p&gt;

&lt;p&gt;Got a computer running macOS or Linux with a LaTeX installation? Say no more, here’s what to do:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Make sure TeXcount works (i.e. does &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;texcount&lt;/code&gt; work in the command line?). If not, install it.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Insert the following code in your preamble&lt;/p&gt;

    &lt;div class=&quot;language-latex highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;% Run texcount to get word and character count&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;\immediate\write&lt;/span&gt;18&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;texcount text1.tex text2.tex -total -template=&quot;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;1&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&quot; -out=words.sum&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;\immediate\write&lt;/span&gt;18&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;texcount text1.tex text2.tex -total -template=&quot;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;1&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&quot; -char -out=chars.sum&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;% Run bash commands to get the sum (i.e. unit count)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;\immediate\write&lt;/span&gt;18&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;\unexpanded&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;paste -d+ words.sum chars.sum | bc &amp;gt; sum.sum&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;% Define macro \unitcount for including the unit count&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;\newcommand\unitcount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;\input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;sum.sum&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Change &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;text1.tex&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;text2.tex&lt;/code&gt; etc. to the relevant .tex file(s) you want to count units in.&lt;/li&gt;
  &lt;li&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\unitcount&lt;/code&gt; wherever you want it in your LaTeX document to get the unit count.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, here’s the caveat: it might slightly overestimate the character count. While TeXcount counts characters (abc etc.) and punctuation (,.), it doesn’t count spaces. So here I’m using the amount of words as a proxy for spaces. Also, it will require your LaTeX-editor to allow shell escaping.&lt;/p&gt;

&lt;p&gt;I’d like to one day make this work independently of the shell commands (which is why it doesn’t just run as one combined shell command), but alas – if it works, it works.&lt;/p&gt;
</content>
 </entry>
 

</feed>
