스킨을 적용한 티스토리 블로그에서 MathJax로 수식 입력하기

2025. 10. 8. 16:09·일상이야기

티스토리 글에서 수식을 입력하기 위해 MathJax를 이용하면 편리하다. 자바스크립트 MathJax 모듈 내 코드는 LaTeX 문법을 수식으로 변환해준다. 예를 들어 `1 \lt 2` 를 $ 1 \lt 2 $ 로 보이게끔 바꿔준다.

 

이 MathJax를 적용하는 방법은 구글링을 통해 쉽게 찾을 수 있다. 그리고 대다수의 블로그는 티스토리의 스킨 HTML의 <head> 태그 안에 아래의 <script> 태그를 넣으면 된다고 간단히 설명한다.

<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>

그러나, 이 방법은 나에게 동작하지 않았다. 정확히는 매번 화면에 진입할때마다 수식이 제대로 보이기도 했고, 안 보이기도 했다. 그 이유는 티스토리가 글을 로딩하는 시점과 MathJax 모듈을 로딩하는 시점의 차이 때문으로 분석된다. 

 

1. 티스토리 글이 MathJax 모듈보다 먼저 로딩(실행)될 경우

- 티스토리 글 로딩 -> 로딩된 티스토리 글이 DOM에 삽입 -> MathJax 모듈 로딩 -> MathJax의 DOM 내 수식 변환 로직 구동 -> 정상적으로 수식들이 보임

 

2. 티스토리 글보다 MathJax 모듈이 나중에 로딩(실행될 경우) 

- MathJax 수식 변환 로직 구동 -> DOM 내의 모든 수식 변환 완료(?) -> 티스토리 글 로딩 -> 티스토리 글 내에 LaTeX 구문이 변환되지 않은채로 그대로 남게됨

 

실제로, MathJax 문서에서는 동적인 컨텐츠를 포함한 페이지의 경우 별도의 셋팅이 필요함을 설명하고 있다. 이 문서에 의하면 수식 변환은 MathJax.typeset() 혹은 MathJax.typesetPromise() 함수를 호출하면 이루어진다고 한다. 그래서 나는 티스토리 글과 MathJax 모듈이 DOM에 모두 준비된 후에, typeset 함수를 실행해주면 되는것이었다. 그렇다면, 이것을 어떻게 구현할 수 있을까?

 

티스토리는 [## title ##] 처럼 앞뒤가 이상한 괄호로 둘러쌓인 치환자가 포함된 HTML을 제공하면, 그것을 블로그 스킨으로 사용할 수 있도록 지원한다. 이 HTML 코드는 티스토리의 어드민 화면에서 직접 수정할 수 있는데, 여기에는 많은 문제점이 뒤따른다. 이 문제점들을 해소할 수 있는 pronist/tidory라는 오픈소스 프레임워크가 있으며, 이 프레임워크로 개발된 pronist/hello 스킨의 fork을 내 블로그는 2025년 현재 사용중이다.

 

다행히도, 이 코드베이스에는 글의 로딩이 완료된 시점에 호출되는 이벤트리스너(alpine:init)의 코드가 이미 있었다. 그래서 티스토리 글의 로딩이 완료된 시점을 파악하는 것은 매우 쉬웠다. 또, MathJax는 <script> 태그를 통해 호출되기에, 이 태그의 onload 를 이용하면, MathJax 모듈 로딩이 완료된 시점도 알 수 있었다.

 

해당 작업 커밋의 링크를 공유하고, 글을 마친다.

저작자표시 (새창열림)

'일상이야기' 카테고리의 다른 글

구직까지 6개월, 무엇을 해야 할까?  (0) 2025.12.22
취미로 백준을 풀어보려는 사람에게  (0) 2025.07.28
윈도우 PC와 맥북을 듀얼모니터로 함께 사용하던 책상 근황  (0) 2025.05.20
구글 검색시, 티스토리 블로그 나만의 파비콘 노출시키기  (3) 2023.10.19
윈도우 PC와 맥북을 듀얼모니터로 함께 사용하기  (17) 2023.09.09
'일상이야기' 카테고리의 다른 글
  • 구직까지 6개월, 무엇을 해야 할까?
  • 취미로 백준을 풀어보려는 사람에게
  • 윈도우 PC와 맥북을 듀얼모니터로 함께 사용하던 책상 근황
  • 구글 검색시, 티스토리 블로그 나만의 파비콘 노출시키기
준별
준별
  • 준별
    준별개발
    준별
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • 개발이야기 (25)
        • 토막글 (11)
      • 일상이야기 (6)
      • 개인 공부 (23)
      • 생각과 기록 (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Linkedin
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    http pipelining
    정보보호개론
    실전압축
    이산구조
    맥북터미널세팅
    http1.1
    persistent connection
    바이브코딩
    맥북세팅
    powerlevel10k
    클램쉘
    맥북초기세팅
    http1.0
    zsh세팅
    터미널꾸미기
    필수툴
    맥북
    데이터베이스
    nodejs
    k9s
    http2.0
    http3.0
    nestjs
    전산기조직
    터미널세팅
    조합형
    zsh-autosuggestion
    Zsh
    데스크셋업
    artillery
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
준별
스킨을 적용한 티스토리 블로그에서 MathJax로 수식 입력하기
상단으로

티스토리툴바