pages/post/math-typesetting/index.html
git_repo_user 8b4df7e93f first comment
2025-08-30 05:10:02 +00:00

281 lines
10 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html
class="not-ready lg:text-base"
style="--bg:"
lang="en"
dir="ltr"
><head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<title>Math Typesetting - </title>
<meta name="theme-color" />
<meta name="description" content="Mathematical notation in a Hugo project can be enabled by using third party JavaScript libraries." />
<meta name="author" content="lee.so" /><link rel="preload stylesheet" as="style" href="/main.min.css" />
<link rel="preload" as="image" href="/theme.png" />
<link rel="preload" as="image" href="/github.svg" /><link rel="preload" as="image" href="/mastodon.svg" />
<script
defer
src="/highlight.min.js"
onload="hljs.initHighlightingOnLoad();"
></script><link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/katex.min.css"
integrity="sha384-3UiQGuEI4TTMaFmGIZumfRPtfKQ3trwQE2JgosJxCnGmQpL/lJdjpcHkaaFwHlcI"
crossorigin="anonymous"
/>
<script
defer
src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/katex.min.js"
integrity="sha384-G0zcxDFp5LWZtDuRMnBkk3EphCK1lhEf4UEyEM693ka574TZGwo4IWwS6QLzM/2t"
crossorigin="anonymous"
></script>
<script
defer
src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/auto-render.min.js"
integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05"
crossorigin="anonymous"
></script><script>
document.addEventListener('DOMContentLoaded', () =>
renderMathInElement(document.body, {
delimiters: [
{ left: '$$', right: '$$', display: true },
{ left: '$', right: '$', display: false },
],
throwOnError: false,
}),
);
</script>
<link
rel="icon"
href="/favicon.ico"
/>
<link
rel="apple-touch-icon"
href="/apple-touch-icon.png"
/>
<meta name="generator" content="Hugo 0.149.0">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-ZZYG7KM2RT"></script>
<script>
var doNotTrack = false;
if ( false ) {
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
}
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-ZZYG7KM2RT');
}
</script>
<meta itemprop="name" content="Math Typesetting">
<meta itemprop="description" content="A brief guide to setup KaTeX">
<meta itemprop="datePublished" content="2019-03-08T00:00:00+00:00">
<meta itemprop="dateModified" content="2019-03-08T00:00:00+00:00">
<meta itemprop="wordCount" content="114"><meta property="og:url" content="/post/math-typesetting/">
<meta property="og:title" content="Math Typesetting">
<meta property="og:description" content="A brief guide to setup KaTeX">
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="post">
<meta property="article:published_time" content="2019-03-08T00:00:00+00:00">
<meta property="article:modified_time" content="2019-03-08T00:00:00+00:00">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Math Typesetting">
<meta name="twitter:description" content="A brief guide to setup KaTeX">
<link rel="canonical" href="/post/math-typesetting/" />
</head>
<body
class="bg-(--bg) text-black antialiased duration-200 ease-out [-webkit-tap-highlight-color:transparent] dark:text-white"
><header
class="mx-auto flex h-[4.5rem] max-w-(--w) px-8 whitespace-nowrap lg:justify-center"
>
<div class="relative z-50 flex items-center ltr:mr-auto rtl:ml-auto">
<a
class="-translate-y-[1px] text-2xl font-medium"
href="/"
></a
>
<div
class="btn-dark text-[0px] ltr:ml-4 rtl:mr-4 h-6 w-6 shrink-0 cursor-pointer [background:url(./theme.png)_left_center/_auto_theme('spacing.6')_no-repeat] [transition:_background-position_0.4s_steps(5)] dark:[background-position:right]"
role="button"
aria-label="Dark"
></div>
</div>
<div
class="btn-menu relative z-50 flex h-[4.5rem] w-[5rem] shrink-0 cursor-pointer flex-col items-center justify-center gap-2.5 lg:hidden ltr:-mr-8 rtl:-ml-8"
role="button"
aria-label="Menu"
></div>
<script>
const htmlClass = document.documentElement.classList;
setTimeout(() => {
htmlClass.remove('not-ready');
}, 10);
const btnMenu = document.querySelector('.btn-menu');
btnMenu.addEventListener('click', () => {
htmlClass.toggle('open');
});
const metaTheme = document.querySelector('meta[name="theme-color"]');
const lightBg = ''.replace(/"/g, '');
const setDark = (isDark) => {
metaTheme.setAttribute('content', isDark ? '#000' : lightBg);
htmlClass[isDark ? 'add' : 'remove']('dark');
localStorage.setItem('dark', isDark);
};
const darkScheme = window.matchMedia('(prefers-color-scheme: dark)');
if (htmlClass.contains('dark')) {
setDark(true);
} else {
const darkVal = localStorage.getItem('dark');
setDark(darkVal ? darkVal === 'true' : darkScheme.matches);
}
darkScheme.addEventListener('change', (event) => {
setDark(event.matches);
});
const btnDark = document.querySelector('.btn-dark');
btnDark.addEventListener('click', () => {
setDark(localStorage.getItem('dark') !== 'true');
});
</script>
<div
class="nav-wrapper fixed inset-x-0 top-full z-40 flex h-full flex-col justify-center bg-(--bg) pb-16 duration-200 select-none lg:static lg:h-auto lg:flex-row lg:bg-transparent! lg:pb-0 lg:transition-none"
><nav
class="lg:ml-12 lg:flex lg:flex-row lg:items-center lg:space-x-10 rtl:space-x-reverse"
><a
class="block text-center text-xl leading-[5rem] lg:text-base lg:font-normal"
href="/pages/"
>Pages</a
><a
class="block text-center text-xl leading-[5rem] lg:text-base lg:font-normal"
href="/blogs/"
>Blogs</a
><a
class="block text-center text-xl leading-[5rem] lg:text-base lg:font-normal"
href="/"
>Home</a
><a
class="block text-center text-xl leading-[5rem] lg:text-base lg:font-normal"
href="https://mathdoggy.gitnet.page/"
>Mathrew Xian</a
></nav><nav
class="mt-12 flex justify-center space-x-10 lg:mt-0 lg:items-center ltr:lg:ml-14 rtl:space-x-reverse rtl:lg:mr-14 dark:invert"
>
<a
class="h-7 w-7 text-[0px] [background:var(--url)_center_center/cover_no-repeat] lg:h-6 lg:w-6"
style="--url: url(./github.svg)"
href="https://github.com/mathdoggy"
target="_blank"
rel="me"
>github</a>
<a
class="h-7 w-7 text-[0px] [background:var(--url)_center_center/cover_no-repeat] lg:h-6 lg:w-6"
style="--url: url(./mastodon.svg)"
href="@mstdn.plus@mathdoggy"
target="_blank"
rel="me"
>mastodon</a>
</nav>
</div>
</header>
<main
class="prose prose-neutral dark:prose-invert relative mx-auto min-h-[calc(100vh-9rem)] max-w-(--w) px-8 pt-14 pb-16"
><article>
<header class="mb-14">
<h1 class="my-0! pb-2.5">Math Typesetting</h1><div class="text-xs antialiased opacity-60"><time>Mar 8, 2019</time><span class="mx-1">&middot;</span>
<span>lee.so</span></div></header>
<section><p>Mathematical notation in a Hugo project can be enabled by using third party JavaScript libraries.</p>
<p>In this example we will be using <a href="https://katex.org/">KaTeX</a></p>
<ul>
<li>Create a partial under <code>/layouts/partials/math.html</code></li>
<li>Within this partial reference the <a href="https://katex.org/docs/autorender.html">Auto-render Extension</a> or host these scripts locally.</li>
<li>Include the partial in your templates like so:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">{{</span> <span style="color:#66d9ef">if</span> or .Params.math .Site.Params.math <span style="color:#f92672">}}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">{{</span> partial <span style="color:#e6db74">&#34;math.html&#34;</span> . <span style="color:#f92672">}}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">{{</span> end <span style="color:#f92672">}}</span>
</span></span></code></pre></div><ul>
<li>To enable KaTeX globally set the parameter <code>math</code> to <code>true</code> in a project&rsquo;s configuration</li>
<li>To enable KaTeX on a per page basis include the parameter <code>math: true</code> in content files</li>
</ul>
<p><strong>Note:</strong> Use the online reference of <a href="https://katex.org/docs/supported.html">Supported TeX Functions</a></p>
<h3 id="examples">Examples</h3>
<p>Block math:</p>
<p>$$
\varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }
$$</p></section>
<nav
class="mt-24 flex overflow-hidden rounded-xl bg-black/[3%] text-lg leading-[1.2]! *:flex *:w-1/2 *:items-center *:p-5 *:font-medium *:no-underline dark:bg-white/[8%] [&>*:hover]:bg-black/[2%] dark:[&>*:hover]:bg-white/[3%]"
><a class="ltr:pr-3 rtl:pl-3" href="/post/rich-content/"
><span class="ltr:mr-1.5 rtl:ml-1.5"></span><span>Rich Content</span></a
><a
class="justify-end pl-3 ltr:ml-auto rtl:mr-auto"
href="/post/emoji-support/"
><span>Emoji Support</span><span class="ltr:ml-1.5 rtl:mr-1.5"></span></a
></nav></article></main><footer
class="mx-auto flex h-[4.5rem] max-w-(--w) items-center px-8 text-xs tracking-wider uppercase opacity-60"
>
<div class="mr-auto">&copy;2025
<a class="link" href="/"></a></div>
<a class="link mx-6" href="https://gohugo.io/" rel="noopener" target="_blank"
>powered by hugo</a
>
<a
class="link"
href="https://github.com/nanxiaobei/hugo-paper"
rel="noopener"
target="_blank"
>hugo-paper</a
>
</footer>
</body>
</html>