Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: cards template — CJK translation labels, OLPC table fix

- ac-paper-cards.sty: add \accjk font (Droid Sans Fallback) for CJK labels
- cards-convert.mjs: wrap zh/ja/ko translation labels with \accjk font
- cards-convert.mjs: use native script for Chinese (中文) and Japanese (日本語)
- plork.tex: fix OLPC table overflow — switch to p{} columns with \footnotesize

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+23 -18
+2
papers/ac-paper-cards.sty
··· 42 42 Path=../../system/public/type/webfonts/, 43 43 Extension=.ttf 44 44 ] 45 + % CJK font for translation labels on title page 46 + \newfontfamily\accjk{Droid Sans Fallback} 45 47 46 48 % === COLORS (AC palette) === 47 49 \RequirePackage{xcolor}
+8 -8
papers/arxiv-plork/plork-cards.tex
··· 88 88 \vspace{0.2em} 89 89 {\footnotesize\color{acgray} March 2026 · Revision 2}\par 90 90 \vspace{0.3em} 91 - {\footnotesize\color{acgray}\href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-da-cards.pdf}{Dansk} · \href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-es-cards.pdf}{Español} · \href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-zh-cards.pdf}{Chinese} · \href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-ja-cards.pdf}{Japanese}}\par 91 + {\footnotesize\color{acgray}\href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-da-cards.pdf}{Dansk} · \href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-es-cards.pdf}{Español} · \href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-zh-cards.pdf}{{\accjk 中文}} · \href{https://papers.aesthetic.computer/plorking-the-planet-26-arxiv-ja-cards.pdf}{{\accjk 日本語}}}\par 92 92 \end{center} 93 93 \vspace*{\fill} 94 94 ··· 485 485 \acos{} inverts every one of these failure modes: 486 486 487 487 \begin{table}[h] 488 - \small 488 + \footnotesize 489 489 \centering 490 - \begin{tabularx}{\columnwidth}{lXX} 490 + \begin{tabular}{p{0.22\linewidth}p{0.35\linewidth}p{0.35\linewidth}} 491 491 \toprule 492 - \textbf{OLPC Failure Mode} & \textbf{OLPC} & \textbf{AC OS} \\ 492 + \textbf{Failure Mode} & \textbf{OLPC} & \textbf{AC OS} \\ 493 493 \midrule 494 494 Hardware & Purpose-built XO (\$188) & Surplus laptops (\$50), already manufactured \\ 495 495 Form factor & Unfamiliar to users & Standard laptop, already known \\ 496 496 Repair & Proprietary parts & Commodity hardware, locally serviceable \\ 497 - Software & Sugar OS (novel, no ecosystem) & AC OS (purpose-built but self-updating) \\ 498 - Deployment & Government ministry coordination & One person with USB drives \\ 497 + Software & Sugar OS (no ecosystem) & AC OS (self-updating) \\ 498 + Deployment & Gov't ministry coordination & One person with USB drives \\ 499 499 Per-unit cost & \$188 + logistics & \$50 hardware + \$0 software \\ 500 - Scale achieved & 3M units over 10 years & 240M machines already exist \\ 500 + Scale & 3M units over 10 years & 240M machines already exist \\ 501 501 \bottomrule 502 - \end{tabularx} 502 + \end{tabular} 503 503 \caption{OLPC failure modes and AC OS counterparts.} 504 504 \label{tab:olpc} 505 505 \end{table}
+7 -7
papers/arxiv-plork/plork.tex
··· 582 582 \acos{} inverts every one of these failure modes: 583 583 584 584 \begin{table}[h] 585 - \small 585 + \footnotesize 586 586 \centering 587 - \begin{tabularx}{\columnwidth}{lXX} 587 + \begin{tabular}{p{0.22\linewidth}p{0.35\linewidth}p{0.35\linewidth}} 588 588 \toprule 589 - \textbf{OLPC Failure Mode} & \textbf{OLPC} & \textbf{AC OS} \\ 589 + \textbf{Failure Mode} & \textbf{OLPC} & \textbf{AC OS} \\ 590 590 \midrule 591 591 Hardware & Purpose-built XO (\$188) & Surplus laptops (\$50), already manufactured \\ 592 592 Form factor & Unfamiliar to users & Standard laptop, already known \\ 593 593 Repair & Proprietary parts & Commodity hardware, locally serviceable \\ 594 - Software & Sugar OS (novel, no ecosystem) & AC OS (purpose-built but self-updating) \\ 595 - Deployment & Government ministry coordination & One person with USB drives \\ 594 + Software & Sugar OS (no ecosystem) & AC OS (self-updating) \\ 595 + Deployment & Gov't ministry coordination & One person with USB drives \\ 596 596 Per-unit cost & \$188 + logistics & \$50 hardware + \$0 software \\ 597 - Scale achieved & 3M units over 10 years & 240M machines already exist \\ 597 + Scale & 3M units over 10 years & 240M machines already exist \\ 598 598 \bottomrule 599 - \end{tabularx} 599 + \end{tabular} 600 600 \caption{OLPC failure modes and AC OS counterparts.} 601 601 \label{tab:olpc} 602 602 \end{table}
+6 -3
papers/cards-convert.mjs
··· 27 27 "arxiv-notepat": { base: "notepat", title: "notepat{\\color{acpurple}.}{\\color{acpink}com}", siteName: "notepat-26-arxiv" }, 28 28 "arxiv-os": { base: "os", title: "AC Native OS '26", siteName: "ac-native-os-26-arxiv" }, 29 29 "arxiv-pieces": { base: "pieces", title: "Pieces Not Programs", siteName: "pieces-not-programs-26-arxiv" }, 30 - "arxiv-plork": { base: "plork", title: "PLOrk'ing the Planet", siteName: "plorking-the-planet-26-arxiv", translations: { da: "Dansk", es: "Español", zh: "Chinese", ja: "Japanese" } }, 30 + "arxiv-plork": { base: "plork", title: "PLOrk'ing the Planet", siteName: "plorking-the-planet-26-arxiv", translations: { da: "Dansk", es: "Español", zh: "中文", ja: "日本語" } }, 31 31 "arxiv-sustainability": { base: "sustainability", title: "Who Pays for Creative Tools?", siteName: "who-pays-for-creative-tools-26-arxiv" }, 32 32 "arxiv-whistlegraph": { base: "whistlegraph", title: "Whistlegraph", siteName: "whistlegraph-26-arxiv" }, 33 33 "arxiv-complex": { base: "complex", title: "Sucking on the Complex", siteName: "sucking-on-the-complex-26-arxiv" }, ··· 177 177 const subtitle = parsed.subtitle || ""; 178 178 179 179 // Translation links for title card 180 + const cjkLangs = new Set(["zh", "ja", "ko"]); 180 181 const translationLinks = info.translations 181 182 ? Object.entries(info.translations) 182 - .map(([code, label]) => 183 - `\\href{https://papers.aesthetic.computer/${info.siteName}-${code}-cards.pdf}{${label}}`) 183 + .map(([code, label]) => { 184 + const displayLabel = cjkLangs.has(code) ? `{\\accjk ${label}}` : label; 185 + return `\\href{https://papers.aesthetic.computer/${info.siteName}-${code}-cards.pdf}{${displayLabel}}`; 186 + }) 184 187 .join(" · ") 185 188 : ""; 186 189