ASearchの挙動テストその2
データ
scrapbox.Project.pages
これも試してみよう
2022-07-17
19:48:36 検索文字列と検索結果との感触はだいたいわかった
せっかくなので、次はこのscriptのstyleを調節してみよう
入力補完っぽくする
code:script.ts
import { mount } from "./App.tsx";
mount();
code:sh
code:App.tsx
/// <reference no-default-lib="true" />
/// <reference lib="esnext" />
/// <reference lib="dom" />
/** @jsx h */
/** @jsxFrag Fragment */
import {
useCallback,
useMemo,
useState,
import { Asearch, MatchResult } from "../deno-asearch/mod.ts";
import { data } from "./data.ts";
import { getMaxDistance } from "./distance.ts";
export const mount = () => {
const app = document.createElement("div");
const shadowRoot = app.attachShadow({ mode: "open" });
document.body.append(app);
remove = () => app.remove();
render(<App />, shadowRoot);
};
let remove: () => void;
const App = () => {
const candidates = useMemo(
() => {
const match = Asearch( ${pattern} ).match;
const len = pattern.length;
if (len === 0) return [];
const maxDistance = getMaxDistancelen; const candidates = data.flatMap(
(candidate) => {
const result = match(candidate, maxDistance);
if (!result.found) return [];
return { candidate, distance: result.distance };
}
)
/*const candidates = scrapbox.Project.pages.flatMap(
(page) => {
const result = match(page.title, maxDistance);
if (!result.found) return [];
return { candidate: page.title, distance: result.distance, updated: page.updated, };
}
)*/
// 1. 編集距離 2. 文字列超 3. 辞書順序 が小さい順に並び替える
.sort((a, b) => {
const diff = a.distance - b.distance;
if (diff !== 0) return diff;
//const time = b.updated - a.updated;
//if (time !== 0) return time;
const lenDiff = a.candidate.length - b.candidate.length;
if (lenDiff !== 0) return lenDiff;
return a.candidate.localeCompare(b.candidate);
});
return candidates;
},
);
const handlePattern = useCallback(
(e: h.JSX.TargetedEvent<HTMLInputElement>) =>
setPattern(e.currentTarget.value.trim()),
[],
);
return (
<>
<style>
{`
:host {
position: fixed;
top: 60px;
left: 50%;
transform: translate(-50%, 0);
padding: 5px;
border: 1px solid lime;
border-radius: 5px;
font-size: 14px;
background-color: var(--page-bg);
color: var(--page-text-color);
}
input {
min-width: 40%;
}
button {
position: absolute;
top: 0px;
right: 0px;
}
`}
</style>
<button onClick={remove}>x</button>
<p>
<label>
pattern: <input type="text" value={pattern} onInput={handlePattern} />
</label>
</p>
<p>
{candidates.length > 0 ? Matched ${candidates.length} words : "No matched"}
<br />
<ul>
{candidates.map(({ candidate }) => (<li>{candidate}</li>))}
</ul>
</p>
</>
);
};
入力文字列から最大編集距離を求める
code:distance.ts
export const getMaxDistance = [
0, // 空文字のとき
0, 0,
1, 1,
2, 2, 2, 2,
3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
];
code:data.ts
export const data: string[] = [
"!",
"\\!",
"#",
"\\#",
"%",
"\\%",
"&",
"\\&",
"'",
"\\'",
"(",
")",
"\\(…\\)",
"\\",
"\\\"",
"\\$",
"\\,",
"\\.",
"\\:",
"\\;",
"_",
"\\_",
"\\`",
"<",
"\\=",
">",
"\\>",
"[",
"]",
"{",
"}",
"\\{",
"\\}",
"|",
"\\|",
"~",
"\\~",
"\\\\",
"^",
"\\^",
"\\AA",
"\\aa",
"\\above",
"\\abovewithdelims",
"\\acute",
"\\AE",
"\\ae",
"\\alef",
"\\alefsym",
"\\aleph",
"{align}",
"{align*}",
"{aligned}",
"{alignat}",
"{alignat*}",
"{alignedat}",
"\\allowbreak",
"\\Alpha",
"\\alpha",
"\\amalg",
"\\And",
"\\and",
"\\ang",
"\\angl",
"\\angln",
"\\angle",
"\\approx",
"\\approxeq",
"\\approxcolon",
"\\approxcoloncolon",
"\\arccos",
"\\arcctg",
"\\arcsin",
"\\arctan",
"\\arctg",
"\\arg",
"\\argmax",
"\\argmin",
"{array}",
"\\array",
"\\arraystretch",
"\\Arrowvert",
"\\arrowvert",
"\\ast",
"\\asymp",
"\\atop",
"\\atopwithdelims",
"\\backepsilon",
"\\backprime",
"\\backsim",
"\\backsimeq",
"\\backslash",
"\\bar",
"\\barwedge",
"\\Bbb",
"\\Bbbk",
"\\bbox",
"\\bcancel",
"\\because",
"\\begin",
"\\begingroup",
"\\Beta",
"\\beta",
"\\beth",
"\\between",
"\\bf",
"\\bfseries",
"\\big",
"\\Big",
"\\bigcap",
"\\bigcirc",
"\\bigcup",
"\\bigg",
"\\Bigg",
"\\biggl",
"\\Biggl",
"\\biggm",
"\\Biggm",
"\\biggr",
"\\Biggr",
"\\bigl",
"\\Bigl",
"\\bigm",
"\\Bigm",
"\\bigodot",
"\\bigominus",
"\\bigoplus",
"\\bigoslash",
"\\bigotimes",
"\\bigr",
"\\Bigr",
"\\bigsqcap",
"\\bigsqcup",
"\\bigstar",
"\\bigtriangledown",
"\\bigtriangleup",
"\\biguplus",
"\\bigvee",
"\\bigwedge",
"\\binom",
"\\blacklozenge",
"\\blacksquare",
"\\blacktriangle",
"\\blacktriangledown",
"\\blacktriangleleft",
"\\blacktriangleright",
"\\bm",
"{Bmatrix}",
"{Bmatrix*}",
"{bmatrix}",
"{bmatrix*}",
"\\bmod",
"\\bold",
"\\boldsymbol",
"\\bot",
"\\bowtie",
"\\Box",
"\\boxdot",
"\\boxed",
"\\boxminus",
"\\boxplus",
"\\boxtimes",
"\\Bra",
"\\bra",
"\\braket",
"\\Braket",
"\\brace",
"\\bracevert",
"\\brack",
"\\breve",
"\\buildrel",
"\\bull",
"\\bullet",
"\\Bumpeq",
"\\bumpeq",
"\\C",
"\\cal",
"\\cancel",
"\\cancelto",
"\\Cap",
"\\cap",
"{cases}",
"\\cases",
"{CD}",
"\\cdot",
"\\cdotp",
"\\cdots",
"\\ce",
"\\cee",
"\\centerdot",
"\\cf",
"use \\ce instead",
"\\cfrac",
"\\char",
"\\check",
"\\ch",
"\\checkmark",
"\\Chi",
"\\chi",
"\\choose",
"\\circ",
"\\circeq",
"\\circlearrowleft",
"\\circlearrowright",
"\\circledast",
"\\circledcirc",
"\\circleddash",
"\\circledR",
"\\circledS",
"\\class",
"\\cline",
"\\clubs",
"\\clubsuit",
"\\cnums",
"\\colon",
"\\Colonapprox",
"\\colonapprox",
"\\coloncolon",
"\\coloncolonapprox",
"\\coloncolonequals",
"\\coloncolonminus",
"\\coloncolonsim",
"\\Coloneq",
"\\coloneq",
"\\colonequals",
"\\Coloneqq",
"\\coloneqq",
"\\colonminus",
"\\Colonsim",
"\\colonsim",
"\\color",
"\\colorbox",
"\\complement",
"\\Complex",
"\\cong",
"\\Coppa",
"\\coppa",
"\\coprod",
"\\copyright",
"\\cos",
"\\cosec",
"\\cosh",
"\\cot",
"\\cotg",
"\\coth",
"\\cr",
"\\csc",
"\\cssId",
"\\ctg",
"\\cth",
"\\Cup",
"\\cup",
"\\curlyeqprec",
"\\curlyeqsucc",
"\\curlyvee",
"\\curlywedge",
"\\curvearrowleft",
"\\curvearrowright",
"\\dag",
"\\Dagger",
"\\dagger",
"\\daleth",
"\\Darr",
"\\dArr",
"\\darr",
"{darray}",
"\\dashleftarrow",
"\\dashrightarrow",
"\\dashv",
"\\dbinom",
"\\dblcolon",
"{dcases}",
"\\ddag",
"\\ddagger",
"\\ddddot",
"\\dddot",
"\\ddot",
"\\ddots",
"\\DeclareMathOperator",
"\\def",
"\\definecolor",
"\\deg",
"\\degree",
"\\delta",
"\\Delta",
"\\det",
"\\Digamma",
"\\digamma",
"\\dfrac",
"\\diagdown",
"\\diagup",
"\\Diamond",
"\\diamond",
"\\diamonds",
"\\diamondsuit",
"\\dim",
"\\displaylines",
"\\displaystyle",
"\\div",
"\\divideontimes",
"\\dot",
"\\Doteq",
"\\doteq",
"\\doteqdot",
"\\dotplus",
"\\dots",
"\\dotsb",
"\\dotsc",
"\\dotsi",
"\\dotsm",
"\\dotso",
"\\doublebarwedge",
"\\doublecap",
"\\doublecup",
"\\Downarrow",
"\\downarrow",
"\\downdownarrows",
"\\downharpoonleft",
"\\downharpoonright",
"{drcases}",
"\\edef",
"\\ell",
"\\else",
"\\em",
"\\emph",
"\\empty",
"\\emptyset",
"\\enclose",
"\\end",
"\\endgroup",
"\\enspace",
"\\Epsilon",
"\\epsilon",
"\\eqalign",
"\\eqalignno",
"\\eqcirc",
"\\Eqcolon",
"\\eqcolon",
"{equation}",
"{equation*}",
"{eqnarray}",
"\\Eqqcolon",
"\\eqqcolon",
"\\eqref",
"\\eqsim",
"\\eqslantgtr",
"\\eqslantless",
"\\equalscolon",
"\\equalscoloncolon",
"\\equiv",
"\\Eta",
"\\eta",
"\\eth",
"\\euro",
"\\exist",
"\\exists",
"\\exp",
"\\expandafter",
"\\fallingdotseq",
"\\fbox",
"\\fcolorbox",
"\\fi",
"\\Finv",
"\\flat",
"\\footnotesize",
"\\forall",
"\\frac",
"\\frak",
"\\frown",
"\\futurelet",
"\\Game",
"\\Gamma",
"\\gamma",
"{gather}",
"{gathered}",
"\\gcd",
"\\gdef",
"\\ge",
"\\geneuro",
"\\geneuronarrow",
"\\geneurowide",
"\\genfrac",
"\\geq",
"\\geqq",
"\\geqslant",
"\\gets",
"\\gg",
"\\ggg",
"\\gggtr",
"\\gimel",
"\\global",
"\\gnapprox",
"\\gneq",
"\\gneqq",
"\\gnsim",
"\\grave",
"\\gt",
"\\gtrdot",
"\\gtrapprox",
"\\gtreqless",
"\\gtreqqless",
"\\gtrless",
"\\gtrsim",
"\\gvertneqq",
"\\H",
"\\Harr",
"\\hArr",
"\\harr",
"\\hat",
"\\hbar",
"\\hbox",
"\\hbox to",
"\\hdashline",
"\\hearts",
"\\heartsuit",
"\\hfil",
"\\hfill",
"\\hline",
"\\hom",
"\\hookleftarrow",
"\\hookrightarrow",
"\\hphantom",
"\\href",
"\\hskip",
"\\hslash",
"\\hspace",
"\\htmlClass",
"\\htmlData",
"\\htmlId",
"\\htmlStyle",
"\\huge",
"\\Huge",
"\\i",
"\\idotsint",
"\\iddots",
"\\if",
"\\iff",
"\\ifmode",
"\\ifx",
"\\iiiint",
"\\iiint",
"\\iint",
"\\Im",
"\\image",
"\\imageof",
"\\imath",
"\\impliedby",
"\\implies",
"\\in",
"\\includegraphics",
"\\inf",
"\\infin",
"\\infty",
"\\injlim",
"\\int",
"\\intercal",
"\\intop",
"\\Iota",
"\\iota",
"\\isin",
"\\it",
"\\itshape",
"\\j",
"\\jmath",
"\\Join",
"\\Kappa",
"\\kappa",
"\\KaTeX",
"\\ker",
"\\kern",
"\\Ket",
"\\ket",
"\\Koppa",
"\\koppa",
"\\L",
"\\l",
"\\Lambda",
"\\lambda",
"\\label",
"\\land",
"\\lang",
"\\langle",
"\\Larr",
"\\lArr",
"\\larr",
"\\large",
"\\Large",
"\\LARGE",
"\\LaTeX",
"\\lBrace",
"\\lbrace",
"\\lbrack",
"\\lceil",
"\\ldotp",
"\\ldots",
"\\le",
"\\leadsto",
"\\left",
"\\leftarrow",
"\\Leftarrow",
"\\LeftArrow",
"\\leftarrowtail",
"\\leftharpoondown",
"\\leftharpoonup",
"\\leftleftarrows",
"\\Leftrightarrow",
"\\leftrightarrow",
"\\leftrightarrows",
"\\leftrightharpoons",
"\\leftrightsquigarrow",
"\\leftroot",
"\\leftthreetimes",
"\\leq",
"\\leqalignno",
"\\leqq",
"\\leqslant",
"\\lessapprox",
"\\lessdot",
"\\lesseqgtr",
"\\lesseqqgtr",
"\\lessgtr",
"\\lesssim",
"\\let",
"\\lfloor",
"\\lg",
"\\lgroup",
"\\lhd",
"\\lim",
"\\liminf",
"\\limits",
"\\limsup",
"\\ll",
"\\llap",
"\\llbracket",
"\\llcorner",
"\\Lleftarrow",
"\\lll",
"\\llless",
"\\lmoustache",
"\\ln",
"\\lnapprox",
"\\lneq",
"\\lneqq",
"\\lnot",
"\\lnsim",
"\\log",
"\\long",
"\\Longleftarrow",
"\\longleftarrow",
"\\Longleftrightarrow",
"\\longleftrightarrow",
"\\longmapsto",
"\\Longrightarrow",
"\\longrightarrow",
"\\looparrowleft",
"\\looparrowright",
"\\lor",
"\\lower",
"\\lozenge",
"\\lparen",
"\\Lrarr",
"\\lrArr",
"\\lrarr",
"\\lrcorner",
"\\lq",
"\\Lsh",
"\\lt",
"\\ltimes",
"\\lVert",
"\\lvert",
"\\lvertneqq",
"\\maltese",
"\\mapsto",
"\\mathbb",
"\\mathbf",
"\\mathbin",
"\\mathcal",
"\\mathchoice",
"\\mathclap",
"\\mathclose",
"\\mathellipsis",
"\\mathfrak",
"\\mathinner",
"\\mathit",
"\\mathllap",
"\\mathnormal",
"\\mathop",
"\\mathopen",
"\\mathord",
"\\mathpunct",
"\\mathrel",
"\\mathrlap",
"\\mathring",
"\\mathrm",
"\\mathscr",
"\\mathsf",
"\\mathsterling",
"\\mathstrut",
"\\mathtip",
"\\mathtt",
"\\matrix",
"{matrix}",
"{matrix*}",
"\\max",
"\\mbox",
"\\md",
"\\mdseries",
"\\measuredangle",
"\\medspace",
"\\mho",
"\\mid",
"\\middle",
"\\min",
"\\minuscolon",
"\\minuscoloncolon",
"\\minuso",
"\\mit",
"\\mkern",
"\\mmlToken",
"\\mod",
"\\models",
"\\moveleft",
"\\moveright",
"\\mp",
"\\mskip",
"\\mspace",
"\\Mu",
"\\mu",
"\\multicolumn",
"{multiline}",
"\\multimap",
"\\N",
"\\nabla",
"\\natnums",
"\\natural",
"\\negmedspace",
"\\ncong",
"\\ne",
"\\nearrow",
"\\neg",
"\\negthickspace",
"\\negthinspace",
"\\neq",
"\\newcommand",
"\\newenvironment",
"\\Newextarrow",
"\\newline",
"\\nexists",
"\\ngeq",
"\\ngeqq",
"\\ngeqslant",
"\\ngtr",
"\\ni",
"\\nleftarrow",
"\\nLeftarrow",
"\\nLeftrightarrow",
"\\nleftrightarrow",
"\\nleq",
"\\nleqq",
"\\nleqslant",
"\\nless",
"\\nmid",
"\\nobreak",
"\\nobreakspace",
"\\noexpand",
"\\nolimits",
"\\nonumber",
"\\normalfont",
"\\normalsize",
"\\not",
"\\notag",
"\\notin",
"\\notni",
"\\nparallel",
"\\nprec",
"\\npreceq",
"\\nRightarrow",
"\\nrightarrow",
"\\nshortmid",
"\\nshortparallel",
"\\nsim",
"\\nsubseteq",
"\\nsubseteqq",
"\\nsucc",
"\\nsucceq",
"\\nsupseteq",
"\\nsupseteqq",
"\\ntriangleleft",
"\\ntrianglelefteq",
"\\ntriangleright",
"\\ntrianglerighteq",
"\\Nu",
"\\nu",
"\\nVDash",
"\\nVdash",
"\\nvDash",
"\\nvdash",
"\\nwarrow",
"\\O",
"\\o",
"\\odot",
"\\OE",
"\\oe",
"\\officialeuro",
"\\oiiint",
"\\oiint",
"\\oint",
"\\oldstyle",
"\\omega",
"\\Omega",
"\\Omicron",
"\\omicron",
"\\ominus",
"\\operatorname",
"\\operatorname*",
"\\operatornamewithlimits",
"\\oplus",
"\\or",
"\\origof",
"\\oslash",
"\\otimes",
"\\over",
"\\overbrace",
"\\overbracket",
"\\overgroup",
"\\overleftarrow",
"\\overleftharpoon",
"\\overleftrightarrow",
"\\overline",
"\\overlinesegment",
"\\overparen",
"\\Overrightarrow",
"\\overrightarrow",
"\\overrightharpoon",
"\\overset",
"\\overwithdelims",
"\\owns",
"\\P",
"\\pagecolor",
"\\parallel",
"\\part",
"\\partial",
"\\perp",
"\\phantom",
"\\phase",
"\\Phi",
"\\phi",
"\\Pi",
"\\pi",
"{picture}",
"\\pitchfork",
"\\plim",
"\\plusmn",
"\\pm",
"\\pmatrix",
"{pmatrix}",
"{pmatrix*}",
"\\pmb",
"\\pmod",
"\\pod",
"\\pounds",
"\\Pr",
"\\prec",
"\\precapprox",
"\\preccurlyeq",
"\\preceq",
"\\precnapprox",
"\\precneqq",
"\\precnsim",
"\\precsim",
"\\prime",
"\\prod",
"\\projlim",
"\\propto",
"\\providecommand",
"\\psi",
"\\Psi",
"\\pu",
"\\Q",
"\\qquad",
"\\quad",
"\\R",
"\\r",
"\\raise",
"\\raisebox",
"\\rang",
"\\rangle",
"\\Rarr",
"\\rArr",
"\\rarr",
"\\ratio",
"\\rBrace",
"\\rbrace",
"\\rbrack",
"{rcases}",
"\\rceil",
"\\Re",
"\\real",
"\\Reals",
"\\reals",
"\\ref",
"\\relax",
"\\renewcommand",
"\\renewenvironment",
"\\require",
"\\restriction",
"\\rfloor",
"\\rgroup",
"\\rhd",
"\\Rho",
"\\rho",
"\\right",
"\\Rightarrow",
"\\rightarrow",
"\\rightarrowtail",
"\\rightharpoondown",
"\\rightharpoonup",
"\\rightleftarrows",
"\\rightleftharpoons",
"\\rightrightarrows",
"\\rightsquigarrow",
"\\rightthreetimes",
"\\risingdotseq",
"\\rlap",
"\\rm",
"\\rmoustache",
"\\root",
"\\rotatebox",
"\\rparen",
"\\rq",
"\\rrbracket",
"\\Rrightarrow",
"\\Rsh",
"\\rtimes",
"\\Rule",
"\\rule",
"\\rVert",
"\\rvert",
"\\S",
"\\Sampi",
"\\sampi",
"\\sc",
"\\scalebox",
"\\scr",
"\\scriptscriptstyle",
"\\scriptsize",
"\\scriptstyle",
"\\sdot",
"\\searrow",
"\\sec",
"\\sect",
"\\set",
"\\Set",
"\\setlength",
"\\setminus",
"\\sf",
"\\sharp",
"\\shortmid",
"\\shortparallel",
"\\shoveleft",
"\\shoveright",
"\\sideset",
"\\Sigma",
"\\sigma",
"\\sim",
"\\simcolon",
"\\simcoloncolon",
"\\simeq",
"\\sin",
"\\sinh",
"\\sixptsize",
"\\sh",
"\\skew",
"\\skip",
"\\sl",
"\\small",
"\\smallfrown",
"\\smallint",
"{smallmatrix}",
"\\smallsetminus",
"\\smallsmile",
"\\smash",
"\\smile",
"\\smiley",
"\\sout",
"\\Space",
"\\space",
"\\spades",
"\\spadesuit",
"\\sphericalangle",
"{split}",
"\\sqcap",
"\\sqcup",
"\\square",
"\\sqrt",
"\\sqsubset",
"\\sqsubseteq",
"\\sqsupset",
"\\sqsupseteq",
"\\ss",
"\\stackrel",
"\\star",
"\\Stigma",
"\\stigma",
"\\strut",
"\\style",
"\\sub",
"{subarray}",
"\\sube",
"\\Subset",
"\\subset",
"\\subseteq",
"\\subseteqq",
"\\subsetneq",
"\\subsetneqq",
"\\substack",
"\\succ",
"\\succapprox",
"\\succcurlyeq",
"\\succeq",
"\\succnapprox",
"\\succneqq",
"\\succnsim",
"\\succsim",
"\\sum",
"\\sup",
"\\supe",
"\\Supset",
"\\supset",
"\\supseteq",
"\\supseteqq",
"\\supsetneq",
"\\supsetneqq",
"\\surd",
"\\swarrow",
"\\tag",
"\\tag*",
"\\tan",
"\\tanh",
"\\Tau",
"\\tau",
"\\tbinom",
"\\TeX",
"\\text",
"\\textasciitilde",
"\\textasciicircum",
"\\textbackslash",
"\\textbar",
"\\textbardbl",
"\\textbf",
"\\textbraceleft",
"\\textbraceright",
"\\textcircled",
"\\textcolor",
"\\textdagger",
"\\textdaggerdbl",
"\\textdegree",
"\\textdollar",
"\\textellipsis",
"\\textemdash",
"\\textendash",
"\\textgreater",
"\\textit",
"\\textless",
"\\textmd",
"\\textnormal",
"\\textquotedblleft",
"\\textquotedblright",
"\\textquoteleft",
"\\textquoteright",
"\\textregistered",
"\\textrm",
"\\textsc",
"\\textsf",
"\\textsl",
"\\textsterling",
"\\textstyle",
"\\texttip",
"\\texttt",
"\\textunderscore",
"\\textup",
"\\textvisiblespace",
"\\tfrac",
"\\tg",
"\\th",
"\\therefore",
"\\Theta",
"\\theta",
"\\thetasym",
"\\thickapprox",
"\\thicksim",
"\\thickspace",
"\\thinspace",
"\\tilde",
"\\times",
"\\Tiny",
"\\tiny",
"\\to",
"\\toggle",
"\\top",
"\\triangle",
"\\triangledown",
"\\triangleleft",
"\\trianglelefteq",
"\\triangleq",
"\\triangleright",
"\\trianglerighteq",
"\\tt",
"\\twoheadleftarrow",
"\\twoheadrightarrow",
"\\u",
"\\Uarr",
"\\uArr",
"\\uarr",
"\\ulcorner",
"\\underbar",
"\\underbrace",
"\\underbracket",
"\\undergroup",
"\\underleftarrow",
"\\underleftrightarrow",
"\\underrightarrow",
"\\underline",
"\\underlinesegment",
"\\underparen",
"\\underrightarrow",
"\\underset",
"\\unicode",
"\\unlhd",
"\\unrhd",
"\\up",
"\\Uparrow",
"\\uparrow",
"\\Updownarrow",
"\\updownarrow",
"\\upharpoonleft",
"\\upharpoonright",
"\\uplus",
"\\uproot",
"\\upshape",
"\\Upsilon",
"\\upsilon",
"\\upuparrows",
"\\urcorner",
"\\url",
"\\utilde",
"\\v",
"\\varcoppa",
"\\varDelta",
"\\varepsilon",
"\\varGamma",
"\\varinjlim",
"\\varkappa",
"\\varLambda",
"\\varliminf",
"\\varlimsup",
"\\varnothing",
"\\varOmega",
"\\varPhi",
"\\varphi",
"\\varPi",
"\\varpi",
"\\varprojlim",
"\\varpropto",
"\\varPsi",
"\\varPsi",
"\\varrho",
"\\varSigma",
"\\varsigma",
"\\varstigma",
"\\varsubsetneq",
"\\varsubsetneqq",
"\\varsupsetneq",
"\\varsupsetneqq",
"\\varTheta",
"\\vartheta",
"\\vartriangle",
"\\vartriangleleft",
"\\vartriangleright",
"\\varUpsilon",
"\\varXi",
"\\vcentcolon",
"\\vcenter",
"\\vcenter",
"\\Vdash",
"\\vDash",
"\\vdash",
"\\vdots",
"\\vec",
"\\vee",
"\\veebar",
"\\verb",
"\\Vert",
"\\vert",
"\\vfil",
"\\vfill",
"\\vline",
"{Vmatrix}",
"{Vmatrix*}",
"{vmatrix}",
"{vmatrix*}",
"\\vphantom",
"\\Vvdash",
"\\wedge",
"\\weierp",
"\\widecheck",
"\\widehat",
"\\wideparen",
"\\widetilde",
"\\wp",
"\\wr",
"\\xcancel",
"\\xdef",
"\\Xi",
"\\xi",
"\\xhookleftarrow",
"\\xhookrightarrow",
"\\xLeftarrow",
"\\xleftarrow",
"\\xleftharpoondown",
"\\xleftharpoonup",
"\\xLeftrightarrow",
"\\xleftrightarrow",
"\\xleftrightharpoons",
"\\xlongequal",
"\\xmapsto",
"\\xRightarrow",
"\\xrightarrow",
"\\xrightharpoondown",
"\\xrightharpoonup",
"\\xrightleftharpoons",
"\\xtofrom",
"\\xtwoheadleftarrow",
"\\xtwoheadrightarrow",
"\\yen",
"\\Z",
"\\Zeta",
"\\zeta",
];