281 lines
10 KiB
HTML
281 lines
10 KiB
HTML
<!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">·</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">"math.html"</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’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">©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>
|