Fix LaTeX manual build errors for LuaLaTeX.

Rename conflicting TikZ step style to drstep, add missing ch:firmware label, and use TeX Gyre Heros font fallback instead of Linux Biolinum O.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-07 10:19:15 +02:00
co-authored by Cursor
parent 176cdd9319
commit 0e7d8449a9
8 changed files with 36 additions and 26 deletions
+6 -6
View File
@@ -114,17 +114,17 @@ the DSP program and writes it into RAM after each reset.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\begin{tikzpicture}[ \begin{tikzpicture}[
step/.style={draw, rounded corners, minimum width=9.5cm, drstep/.style={draw, rounded corners, minimum width=9.5cm,
minimum height=0.9cm, align=center, font=\small}, minimum height=0.9cm, align=center, font=\small},
>={Latex}, node distance=3mm] >={Latex}, node distance=3mm]
\node[step, fill=black!6] (rst) {Assert RESET\# (10\,ms), release}; \node[drstep, fill=black!6] (rst) {Assert RESET\# (10\,ms), release};
\node[step, fill=black!6, below=of rst] (i2c) \node[drstep, fill=black!6, below=of rst] (i2c)
{Create I\textsuperscript{2}C master @ 100\,kHz, address 0x34}; {Create I\textsuperscript{2}C master @ 100\,kHz, address 0x34};
\node[step, fill=black!8, below=of i2c] (dl) \node[drstep, fill=black!8, below=of i2c] (dl)
{Replay \texttt{DspProgram} from flash or embedded export}; {Replay \texttt{DspProgram} from flash or embedded export};
\node[step, fill=black!6, below=of dl] (ready) \node[drstep, fill=black!6, below=of dl] (ready)
{\texttt{Adau1701Driver::isBooted()} = true}; {\texttt{Adau1701Driver::isBooted()} = true};
\node[step, fill=black!10, below=of ready] (prof) \node[drstep, fill=black!10, below=of ready] (prof)
{\texttt{AudioService::loadAndApply()} --- safeload user profile}; {\texttt{AudioService::loadAndApply()} --- safeload user profile};
\foreach \a/\b in {rst/i2c, i2c/dl, dl/ready, ready/prof} { \foreach \a/\b in {rst/i2c, i2c/dl, dl/ready, ready/prof} {
\draw[->] (\a) -- (\b); \draw[->] (\a) -- (\b);
+2 -2
View File
@@ -190,8 +190,8 @@ seek failure.
\begin{drcode}[JSON] \begin{drcode}[JSON]
{"direction":"up"} {"direction":"up"}
\end{drcode} \end{drcode}
Use \texttt{"down"} for downward seek. Omit the body or send \texttt{{}} Use \texttt{"down"} for downward seek. Omit the body or send an empty JSON
for upward seek (backward compatible). object (\texttt{\{\}}) for upward seek (backward compatible).
\end{drnote} \end{drnote}
\subsection{\texttt{GET /api/audio/profile}} \subsection{\texttt{GET /api/audio/profile}}
+6 -6
View File
@@ -90,17 +90,17 @@ Line-In path is ready before Wi-Fi starts.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\begin{tikzpicture}[ \begin{tikzpicture}[
step/.style={draw, rounded corners, minimum width=9.5cm, drstep/.style={draw, rounded corners, minimum width=9.5cm,
minimum height=0.9cm, align=center, font=\small}, minimum height=0.9cm, align=center, font=\small},
>={Latex}, node distance=3mm] >={Latex}, node distance=3mm]
\node[step, fill=black!6] (sys) {SYS\_CTL high, RESET\# pulse}; \node[drstep, fill=black!6] (sys) {SYS\_CTL high, RESET\# pulse};
\node[step, fill=black!6, below=of sys] (uart) \node[drstep, fill=black!6, below=of sys] (uart)
{Install UART2 @ 115200, RTS/CTS}; {Install UART2 @ 115200, RTS/CTS};
\node[step, fill=black!8, below=of uart] (at) \node[drstep, fill=black!8, below=of uart] (at)
{Send \texttt{AT} --- expect OK}; {Send \texttt{AT} --- expect OK};
\node[step, fill=black!10, below=of at] (aux) \node[drstep, fill=black!10, below=of at] (aux)
{Send \texttt{AT+AUXCFG=1} --- expect OK (Line-In)}; {Send \texttt{AT+AUXCFG=1} --- expect OK (Line-In)};
\node[step, fill=black!6, below=of aux] (done) \node[drstep, fill=black!6, below=of aux] (done)
{\texttt{Bt1035Driver::isBooted()} = true}; {\texttt{Bt1035Driver::isBooted()} = true};
\foreach \a/\b in {sys/uart, uart/at, at/aux, aux/done} { \foreach \a/\b in {sys/uart, uart/at, at/aux, aux/done} {
\draw[->] (\a) -- (\b); \draw[->] (\a) -- (\b);
+1
View File
@@ -12,6 +12,7 @@
% ============================================================ % ============================================================
\chapter{Firmware Architecture} \chapter{Firmware Architecture}
\label{ch:firmware}
\label{sec:firmware-architecture} \label{sec:firmware-architecture}
The DigiRadio firmware runs on the ESP32-S3 and orchestrates three The DigiRadio firmware runs on the ESP32-S3 and orchestrates three
+1 -1
View File
@@ -4,7 +4,7 @@
DigiRadio is an open-source, high-fidelity digital radio receiver. It DigiRadio is an open-source, high-fidelity digital radio receiver. It
receives DAB+ and FM broadcasts, processes the audio through a dedicated receives DAB+ and FM broadcasts, processes the audio through a dedicated
signal processor, and streams the result over Bluetooth using a signal processor, and streams the result over Bluetooth using a
high-resolution codec. Firmware~0.8.3 on \texttt{main} provides encrypted high-resolution codec. Firmware~0.8.4 on \texttt{main} provides encrypted
storage, a tabbed configuration web UI, and the full REST API documented storage, a tabbed configuration web UI, and the full REST API documented
in Chapter~\ref{ch:api}. The whole project --- hardware and firmware --- is in Chapter~\ref{ch:api}. The whole project --- hardware and firmware --- is
released as open source for the maker and audio community to study, released as open source for the maker and audio community to study,
+9 -9
View File
@@ -114,21 +114,21 @@ the \texttt{FLASH\_LOAD} path used by boards with a pre-programmed SST25V.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\begin{tikzpicture}[ \begin{tikzpicture}[
step/.style={draw, rounded corners, minimum width=9cm, drstep/.style={draw, rounded corners, minimum width=9cm,
minimum height=0.9cm, align=center, font=\small}, minimum height=0.9cm, align=center, font=\small},
>={Latex}, node distance=3mm] >={Latex}, node distance=3mm]
\node[step, fill=black!6] (rst) {Hardware reset (RST\#)}; \node[drstep, fill=black!6] (rst) {Hardware reset (RST\#)};
\node[step, fill=black!6, below=of rst] (pu) \node[drstep, fill=black!6, below=of rst] (pu)
{POWER\_UP (crystal / clock args)}; {POWER\_UP (crystal / clock args)};
\node[step, fill=black!6, below=of pu] (li1) {LOAD\_INIT}; \node[drstep, fill=black!6, below=of pu] (li1) {LOAD\_INIT};
\node[step, fill=black!8, below=of li1] (patch) \node[drstep, fill=black!8, below=of li1] (patch)
{HOST\_LOAD \texttt{rom\_patch\_016.bin} (124 B chunks)}; {HOST\_LOAD \texttt{rom\_patch\_016.bin} (124 B chunks)};
\node[step, fill=black!6, below=of patch] (li2) {LOAD\_INIT}; \node[drstep, fill=black!6, below=of patch] (li2) {LOAD\_INIT};
\node[step, fill=black!8, below=of li2] (img) \node[drstep, fill=black!8, below=of li2] (img)
{HOST\_LOAD \texttt{dab\_} or \texttt{fm\_firmware.bin} {HOST\_LOAD \texttt{dab\_} or \texttt{fm\_firmware.bin}
(2044 B chunks)}; (2044 B chunks)};
\node[step, fill=black!6, below=of img] (boot) {BOOT}; \node[drstep, fill=black!6, below=of img] (boot) {BOOT};
\node[step, fill=black!10, below=of boot] (cfg) \node[drstep, fill=black!10, below=of boot] (cfg)
{Properties: I\textsuperscript{2}S 44.1 kHz, RDS/DAB FE, volume}; {Properties: I\textsuperscript{2}S 44.1 kHz, RDS/DAB FE, volume};
\foreach \a/\b in {rst/pu, pu/li1, li1/patch, patch/li2, li2/img, \foreach \a/\b in {rst/pu, pu/li1, li1/patch, patch/li2, li2/img,
img/boot, boot/cfg} { img/boot, boot/cfg} {
+11 -2
View File
@@ -35,11 +35,20 @@
\renewcommand{\familydefault}{\sfdefault} % Biolinum as body (Optima-like) \renewcommand{\familydefault}{\sfdefault} % Biolinum as body (Optima-like)
\else \else
\RequirePackage{fontspec} \RequirePackage{fontspec}
% Real Optima on macOS; change the name if yours differs. \defaultfontfeatures{Ligatures=TeX}
% Real Optima on macOS; TeX Gyre Heros ships with TeX Live as fallback.
\IfFontExistsTF{Optima}{% \IfFontExistsTF{Optima}{%
\setmainfont{Optima}% \setmainfont{Optima}%
}{% }{%
\setmainfont{Linux Biolinum O}% fallback if Optima not installed \IfFontExistsTF{TeX Gyre Heros}{%
\setmainfont{TeX Gyre Heros}%
}{%
\IfFontExistsTF{TeXGyreHeros}{%
\setmainfont{TeXGyreHeros}%
}{%
\setmainfont{Latin Modern Sans}%
}%
}%
} }
\fi \fi
Binary file not shown.