1. 개요
수학·과학 표기 및 그 의미론을 전산 환경에서 표현하기 위한 W3C 표준.2. 역사
2.1. MathML 3.0
흔히 망했다고 놀림받는 바로 그 표준으로, 보통 2014년의 3.0 2판 스펙을 말한다.2.2. MathML Core
w3.org/TR/mathml-coreMathML 3.0의 presentation markup을 기반으로 구체적인 렌더링 스펙이나 현대적인 DOM 처리 등 구현 지침을 대거 추가해 개편한 경량 스펙. 여기서 경량이라 한 이유는 content markup의 의미론은 포함하지 않는 스펙이기 때문이다. 실질적으로 웹 브라우저에서 실용적으로 구현할 수 있을 만큼만 잘라내고 개선한 표준인 것.
덕분에 욕만 처먹던 MathML 3.0에 비해 2026년 현재는 나름 메이저 브라우저에서 지원되고 있다.
mathvariants가 deprecated되었다. 아예 다 나간 건 아닌데 사실상 <mi>에만 남고 그마저도 normal만 지원하면서# 사실상 사라졌다. 현재 최신 Chrome에서는 깨지고 Firefox에서는 deprecation log가 출력되는 상황. 그 대안이랍시고 MathML Core 스펙에서 권장하는 것은 Mathematical Alphanumeric Symbols나 유니코드의 Variantion selector를 쓰라는 것. "normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"와 같은 variant가 내장 지원되었다.2.3. MathML 4.0
w3.org/TR/mathml4아직 W3C WD 상태. 사실상 MathML Core와 함께 디자인되었으며 궁극적으로는 content markup 등까지 포괄하는 full spec이자 MathML Core의 superset 격이라고 할 수 있다.
3. scheme
3.1. Presentation markup
MathML Core 기준.3.1.1. 태그
<mn />- 숫자(numeric literal) 토큰. 수(number)가 아님에 주의. W3C 표준에서도 numeric literal이라고 명시하고 있다. 가령 원주율 자체는 수이고,<mn>3.1415</mn>은 numeric literal이며,<mi>π</mi>등은 식별자로, numeric literal이 아니다. 보통 아라비아 숫자나 소수점, 부호 등으로 이루어진 숫자가 들어간다. 물론 presentation 수준에서는 hex literal이나 binary literal 등 십진법이 아닌 numerial이나 E notation을 써도 딱히 구분할 필요는 없다.<mi />- 식별자(identifier) 토큰.표준math-auto가 적용되기 때문에 보통 한 글자만 넣으면 자동으로 이탤릭(italic) 처리되고 반대로 여러 글자면 로만체(roman)로 나온다. 상술한 대로 최신 MathML Core에서는 유니코드 지원 때문에 사실상 서체 attributemathvariants옵션이normal밖에 없다.<mo />- 연산자(operator) 토큰. 이름이 operator긴 한데 사실 표준에서도 그렇고 각종 연산자나 관계 기호, punctuation 등등이 다 짬뽕되어 있는 태그다. 사실상<mn />,<mi />가 아닌 모든 것 정도로 생각하면 보통은 들어맞는다. 손으로 쓸 때는 별로 인식하지 않지만 마크업으로 쓸 때는 구분해야 하는 것도 여기에 포함되는데, 가령 곱 의미로 juxtaposition을 썼으면 그냥 붙여쓰는 게 아니라<mo>⁢</mo>를 넣어주는 식.<mtext />
3.2. Content markup
4. combined markup
4.1. mixed markup
4.2. parallel markup
<semantics /> 태그를 사용한다. 정말 쉽게 생각하면 HTML과 CSS의 관계처럼 parallel하게 inject했다고 생각하면 좋은 편.5. 팁
폰트가 안 예쁘다고 느껴지면 STIX two를 써보자. TeX 내장 폰트도 기본적인 presentation 지원은 되지만<mfenced />나 <munder />에 ⏟를 쓰는 등 조금만 레이아웃이 복잡해져도 수준이 확 떨어진다.