mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-09 13:08:40 +00:00
\kern fixes, \hskip support, \TeX, \LaTeX, \KaTeX (#974)
* Refactor \kern, proper \mkern support, add \hskip * Move \kern, \mkern into functions directory * Add \hskip, \mskip support (but without supporting plus/minus) * Properly separate \kern, \hskip from \mkern, \mskip. (The former work in both modes, and don't support mu units. The latter work only in math mode and only support mu units.) * Render \kern etc. using MathML <mspace> * Implement \TeX macro * Implement \LaTeX * New KaTeX logo \katex * Rename hskip.js -> kern.js * Tweak katex \kern to 0.16em * \katex kern -.17em * Compute A raise height in \LaTeX and \katex * Switch mu unit errors to warnings * LaTeX screenshot test * Replace \KaTeX with macro definition * Update screenshots with \KaTeX in them * Fix font selection for \*TeX macros
This commit is contained in:
committed by
Kevin Barabash
parent
f6a377b91c
commit
7036eb85cd
@@ -4,6 +4,7 @@
|
||||
* This can be used to define some commands in terms of others.
|
||||
*/
|
||||
|
||||
import fontMetricsData from "./fontMetricsData";
|
||||
import symbols from "./symbols";
|
||||
import utils from "./utils";
|
||||
import {Token} from "./Token";
|
||||
@@ -85,10 +86,6 @@ defineMacro("\u211A", "\\mathbb{Q}");
|
||||
defineMacro("\u211D", "\\mathbb{R}");
|
||||
defineMacro("\u2124", "\\mathbb{Z}");
|
||||
|
||||
// We don't distinguish between math and nonmath kerns.
|
||||
// (In TeX, the mu unit works only with \mkern.)
|
||||
defineMacro("\\mkern", "\\kern");
|
||||
|
||||
// \llap and \rlap render their contents in text mode
|
||||
defineMacro("\\llap", "\\mathllap{\\textrm{#1}}");
|
||||
defineMacro("\\rlap", "\\mathrlap{\\textrm{#1}}");
|
||||
@@ -270,6 +267,37 @@ defineMacro("\\thickspace", "\\;"); // \let\thickspace\;
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// LaTeX source2e
|
||||
|
||||
// \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
|
||||
// TODO: Doesn't normally work in math mode because \@ fails. KaTeX doesn't
|
||||
// support \@ yet, so that's omitted, and we add \text so that the result
|
||||
// doesn't look funny in math mode.
|
||||
defineMacro("\\TeX", "\\textrm{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}");
|
||||
|
||||
// \DeclareRobustCommand{\LaTeX}{L\kern-.36em%
|
||||
// {\sbox\z@ T%
|
||||
// \vbox to\ht\z@{\hbox{\check@mathfonts
|
||||
// \fontsize\sf@size\z@
|
||||
// \math@fontsfalse\selectfont
|
||||
// A}%
|
||||
// \vss}%
|
||||
// }%
|
||||
// \kern-.15em%
|
||||
// \TeX}
|
||||
// This code aligns the top of the A with the T (from the perspective of TeX's
|
||||
// boxes, though visually the A appears to extend above slightly).
|
||||
// We compute the corresponding \raisebox when A is rendered at \scriptsize,
|
||||
// which is size3, which has a scale factor of 0.7 (see Options.js).
|
||||
const latexRaiseA = fontMetricsData['Main-Regular']["T".charCodeAt(0)][1] -
|
||||
0.7 * fontMetricsData['Main-Regular']["A".charCodeAt(0)][1] + "em";
|
||||
defineMacro("\\LaTeX",
|
||||
`\\textrm{L\\kern-.36em\\raisebox{${latexRaiseA}}{\\scriptsize A}` +
|
||||
"\\kern-.15em\\TeX}");
|
||||
|
||||
// New KaTeX logo based on tweaking LaTeX logo
|
||||
defineMacro("\\KaTeX",
|
||||
`\\textrm{K\\kern-.17em\\raisebox{${latexRaiseA}}{\\scriptsize A}` +
|
||||
"\\kern-.15em\\TeX}");
|
||||
|
||||
// \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace}
|
||||
// \def\@hspace#1{\hskip #1\relax}
|
||||
// KaTeX doesn't do line breaks, so \hspace and \hspace* are the same as \kern
|
||||
|
Reference in New Issue
Block a user