first commit

This commit is contained in:
2026-04-07 23:22:48 +08:00
commit 5e0c735ed3
29 changed files with 2207 additions and 0 deletions

130
assets/bib_style.csl Normal file
View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-US">
<!-- This style was edited with the Visual CSL Editor (http://editor.citationstyles.org/visualEditor/) -->
<info>
<title>Elsevier (numeric, with titles)</title>
<id>http://www.zotero.org/styles/elsevier-numeric-with-titles</id>
<link href="http://www.zotero.org/styles/elsevier-numeric-with-titles" rel="self"/>
<link href="http://www.zotero.org/styles/elsevier-without-titles" rel="template"/>
<link href="http://www.elsevier.com/journals/solid-state-electronics/0038-1101/guide-for-authors#68000" rel="documentation"/>
<author>
<name>Richard Karnesky</name>
<email>karnesky+zotero@gmail.com</email>
<uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri>
</author>
<contributor>
<name>Rintze Zelle</name>
<uri>http://twitter.com/rintzezelle</uri>
</contributor>
<category citation-format="numeric"/>
<category field="generic-base"/>
<summary>A style for many of Elsevier's journals that includes article titles in the reference list</summary>
<updated>2025-06-05T07:59:51+00:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<macro name="author">
<names variable="author">
<name initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
<label form="short" prefix=", "/>
<substitute>
<names variable="editor"/>
<names variable="translator"/>
</substitute>
</names>
</macro>
<macro name="editor">
<names variable="editor">
<name initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
<label form="short" prefix=" (" text-case="capitalize-first" suffix=".)" strip-periods="true"/>
</names>
</macro>
<macro name="year-date">
<choose>
<if variable="issued">
<date variable="issued">
<date-part name="year"/>
</date>
</if>
<else>
<text term="no date" form="short"/>
</else>
</choose>
</macro>
<macro name="publisher">
<text variable="publisher" suffix=", "/>
<text variable="publisher-place" suffix=", "/>
<text macro="year-date"/>
</macro>
<macro name="edition">
<choose>
<if is-numeric="edition">
<group delimiter=" ">
<number variable="edition" form="ordinal"/>
<text term="edition" form="short"/>
</group>
</if>
<else>
<text variable="edition"/>
</else>
</choose>
</macro>
<citation collapse="citation-number">
<sort>
<key variable="citation-number"/>
</sort>
<layout prefix="[" suffix="]" delimiter=",">
<text variable="citation-number"/>
</layout>
</citation>
<bibliography entry-spacing="0" second-field-align="flush" et-al-min="7" et-al-use-first="6">
<layout suffix=".">
<text variable="citation-number" prefix="[" suffix="]"/>
<text macro="author" prefix=" " suffix=", "/>
<choose>
<if type="bill book graphic legal_case legislation motion_picture report song" match="any">
<group delimiter=", ">
<text variable="title" font-style="normal" font-weight="normal"/>
<text macro="edition"/>
<text macro="publisher"/>
</group>
</if>
<else-if type="chapter paper-conference" match="any">
<text variable="title" suffix=", "/>
<text term="in" suffix=": "/>
<text variable="container-title" form="short" text-case="title" font-style="italic" suffix=", "/>
<text macro="edition" suffix=", "/>
<text macro="publisher"/>
<group delimiter=" ">
<label variable="page" form="short" prefix=": "/>
<text variable="page"/>
</group>
</else-if>
<else-if type="patent">
<group delimiter=", ">
<text variable="title"/>
<text variable="number"/>
<text macro="year-date"/>
</group>
</else-if>
<else-if type="thesis">
<group delimiter=", ">
<text variable="title"/>
<text variable="genre"/>
<text variable="publisher"/>
<text macro="year-date"/>
</group>
</else-if>
<else>
<group delimiter=" ">
<text variable="title" font-style="normal" font-weight="normal" suffix=","/>
<text variable="container-title" form="short" text-case="title" font-style="italic" suffix="."/>
<text variable="volume"/>
<text macro="year-date" prefix="(" suffix=")"/>
<text variable="page" form="short"/>
</group>
</else>
</choose>
<text variable="DOI" prefix=" "/>
</layout>
</bibliography>
</style>

View File

@@ -0,0 +1,100 @@
.theorem-environment {
font-style: italic;
margin-top: 1em;
}
.theorem-header {
font-weight: bold;
font-style: normal;
}
.theorem-header .index:before {
content: ' ';
}
.theorem-header .name:before {
content: ' (';
}
.theorem-header .name:after {
content: ')';
}
.theorem-header:after {
content: '.\2002\2002';
}
.theorem-header+p {
display: inline;
}
.Proof .type {
font-style: italic;
font-weight: normal;
}
.Proof {
font-style: normal;
position: relative;
}
.Proof:after {
content: '∎';
position: absolute;
right: 0px;
bottom: 0px;
}
.Proof span.theorem-header span.name {
font-weight: normal;
font-style: italic;
}
.Proof span.theorem-header span.name:before {
content: ' ';
}
.Proof span.theorem-header span.name:after {
content: ' ';
}
table.postindex {
width: 100%;
}
table.postindex cite {
font-style: normal;
}
table.postindex td.right {
text-align: right;
width: 11ex;
}
.header-section-number {
margin-right: 10px;
}
.header-section-number:after {
content: '.';
}
.csl-entry {
display: table;
width: 100%;
table-layout: auto;
}
.csl-left-margin {
display: table-cell;
padding-right: 0.5em;
white-space: nowrap;
width: 1px;
}
.csl-right-inline {
display: table-cell;
}
.csl-right-inline a{
word-break: break-all;
}

380
assets/css/default.css Normal file
View File

@@ -0,0 +1,380 @@
:root {
--color-text: black;
--color-tag1: gray;
--color-tag2: darkolivegreen;
--color-bg: white;
--color-notice: #fb4f4f;
}
html {
scrollbar-gutter: stable;
scroll-behavior: smooth;
font-size: 110%;
}
body {
font-family: 'Lato', -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
font-optical-sizing: auto;
font-weight: 400;
font-style: normal;
font-size: 1rem;
line-height: 140%;
color: var(--color-text);
background-color: var(--color-bg);
text-rendering: optimizeLegibility;
}
body a {
text-decoration: none;
}
body a:hover {
text-decoration: underline;
}
details {
padding-left: 1em;
border: 2px solid var(--color-text);
}
summary:hover {
cursor: pointer;
}
/*mathML*/
.htmlmathparagraph, mtext,math {
font-family: Lete Sans Math;
}
.math-container,
#math-container {
display: block;
overflow-x: auto;
overflow-y: hidden;
padding: .5em;
}
.equation {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
column-gap: 1em;
margin: .5em 0;
}
.equation .math-container {
min-width: 0;
}
.equation-number {
white-space: nowrap;
font-style: normal;
}
.text-space .langtag {
color: var(--color-tag1);
}
.sc {
font-variant-caps: small-caps;
}
a.url {
word-break: break-all;
}
html body div.text-space main ul.post-list {
list-style-type: none;
padding-left: 1em;
}
/* top bar */
header {
font-weight: 400;
font-family: "IosevkaC", sans-serif;
}
nav a {
display: inline-block;
text-decoration: none;
}
.uri {
word-wrap: break-word;
overflow-wrap: break-word;
word-break: break-all;
white-space: normal;
}
footer {
color: var(--color-text);
font-size: 0.8rem;
margin-top: 2em;
text-align: right;
padding-right: 1em;
}
.pagetitle {
font-size: 2rem;
font-weight: normal;
font-style: normal;
text-align: left;
line-height: 100%;
}
h1 {
margin-top: 1em;
font-size: 1.44rem;
font-weight: bold;
font-style: normal;
}
h2 {
margin-top: 1em;
font-size: 1.2rem;
font-weight: bold;
font-style: normal
}
h3 {
margin-top: 1em;
font-size: 1rem;
font-weight: bold;
font-style: normal
}
article .header {
font-size: 1rem;
font-style: normal;
color: var(--color-tag1);
text-align: left;
}
.info,.info a {
color: var(--color-tag2);
font-size: 1rem;
font-style: normal;
text-align: left;
}
.info a:visited {
color: var(--color-tag2);
}
section.body {
margin-top: 2rem;
}
.ascii-art {
font-family: monospace;
line-height: normal;
}
/* table. copied from https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/table */
table {
border-collapse: collapse;
border: 2px solid rgb(140 140 140);
font-size: 0.8rem;
letter-spacing: 1px;
}
caption {
caption-side: bottom;
padding: 10px;
font-weight: bold;
}
thead,
tfoot {
background-color: rgb(228 240 245);
}
th,
td {
border: 1px solid rgb(160 160 160);
padding: 8px 10px;
}
td:last-of-type {
text-align: center;
}
tbody > tr:nth-of-type(even) {
background-color: rgb(237 238 242);
}
tfoot th {
text-align: right;
}
tfoot td {
font-weight: bold;
}
figure {
display: flex;
flex-flow: column;
padding: 5px;
margin: auto;
max-width: 80%;
}
.centerimg img {
margin: 0 auto 0 auto;
display: block;
}
div.highlight,
pre code {
margin: auto;
padding: 10px;
overflow: auto;
display: block;
}
code {
font-family: "IosevkaC", monospace;
margin: 0 auto;
display: inline-block;
padding: 0px 2px;
border-radius: 2px;
font-variant-ligatures: none;
font-kerning: none;
text-rendering: optimizeSpeed;
}
.draft-notice {
color: var(--color-notice);
margin: 1em auto;
text-align: center
}
.subtitle {
text-align: left;
font-size: 1.2rem;
margin-top: 0
}
.gallery {
margin-top: 2em;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 12px;
}
.gallery img {
width: 100%;
max-width: 320px;
display: block;
}
/* phones -- no sidebar no sidenotes*/
@media (max-width: 768px) {
body {
/* width: 90%; */
margin: auto;
padding: 0 5%;
text-align: left;
max-width: 876px;
}
mjx-container[display="true"]
/*, .katex-display */ {
overflow-x: auto;
overflow-y: hidden;
}
/* .katex-display>.katex>.katex-html>.tag {
display: inline-block;
position: relative;
padding-left: 10pt;
} */
}
.toc {
display: none;
}
/* sidebar. no sidenotes */
@media (min-width: 769px) {
body {
max-width: 1350px;
display: -webkit-flex;
-webkit-flex-flow: row wrap;
display: -ms-flexbox;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
width: 95%;
padding-right: 5%;
margin: auto;
}
.toc {
margin-top: 5rem;
margin-left: 0;
margin-right: 0;
width: 33%;
display: inline-block;
}
div#contents ul,
div#contents-big ul {
margin-top: 0.5em;
margin-bottom: 0.5em;
padding-left: 1em;
line-height: 1.2;
list-style-type: decimal;
margin-left: 0
}
div#contents-big ul ul {
list-style-type: none;
}
div#contents-big li+li {
margin-top: 0.5em
}
div#contents-big {
font-size: 80%;
padding-top: 0;
padding-left: 1rem;
text-align: left;
max-width: 60%;
clear: both;
margin-right: 4em;
position: sticky;
top: 5rem;
left: 100%
}
div#contents-big .mini-header {
font-weight: bold;
margin: 0;
font-variant: small-caps;
}
.text-space {
display: inline-block;
width: 66%;
max-width: 800px;
}
}
/* sidebar+sidenotes */
@media (min-width: 1200px) {
body {
width: 75%;
padding-right: 25%;
}
}
@media print {
.no-print,
.no-print * {
display: none !important;
}
body {
margin: auto;
}
}

52
assets/css/fonts.css Normal file
View File

@@ -0,0 +1,52 @@
/* fonts */
@font-face {
font-family: "Lato";
src: url("/fonts/Lato-Regular.woff2") format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Lato";
src: url("/fonts/Lato-Bold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: "Lato";
src: url("/fonts/Lato-Italic.woff2") format("woff2");
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: "Lato";
src: url("/fonts/Lato-BoldItalic.woff2") format("woff2");
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: "Lete Sans Math";
src: url("/fonts/LeteSansMath.woff2") format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Lete Sans Math";
src: url("/fonts/LeteSansMath-Bold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: "IosevkaC";
src: url("/fonts/IosevkaCustom-Regular.woff2") format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "IosevkaC";
src: url("/fonts/IosevkaCustom-Bold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
}

35
assets/css/pygentize.css Normal file
View File

@@ -0,0 +1,35 @@
code.sourceCode
{
background: inherit
}
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
code span.al { color: #CB4B16; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #D33682; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #5F8700; font-weight: bold; } /* ControlFlow */
code span.ch { color: #16801a; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #93A1A1; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { background-color: #f8edff; } /* DataType */
code span.dv { color: #D33682; } /* DecVal */
code span.er { color: #D30102; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #D33682; } /* Float */
code span.fu { } /* Function */
code span.im { color: #D70000} /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { font-weight: bold; } /* Keyword */
code span.op { font-weight: bold; } /* Operator */
code span.ot { font-weight: bold; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #16801a; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */

179
assets/css/sidenotes.css Normal file
View File

@@ -0,0 +1,179 @@
/*
This file is copied from
https://github.com/slotThe/slotThe.github.io/blob/main/css/sidenotes.css
with minor modifications made by Yu Cong.
The original author is Tony Zorman.
Extracted from:
https://github.com/edwardtufte/tufte-css
and modified to fit my website's theme.
*/
body {
counter-reset: sidenote-counter;
}
.sidenote,
.marginnote,
.marginnote-left {
float: right;
clear: right;
margin-right: -45%;
width: 40%;
margin-top: 0.3rem;
margin-bottom: 0;
font-size: 0.8em;
line-height: 1.2;
vertical-align: baseline;
position: relative;
text-align: left;
}
@media (max-width: 1200px) {
.sidenote,
.marginnote,
.marginnote-left {
margin-right: -40%;
width: 33%;
}
}
.marginnote-left {
float: left;
clear: left;
margin-left: -32%;
width: 25%;
position: relative;
text-align: right;
}
/* The first condition is for the case of a left-aligned layout (on a
smaller screen), and the second condition for a more centered layout
on a larger screen. It's a bit awkward, sadly :/ */
@media (max-width: 1349px) or ((min-width: 1367px) and (max-width: 1620px)) {
.marginnote-left {
margin-left: -33%;
width: 30%;
}
}
.sidenote code {
font-size: 0.94em;
}
/* For some reason, although only `overflow-x` is set in `default.css`,
block code in side and marginnotes gets a vertical (!) scrollbar no
matter what; disable that.
*/
div .marginnote pre,
div .sidenote pre {
overflow-y: hidden;
}
.sidenote-number {
counter-increment: sidenote-counter;
color: var(--color-link);
}
.sidenote-number:after,
.sidenote:before {
position: relative;
vertical-align: baseline;
}
.sidenote-number:after {
content: counter(sidenote-counter);
font-size: 0.8rem;
top: -0.5rem;
}
/* Properly position siednote number and adjust position of sidenote
paragraphs:
https://github.com/edwardtufte/tufte-css/issues/93#issuecomment-670695382
*/
.sidenote::before {
content: counter(sidenote-counter) " ";
font-size: 0.8rem;
top: -0.55rem;
position: absolute;
right: calc(100% + 0.5em);
}
.sidenote p {
margin: 1em 0;
}
.sidenote p:first-child {
margin-top: 0;
}
.sidenote p:last-child {
margin-bottom: 0;
}
/* */
input.margin-toggle {
display: none;
}
label.sidenote-number {
display: inline-block;
max-height: 2rem; /* should be less than or equal to paragraph line-height */
}
label.margin-toggle:not(.sidenote-number) {
display: none;
}
.iframe-wrapper {
position: relative;
padding-bottom: 56.25%; /* 16:9 */
padding-top: 25px;
height: 0;
}
.iframe-wrapper iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
@media (max-width: 1200px) {
label.margin-toggle:not(.sidenote-number) {
display: inline;
}
.sidenote,
.marginnote,
.marginnote-left {
display: none;
}
/* Linkify sidenotes iff they are clickable */
.margin-toggle,
.sidenote-number:after {
color: var(--color-link);
text-decoration: none;
}
.margin-toggle:checked + .sidenote,
.margin-toggle:checked + .marginnote,
.margin-toggle:checked + .marginnote-left {
display: block;
float: left;
left: 1rem;
clear: both;
width: 95%;
margin: 1rem 2.5%;
position: relative;
text-align: left;
}
label {
cursor: pointer;
}
}

BIN
assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

22
assets/math-macros.tex Normal file
View File

@@ -0,0 +1,22 @@
\newcommand{\F}{\mathcal{F}}
\newcommand{\B}{\mathcal{B}}
\newcommand{\I}{\mathcal{I}}
\newcommand{\C}{\mathcal{C}}
\newcommand{\Hit}{\text{Hit}}
\newcommand{\HSGap}{\text{HSGap}}
\newcommand{\IntGap}{\text{IntGap}}
\newcommand{\OPTLP}{\text{OPTLP}}
\newcommand{\OPT}{\text{OPT}}
\newcommand{\DecRank}{\text{Rank-}k\text{-Reduction}}
\newcommand{\flats}{\operatorname{Flats}}
\newcommand{\cl}{\operatorname{cl}}
\newcommand{\gap}{\operatorname{gap}}
\newcommand{\igap}{\operatorname{igap}}
\newcommand{\cogirthratio}{\rho}
\newcommand{\cogirthratiowt}{\cogirthratio^{\mathrm{wt}}}
\newcommand{\strength}{\operatorname{strength}}
\newcommand{\argmin}{\operatorname{arg\,min}}
\newcommand{\argmax}{\operatorname{arg\,max}}
\newcommand{\del}{\setminus}
\newcommand{\con}{/}
\newcommand{\minor}{\times}

View File

@@ -0,0 +1,40 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="googlebot" content="noindex" />
<title>$title$</title>
<link rel="stylesheet" href="/css/fonts.css" />
<link rel="stylesheet" href="/css/default.css" />
<link rel="stylesheet" href="/css/pygentize.css" />
<link rel="stylesheet" href="/css/chao-theorems.css" />
<link rel="stylesheet" href="/css/sidenotes.css" />
</head>
<body>
<div class="toc">
<div id="contents-big">
<a href="#">
<p class="mini-header">Contents</p>
</a>
$toc$
</div>
</div>
<div class="text-space">
<header class="no-print">
<nav>
<a href="/">Home</a>
</nav>
</header>
<main role="main">
<h1 class="pagetitle">$title$</h1>
$body$
</main>
<footer></footer>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<ul class="post-list">
$for(posts)$
<li><a href="$url$">$title$</a></li>
$endfor$
</ul>

View File

@@ -0,0 +1,5 @@
<article>
<section class="body">
$body$
</section>
</article>