mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 19:28:39 +00:00
* Don't inherit SVG style properties from the environment. We don't want to inherit styles that affect SVG painting unless those styles also affect regular text rendering. This patch adds styles to the stylesheet so that every svg element in KaTeX output starts off with a known set of basic fill and stroke attributes. This should resolve issue #1088 * Default to stroke:none for <path> elements
567 lines
12 KiB
Plaintext
567 lines
12 KiB
Plaintext
@import "fonts.less";
|
|
|
|
// The mu unit is defined as 1/18 em
|
|
@mu: 1.0/18.0em;
|
|
|
|
.katex-display {
|
|
display: block;
|
|
margin: 1em 0;
|
|
text-align: center;
|
|
|
|
> .katex {
|
|
display: inline-block;
|
|
text-align: initial;
|
|
}
|
|
}
|
|
|
|
.katex {
|
|
font: normal 1.21em KaTeX_Main, Times New Roman, serif;
|
|
line-height: 1.2;
|
|
white-space: nowrap;
|
|
|
|
// Protect elements inside .katex from inheriting text-indent.
|
|
text-indent: 0;
|
|
|
|
// Prevent a rendering bug that misplaces \vec in Chrome.
|
|
text-rendering: auto;
|
|
|
|
// Prevent background resetting on elements in Windows's high-contrast
|
|
// mode, while still allowing background/foreground setting on root .katex
|
|
* { -ms-high-contrast-adjust: none !important; }
|
|
|
|
.katex-html {
|
|
// Making .katex inline-block allows line breaks before and after,
|
|
// which is undesireable ("to $x$,"). Instead, adjust the .katex-html
|
|
// style and put nowrap on the inline .katex element.
|
|
display: inline-block;
|
|
}
|
|
|
|
.katex-mathml {
|
|
// Accessibility hack to only show to screen readers
|
|
// Found at: http://a11yproject.com/posts/how-to-hide-content/
|
|
position: absolute;
|
|
clip: rect(1px, 1px, 1px, 1px);
|
|
padding: 0;
|
|
border: 0;
|
|
height: 1px;
|
|
width: 1px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.base {
|
|
position: relative;
|
|
display: inline-block;
|
|
}
|
|
|
|
.strut {
|
|
display: inline-block;
|
|
}
|
|
|
|
// Text font weights
|
|
.textbf {
|
|
font-weight: bold;
|
|
}
|
|
|
|
// Text font shapes.
|
|
.textit {
|
|
font-style: italic;
|
|
}
|
|
|
|
// Text font families.
|
|
.textrm {
|
|
font-family: KaTeX_Main;
|
|
}
|
|
|
|
.textsf {
|
|
font-family: KaTeX_SansSerif;
|
|
}
|
|
|
|
.texttt {
|
|
font-family: KaTeX_Typewriter;
|
|
}
|
|
|
|
// Math fonts.
|
|
.mathit {
|
|
font-family: KaTeX_Math;
|
|
font-style: italic;
|
|
}
|
|
|
|
.mathrm {
|
|
font-style: normal;
|
|
}
|
|
|
|
.mathbf {
|
|
font-family: KaTeX_Main;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.boldsymbol {
|
|
font-family: KaTeX_Math;
|
|
font-weight: bold;
|
|
font-style: italic;
|
|
}
|
|
|
|
.amsrm {
|
|
font-family: KaTeX_AMS;
|
|
}
|
|
|
|
.mathbb {
|
|
font-family: KaTeX_AMS;
|
|
}
|
|
|
|
.mathcal {
|
|
font-family: KaTeX_Caligraphic;
|
|
}
|
|
|
|
.mathfrak {
|
|
font-family: KaTeX_Fraktur;
|
|
}
|
|
|
|
.mathtt {
|
|
font-family: KaTeX_Typewriter;
|
|
}
|
|
|
|
.mathscr {
|
|
font-family: KaTeX_Script;
|
|
}
|
|
|
|
.mathsf {
|
|
font-family: KaTeX_SansSerif;
|
|
}
|
|
|
|
.mainit {
|
|
font-family: KaTeX_Main;
|
|
font-style: italic;
|
|
}
|
|
|
|
.mainrm {
|
|
font-family: KaTeX_Main;
|
|
font-style: normal;
|
|
}
|
|
|
|
// This value is also used in fontMetrics.js, if you change it make sure the
|
|
// values match.
|
|
@ptperem: 10.0;
|
|
@nulldelimiterspace: 1.2em / @ptperem;
|
|
|
|
@muspace: 0.055556em; // 1mu
|
|
@thinspace: 0.16667em; // 3mu
|
|
@mediumspace: 0.22222em; // 4mu
|
|
@thickspace: 0.27778em; // 5mu
|
|
|
|
.vlist-t {
|
|
display: inline-table;
|
|
table-layout: fixed;
|
|
}
|
|
|
|
.vlist-r {
|
|
display: table-row;
|
|
}
|
|
|
|
.vlist {
|
|
display: table-cell;
|
|
vertical-align: bottom;
|
|
position: relative;
|
|
|
|
> span {
|
|
display: block;
|
|
height: 0;
|
|
position: relative;
|
|
|
|
> span {
|
|
display: inline-block;
|
|
}
|
|
|
|
> .pstrut {
|
|
overflow: hidden;
|
|
width: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.vlist-t2 {
|
|
margin-right: -2px;
|
|
}
|
|
|
|
.vlist-s {
|
|
// This cell solves Safari rendering problems. It has text content, so
|
|
// its baseline is used for the table. A very small font avoids line-box
|
|
// issues; absolute units prevent user font-size overrides from breaking
|
|
// rendering. Safari refuses to make the box zero-width, so we give it
|
|
// a known width and compensate with negative right margin on the
|
|
// inline-table.
|
|
display: table-cell;
|
|
vertical-align: bottom;
|
|
font-size: 1px;
|
|
width: 2px;
|
|
}
|
|
|
|
.msupsub {
|
|
text-align: left;
|
|
}
|
|
|
|
.mfrac {
|
|
> span > span {
|
|
text-align: center;
|
|
}
|
|
|
|
.frac-line {
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
.mspace {
|
|
display: inline-block;
|
|
|
|
&.negativethinspace {
|
|
margin-left: -@thinspace;
|
|
}
|
|
|
|
&.muspace {
|
|
width: @muspace;
|
|
}
|
|
|
|
&.thinspace {
|
|
width: @thinspace;
|
|
}
|
|
|
|
&.negativemediumspace {
|
|
margin-left: -@mediumspace;
|
|
}
|
|
|
|
&.mediumspace {
|
|
width: @mediumspace;
|
|
}
|
|
|
|
&.thickspace {
|
|
width: @thickspace;
|
|
}
|
|
|
|
&.sixmuspace {
|
|
width: 0.333333em;
|
|
}
|
|
|
|
&.eightmuspace {
|
|
width: 0.444444em;
|
|
}
|
|
|
|
&.enspace {
|
|
width: 0.5em;
|
|
}
|
|
|
|
&.twelvemuspace {
|
|
width: 0.666667em;
|
|
}
|
|
|
|
&.quad {
|
|
width: 1em;
|
|
}
|
|
|
|
&.qquad {
|
|
width: 2em;
|
|
}
|
|
}
|
|
|
|
.llap,
|
|
.rlap,
|
|
.clap {
|
|
width: 0;
|
|
position: relative;
|
|
|
|
> .inner {
|
|
position: absolute;
|
|
}
|
|
|
|
> .fix {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
|
|
.llap > .inner {
|
|
right: 0;
|
|
}
|
|
|
|
.rlap > .inner,
|
|
.clap > .inner {
|
|
left: 0;
|
|
}
|
|
|
|
.clap > .inner > span {
|
|
margin-left: -50%;
|
|
margin-right: 50%;
|
|
}
|
|
|
|
.rule {
|
|
display: inline-block;
|
|
border: solid 0;
|
|
position: relative;
|
|
}
|
|
|
|
.overline .overline-line,
|
|
.underline .underline-line {
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
|
|
.sqrt {
|
|
> .root {
|
|
// These values are taken from the definition of `\r@@t`,
|
|
// `\mkern 5mu` and `\mkern -10mu`.
|
|
margin-left: 5*@mu;
|
|
margin-right: -10*@mu;
|
|
}
|
|
}
|
|
|
|
.sizing, .fontsize-ensurer {
|
|
display: inline-block;
|
|
|
|
@size1: 0.5;
|
|
@size2: 0.6;
|
|
@size3: 0.7;
|
|
@size4: 0.8;
|
|
@size5: 0.9;
|
|
@size6: 1.0;
|
|
@size7: 1.2;
|
|
@size8: 1.44;
|
|
@size9: 1.728;
|
|
@size10: 2.074;
|
|
@size11: 2.488;
|
|
|
|
.generate-size-change(@from, @to) {
|
|
&.reset-size@{from}.size@{to} {
|
|
@sizeFromVariable: ~"size@{from}";
|
|
@sizeToVariable: ~"size@{to}";
|
|
font-size: (@@sizeToVariable / @@sizeFromVariable) * 1em;
|
|
}
|
|
}
|
|
|
|
.generate-to-size-change(@from, @currTo) when (@currTo =< 11) {
|
|
.generate-size-change(@from, @currTo);
|
|
|
|
.generate-to-size-change(@from, (@currTo + 1));
|
|
}
|
|
|
|
.generate-from-size-change(@currFrom) when (@currFrom =< 11) {
|
|
.generate-to-size-change(@currFrom, 1);
|
|
|
|
.generate-from-size-change((@currFrom + 1));
|
|
}
|
|
|
|
.generate-from-size-change(1);
|
|
}
|
|
|
|
.delimsizing {
|
|
&.size1 { font-family: KaTeX_Size1; }
|
|
&.size2 { font-family: KaTeX_Size2; }
|
|
&.size3 { font-family: KaTeX_Size3; }
|
|
&.size4 { font-family: KaTeX_Size4; }
|
|
|
|
&.mult {
|
|
.delim-size1 > span {
|
|
font-family: KaTeX_Size1;
|
|
}
|
|
.delim-size4 > span {
|
|
font-family: KaTeX_Size4;
|
|
}
|
|
}
|
|
}
|
|
|
|
.nulldelimiter {
|
|
display: inline-block;
|
|
width: @nulldelimiterspace;
|
|
}
|
|
|
|
.delimcenter {
|
|
position: relative;
|
|
}
|
|
|
|
.op-symbol {
|
|
position: relative;
|
|
|
|
&.small-op {
|
|
font-family: KaTeX_Size1;
|
|
}
|
|
&.large-op {
|
|
font-family: KaTeX_Size2;
|
|
}
|
|
}
|
|
|
|
.op-limits {
|
|
> .vlist-t {
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
.accent {
|
|
> .vlist-t {
|
|
text-align: center;
|
|
}
|
|
|
|
.accent-body {
|
|
width: 0;
|
|
position: relative; // so that 'left' can shift the accent
|
|
}
|
|
}
|
|
|
|
.overlay {
|
|
display: block;
|
|
}
|
|
|
|
.mtable {
|
|
.vertical-separator {
|
|
display: inline-block;
|
|
margin: 0 -0.125em; // The ink in the rule is actually 0.05em wide.
|
|
width: 0.25em; // We put it in a 0.25em wide span to overcome
|
|
} // a Chrome rendering issue.
|
|
|
|
.arraycolsep {
|
|
display: inline-block;
|
|
}
|
|
|
|
.col-align-c > .vlist-t {
|
|
text-align: center;
|
|
}
|
|
|
|
.col-align-l > .vlist-t {
|
|
text-align: left;
|
|
}
|
|
|
|
.col-align-r > .vlist-t {
|
|
text-align: right;
|
|
}
|
|
}
|
|
|
|
.svg-align {
|
|
text-align: left;
|
|
}
|
|
|
|
svg {
|
|
display: block;
|
|
position: absolute; // absolute relative to parent
|
|
width: 100%;
|
|
|
|
// We want to inherit colors from our environment
|
|
fill: currentColor;
|
|
stroke: currentColor;
|
|
|
|
// But path elements should not have an outline by default
|
|
// that would make them bigger than we expect.
|
|
path {
|
|
stroke: none;
|
|
}
|
|
|
|
// And we don't want to inherit any other style properties
|
|
// that could affect SVG rendering without affecting font
|
|
// rendering. So we reset these properties to their default
|
|
// values for every <svg> element.
|
|
// See https://www.w3.org/TR/SVG/painting.html
|
|
fill-rule: nonzero;
|
|
fill-opacity: 1;
|
|
stroke-width: 1;
|
|
stroke-linecap: butt;
|
|
stroke-linejoin: miter;
|
|
stroke-miterlimit: 4;
|
|
stroke-dasharray: none;
|
|
stroke-dashoffset: 0;
|
|
stroke-opacity: 1;
|
|
}
|
|
|
|
.vertical-separator svg {
|
|
width: 0.25em;
|
|
}
|
|
|
|
// Define CSS for image whose width will match its span width.
|
|
.stretchy {
|
|
width: 100%;
|
|
display: block;
|
|
|
|
&:before,
|
|
&:after {
|
|
content: "";
|
|
}
|
|
}
|
|
|
|
// Hide the long tail of a stretchy SVG.
|
|
.hide-tail {
|
|
width: 100%; // necessary only to get IE to work properly
|
|
position: relative; // ditto
|
|
overflow: hidden; // This line applies to all browsers.
|
|
}
|
|
|
|
.halfarrow-left {
|
|
position: absolute;
|
|
left: 0;
|
|
width: 50.1%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.halfarrow-right {
|
|
position: absolute;
|
|
right: 0;
|
|
width: 50%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.brace-left {
|
|
position: absolute;
|
|
left: 0;
|
|
width: 25.1%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.brace-center {
|
|
position: absolute;
|
|
left: 25%;
|
|
width: 50%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.brace-right {
|
|
position: absolute;
|
|
right: 0;
|
|
width: 25.1%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
// Lengthen the extensible arrows via padding.
|
|
.x-arrow-pad {
|
|
padding: 0 0.5em;
|
|
}
|
|
|
|
.x-arrow,
|
|
.mover,
|
|
.munder {
|
|
text-align: center;
|
|
}
|
|
|
|
.boxpad {
|
|
padding: 0 0.3em 0 0.3em; // \fboxsep = 3pt
|
|
}
|
|
.fbox {
|
|
box-sizing: border-box;
|
|
border: 0.04em solid black; // \fboxrule = 0.4pt
|
|
}
|
|
.fcolorbox {
|
|
box-sizing: border-box;
|
|
border: 0.04em solid; // \fboxrule = 0.4pt
|
|
}
|
|
.cancel-pad {
|
|
padding: 0 0.2em 0 0.2em; // ref: cancel package \advance\dimen@ 2\p@ % "+2"
|
|
}
|
|
.mord + .cancel-lap,
|
|
.mbin + .cancel-lap {
|
|
margin-left: -0.2em;
|
|
}
|
|
.cancel-lap + .mord,
|
|
.cancel-lap + .mbin,
|
|
.cancel-lap + .msupsub {
|
|
margin-left: -0.2em;
|
|
}
|
|
.sout {
|
|
border-bottom-style: solid;
|
|
border-bottom-width: 0.08em;
|
|
}
|
|
|
|
}
|