Skip to content

Math

Temml 을 써서 HTML 페이지에 품질 좋은 LaTeX 수식을 렌더링합니다. 네이티브 MathML 로 곧장 컴파일합니다.

이럴 때 쓰세요. HTML 페이지 안에서 LaTeX 수식을 블록 수식으로 렌더링해야 할 때. <r-math>latex 어트리뷰트의 식을 Temml로 조판합니다. Temml 은 LaTeX 을 MathML 로 컴파일하고, 배치는 브라우저가 직접 합니다 (canvas 도 SVG 도, KaTeX 런타임도 없습니다).

빠른 시작

기본 사용법

html
<r-math latex="\frac{x^2}{a^2} + \frac{y^2}{b^2} = 1 \quad (a > b > 0)"></r-math>

API 레퍼런스

프로퍼티

프로퍼티타입기본값설명
latexstring''렌더링할 LaTeX 식. 슬롯 텍스트가 아니라 이 어트리뷰트로 줍니다.
displaystring'block'block(블록 수식) 또는 inline(인라인 수식).
fontstring''system으로 두면 내장 Latin Modern Math 대신 사용자의 시스템 수식 글꼴을 씁니다.
macrosstring''Temml 매크로를 담은 JSON 객체. 잘못된 JSON 은 조용히 무시됩니다.
wrapstring''Temml 의 부드러운 줄바꿈: none, tex, =.
copybooleanfalse복사 버튼을 보입니다. copy만 쓰면 LaTeX 원본을, copy="mathml"은 MathML 을 복사합니다.
downloadbooleanfalse원본 (.tex) 이나 MathML(.mml) 을 내려받는 버튼·메뉴를 보입니다.
sheetstring''컴포넌트의 섀도 DOM 에 주입할 CSS.

💡 참고: latex 프로퍼티의 게터는 값을 decodeURIComponent로 디코딩하므로, URI 인코딩된 식은 렌더링 전에 디코딩됩니다. 식을 슬롯 텍스트로 넣어도 아무 효과가 없습니다. 렌더링되는 것은 latex 어트리뷰트뿐입니다.

latex

html
<r-math latex="x = {-b \pm \sqrt{b^2-4ac} \over 2a}"></r-math>

외부 스타일 sheet

html
<r-math latex="e^{i\pi} + 1 = 0" sheet=".ran-math { justify-content: flex-start; }"></r-math>

이벤트

이벤트detail발생 시점
render{ ok: true }식이 성공적으로 렌더링되었을 때.
error{ message: string }Temml 이 식을 파싱하지 못했을 때 (잘못된 LaTeX 등).
copied{ kind: 'source' | 'mathml' }복사 버튼이 원본이나 MathML 을 클립보드에 복사했을 때.
download{ format: 'source' | 'mathml' }다운로드 버튼이 .tex.mml 파일을 저장했을 때.

스타일

<r-math>는 자체 CSS 커스텀 프로퍼티 16 개와 테마에서 읽어 오는 의미 토큰을 공개합니다. 상속이 닿는 곳이면 어디에나 지정하세요 — :root, 바깥 컨테이너, 또는 엘리먼트 자체.

css
r-math {
  --ran-math-error-background: var(--ran-color-bg-subtle);
}

Part: button · error · math · menu · render · toolbar

전체 목록은 스타일 토큰에, 어떤 토큰을 쓸지는 디자인 시스템에 있습니다.

권장 사항

  • 식은 latex로 주세요: 식은 latex 어트리뷰트에 지정합니다. 슬롯 텍스트는 렌더링되지 않습니다.
  • JavaScript 에서는 역슬래시를 이스케이프하세요: JS 문자열 리터럴로 latex를 대입할 때 \는 이스케이프해야 합니다 (예: '\\frac{1}{2}').
  • 파싱 실패에 대비하세요: 모든 식이 올바른 LaTeX 이라고 가정하지 말고 error를 구독하세요 (또는 렌더링된 ::part(error) 상자를 확인하세요).
  • sheet로 배치를 바꾸세요: 내부 .ran-math 배치를 덮어써야 할 때 sheet 어트리뷰트를 쓰세요.

MIT 라이선스로 배포됩니다.