Community라이팅 & 에디팅github.com

mgubi/texmacs

GNU TeXmacs 문서(.tm)를 읽고, 쓰고, 변환하고, 조판합니다. .tm 파일, TeXmacs 앱, LaTeX/beamer를 네이티브 TeXmacs로 변환, TeXmacs 프레젠테이션, TikZ 플러그인, 또는 TeXmacs를 헤드리스로 PDF로 내보내는 작업과 관련된 모든 경우에 사용합니다.

texmacs란 무엇인가요?

이 스킬은 AI 에이전트가 GNU TeXmacs 문서(.tm)를 효과적으로 다룰 수 있도록 설계되었습니다. TeXmacs는 구조화된 문서 편집기로, LaTeX와 유사한 조판 품질을 제공하지만 자체적인 고유 파일 형식을 사용합니다. 이 스킬은 파일 형식의 세부 사항(Cork/T1 인코딩, stree 표현), 헤드리스 변환 파이프라인(TeXmacs 명령줄 도구와 Scheme API 활용), HTML 내보내기(MathJax 통합, 사용자 정의 스타일 패키지), LaTeX 및 Beamer 변환, 프레젠테이션 처리 등을 다룹니다. 또한 스킬 문서를 최신 상태로 유지하고 프로젝트별 확장을 위한 지침을 제공합니다. 주로 macOS와 Linux에서 Claude Code와 같은 에이전트와 함께 사용되며, 복잡한 TeXmacs 워크플로우를 자동화하여 수동 편집 오류를 방지합니다.

지원 대상✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/mgubi/texmacs-skill/tree/HEAD

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

TeXmacs 문서

GNU TeXmacs 작업을 위한 에이전트 실용 가이드입니다. 강의 노트와 발표 자료를 변환하고, 스타일 패키지를 작성하고, 긴 수학 원고를 감사하면서 수집된 내용입니다. 계속 업데이트하세요: 새로 배운 내용은 "주의사항"에 추가하고, scripts/ 디렉토리의 스크립트가 계속 작동하도록 유지하세요. 프로젝트별 추가 사항은 이 스킬을 참조하는 별도의 로컬 스킬에 속합니다. "규칙(필수)" 섹션은 모든 곳에 적용됩니다. 출처: https://github.com/mgubi/texmacs-skill. 마지막 업데이트: 2026-11-04.

이 스킬을 최신 상태로 유지하기

이 스킬은 git 클론으로 설치됩니다(보통 ~/.claude/skills/texmacs). TeXmacs 문서 작업을 시작하기 전에:

  • 업데이트: git -C <스킬 디렉토리> pull --ff-only를 실행합니다(GitHub에 대한 SSH가 실패하면 https://github.com/mgubi/texmacs-skill.git main에서 풀). 클론에 푸시되지 않은 로컬 변경 사항이나 커밋이 있으면 덮어쓰지 말고 사용자에게 알립니다.
  • 기여: TeXmacs에 대한 새로운 내용을 배웠을 때 여기에 추가하고(보통 "주의사항"에, 또는 스크립트 수정), 클론에 커밋하고 GitHub에 푸시합니다(푸시할 수 없으면 풀 리퀘스트를 엽니다). 모든 설치에서 이를 받아볼 수 있도록 합니다. 프로젝트별 자료는 프로젝트에 남겨둡니다.

파일 형식

  • .tm 파일은 직렬화된 트리입니다. <tag|arg1|arg2> 인라인, <\tag>…</tag>(인수 사이에 <|tag>) 블록 인수, 문단은 빈 줄로 구분되며 들여쓰기는 레이아웃 전용입니다. 문자열 내부에서 \<alpha\>는 기호이고, <less>/<gtr>는 </>이며, \|는 리터럴 막대, <#89AB…>는 16진수 원시 데이터(내장 이미지)입니다.

  • 인코딩: 문자열은 Cork(T1)로 인코딩되며 UTF-8이 아닙니다. 악센트가 있는 라틴 문자는 대부분 Latin-1 바이트와 일치합니다(é = 0xE9, à = 0xE0, ö = 0xF6). 그러나 예를 들어 en 대시 = 0x15, em 대시 = 0x16, § = 0x9F입니다. 다른 유니코드 문자는 <#XXXX>(16진수 코드 포인트)로 작성됩니다. 독립형 토큰으로 <#XX>를 직접 작성하지 마십시오. 원시 데이터로 읽힙니다("스타일 패키지 작성" 참조). 결과: UTF-8 도구로 .tm을 편집하지 마십시오(Edit/Write 도구가 거부하거나 손상시킴). Python으로 encoding='latin-1', newline=''를 사용하여 읽고 쓰거나, 더 나은 방법은 아래 stree 경로를 통해 TeXmacs가 파일을 쓰도록 하는 것입니다.

  • 수동으로 .tm 파일 작성: 이 스켈레톤을 정확히 복사하세요. 최상위 항목은 빈 줄로 구분됩니다. 빈 줄이 없으면 TeXmacs는 <TeXmacs|…> 헤더만 유지하고 다른 모든 것을 자동으로 삭제합니다(stree 덤프는 (document (TeXmacs "2.1.5"))가 되고 PDF는 비어 있으며 오류가 없습니다):

    <TeXmacs|2.1.5>
    
    <style|<tuple|article|british>>
    
    <\body>
      First paragraph with <math|x<rsup|2>>.
    
      Second paragraph.
    </body>
    
    <\initial>
      <\collection>
        <associate|font|TeX Gyre Pagella>
      </collection>
    </initial>
    

    <\body> 내부의 문단들(그리고 모든 <\tag>…</tag> 블록)도 빈 줄로 구분됩니다. 단일 개행은 같은 문단을 계속합니다. 모든 블록 태그를 자체 줄에 닫고, 기호는 \<alpha\>로 이스케이프하고 텍스트 내의 리터럴 <, >, |는 <less>, <gtr>, \|로 이스케이프하며, 파일을 Cork/Latin-1로 유지합니다(ASCII가 아닌 문자가 포함되는 즉시 printf나 Write 도구가 아닌 Python으로 작성).

  • 수동 작성보다 생성을 선호합니다. 몇 줄 이상의 경우 Python으로 stree를 빌드하고(scripts/latex2tm/stree.py) TeXmacs가 직렬화하도록 합니다(dump.scm의 tm-undump). 또는 조각을 작성하고 tm-dump한 다음 트리를 접합합니다. 수동으로 작성할 때는 사용하기 전에 결과를 확인하세요: tm-dump하여 본문에 예상된 수의 문단이 있는지 확인하거나, 조판하여 PDF 텍스트가 비어 있지 않고 완전한지 확인합니다(mutool draw -F txt). 비어 있거나 짧은 PDF, 또는 하나의 거대한 노드가 있는 덤프는 TeXmacs 버그가 아니라 형식 오류를 의미합니다.

  • 큰 파일: 발표 자료는 이미지를 원시 데이터로 포함합니다(10MB 이상). 읽기 전에 <#…> 실행을 제거합니다: re.sub(r'<#[0-9A-F]{200,}>', '<#HEX>', s).

TeXmacs 헤드리스 실행

바이너리(macOS): /Applications/TeXmacs.app/Contents/MacOS/TeXmacs; Linux에서는 texmacs. 2.1.4 및 2.1.5에서 테스트되었습니다. scripts/latex2tm/run.sh에 경로가 있습니다. 필요시 그곳에서 조정하십시오.

  • 변환: TeXmacs -headless -c in.tex out.tm -q (LaTeX 가져오기), -c in.tm out.pdf -q (현재 버퍼의 PDF).
  • Scheme: TeXmacs -headless -x "(begin (load \"/abs/dump.scm\") … (quit-TeXmacs))". 본문을 항상 (catch #t (lambda () …) (lambda args (display args)))로 감싸고 (quit-TeXmacs)로 끝내야 합니다: 그렇지 않으면 오류가 발생했을 때 프로세스가 영원히 멈춥니다. 백그라운드에서 실행하고 PID를 폴링합니다(scripts/latex2tm/run.sh 참조). 해당 PID만 종료하십시오 — 절대 pkill TeXmacs를 사용하지 마십시오(사용자가 TeXmacs를 열어놓았을 수 있음).
  • 헤드리스 실행은 TeXmacs 자체 상태를 ~/.TeXmacs/system 아래에 씁니다. 이는 정상입니다.

헤드리스에서 작동하는 Scheme API (scripts/latex2tm/dump.scm)

  • (tree-import (string->url f) "texmacs") / "latex", 그리고 (tree-export t (string->url f) "texmacs"): 파일 ↔ 트리(버퍼 없음).
  • (tree->stree t) / (stree->tree s): s-표현식. (call-with-output-file f (lambda (p) (write s p)))로 작성합니다 — with-output-to-file은 TeXmacs의 Guile에서 리디렉션되지 않습니다. Guile은 제어 문자를 \xHH 이스케이프로 씁니다(scripts/latex2tm/stree.py에서 처리됨).
  • 조판: (load-buffer u) (switch-to-buffer u) (export-buffer-main u (string->url pdf) "pdf" (list)) — PDF 내보내기가 조판을 수행합니다. (update-document "all")은 헤드리스에서 아무것도 하지 않습니다(지연된 유휴 명령). 직접 (generate-all-aux) (update-current-buffer)를 호출하여 목차/참고 문헌을 채우고 다시 내보낸 다음 (buffer-pretend-modified u) (buffer-save u)를 호출하여 <\references>를 저장합니다. 새로운 파일은 모든 참조가 해결되기 전에 **두 번의 조판 실행(별도 프로세스에서 각각 실제 PDF 내보내기 포함)**이 필요합니다(scripts/latex2tm/typeset.sh). 항상 (list :overwrite)를 옵션으로 내보내십시오: 헤드리스에서 export-buffer-main은 그렇지 않으면 기존 파일을 교체할 것인지 확인을 요청하고 아무도 응답하지 않으며 내보내기가 자동으로 건너뜁니다(mgubi/texmacs#807). dump.scm의 tm-typeset과 tm-html이 이 작업을 수행합니다.
  • 프레젠테이션(screens)은 현재 화면만 내보냅니다. 시각적 확인을 위해 new-page*로 구분된 페이지로 평면화된 슬라이드로 미리보기 사본을 빌드하십시오(scripts/latex2tm/preview_slides.py). 스크린 버전을 전달하십시오.
  • mutool draw -r 60 -o p%d.png file.pdf 및 magick montage … -tile 4x1 -geometry +4+4로 출력을 확인하고, mutool draw -F txt -o - file.pdf로 텍스트를 확인하십시오(해결되지 않은 참조에 대한 ? 개수).

HTML 내보내기

HTML 사용자 정의는 TeXmac스 내부에서 수행하십시오: 스타일 패키지(또는 플러그인)가 내보내기 변수를 설정하고 매크로의 tmhtml- 렌더링을 제공합니다. 웹사이트는 TEXMACS_HOME_PATH가 사이트의 플러그인 폴더를 가리키고 (style-clear-cache)와 함께 tmweb-convert-dir로 디렉토리를 내보내 구축됩니다. 생성된 HTML을 스크립트로 후처리하지 마십시오.

일반적인 수정 사항을 하나의 플러그인에 모으십시오 (아래에서는 max-html이라고 하며 ~/.TeXmacs/plugins/max-html로 링크됨). 문서별 설정은 문서의 패키지에 유지하십시오. 이러한 플러그인은 다음을 보유합니다:

  • progs/max-html/fixes.scm: 시작 시 로드되며 MathJax 내보내기를 수정합니다. 수식 내부의 레이블은 앵커를 가져오고(#617), \ring은 \mathring으로 작성되며(#607), equations-base는 aligned로 작성됩니다(#611). 이는 (convert html tmhtml) 내부에서 tmhtml-mathjax-formula*의 바인딩을 대체하고(module-variable + variable-set!; cork->html과 같은 내부 헬퍼는 module-ref로), latex-mathjax를 tm-define … (former x)로 확장합니다.

  • max-html 패키지(기사): 프레임이 있는 정리, 목록 레이블 및 내용 사이드 패널 div.max-toc를 제공합니다. max-html-slides 패키지는 슬라이드 뷰어와 tmhtml-mytitle/myframed/myframed-2를 제공합니다.

  • resources/는 max-html.css/js 및 max-html-slides.css/js를 보유하며 페이지 옆에 복사됩니다. 문서 패키지는 <use-package|max-html>을 사용하고 전체 html-extra-css 튜플을 다시 할당합니다(플러그인 파일 먼저): merge는 작동하지 않습니다. 내보내기가 변수를 평가되지 않은 상태로 읽기 때문입니다. 글꼴은 CSS 변수입니다(--max-text-font, --max-slide-font).

  • HTML 내보내기에 대한 일반적인 수정은 플러그인으로 들어갑니다. 문서별 항목(글꼴, 파비콘, 발표 매크로)은 문서의 패키지로 들어갑니다.

  • 내보내기: scripts/latex2tm/dump.scm의 (tm-html in out mathjax?) (환경설정 texmacs->html:mathjax|css|images, 그 다음 (export-buffer-main u (string->url "x.html") "html" (list))). 조판된 .tm을 내보냅니다(저장된 <\references>가 번호를 제공함). doc.tm#label 링크는 doc.html#label이 됩니다. 이미지는 페이지 옆에 <base>-N.png가 됩니다. MathJax 3는 jsdelivr에서 제공됩니다.

  • 내보내기가 읽는 스타일 변수(스타일 패키지에서 설정): html-css (기본 인라인 css 대체), html-extra-css (추가 스타일시트 튜플, 기본 css 유지), html-extra-javascript-src (튜플, 지연됨), html-extra-javascript, html-head-javascript(-src), html-head-favicon, html-title, html-doc-title, html-site-version.

  • 매크로의 HTML 렌더링: NAME 옆에 tmhtml-NAME을 정의하십시오. 내보내기는 NAME 대신 이것을 사용합니다. 이를 위한 마크업 헬퍼: html-div-class|class|body (블록), html-class|class|body (인라인 스팬), html-style, html-div-style, html-attr, html-tag, html-javascript. 이는 스타일 패키지에 정의된 매크로에서만 작동합니다. 문서의 hide-preamble에 할당된 매크로는 내보내기 전에 확장되어 tmhtml- 변형이 무시됩니다. 따라서 프레젠테이션 매크로를 패키지에 넣으십시오.

  • 문서 옆에 있는 foo.ts 패키지는 스타일 튜플이 foo를 나열할 때 발견됩니다. 패키지를 편집한 후에는 (style-clear-cache)를 호출하십시오(TeXmacs는 스타일 환경을 ~/.TeXmacs/system/cache에 캐시함). 그렇지 않으면 이전 정의가 사용됩니다.

  • 목차(및 기타 생성된 목록): 항목은 이미 확장된 상태로 보조 데이터에 기록됩니다(write는 인수를 평가함). 따라서 toc-main-*/toc-1…5 주변의 래퍼는 사라지고 해당 tmhtml- 변형은 절대 표시되지 않습니다. 오직 외부 table-of-contents 매크로만 tmhtml- 렌더링을 가질 수 있습니다. 확장 및 내보내기에서 살아남는 마커: <b> (굵은 섹션), <with|font-size|…> → <font style=…>, font-shape → <i>/작은 대문자, color → <font color>; par-left 들여쓰기는 사라집니다. 각 항목은 <a href="#auto-N">page</a>로 끝납니다. 사이드 패널 레시피(플러그인 패키지 max-html): tmhtml-table-of-contents → 왼쪽에 고정된 div.max-toc; .max-toc p a[href^="#auto-"] {position:absolute; inset:0; font-size:0}로 페이지 링크를 숨기고 늘립니다(href로 선택: 제목의 eqref도 링크임); 중첩된 <with|font-size|0.92|…>로 toc-3…5를 재정의하여 문단 수준 항목을 표시하고 p:has(> font)를 선택합니다. toc-* 매크로를 변경한 후 TOC를 재생성합니다(두 번의 조판 실행).

  • 패널에서 현재 섹션 강조 표시는 JavaScript가 필요합니다: max-html.js (플러그인), 패키지의 html-extra-javascript-src로 첨부됨; 각 항목의 #auto-N 링크를 해당 id를 가진 제목에 매핑하고, 뷰포트의 25% 위에 있는 마지막 제목을 표시하며(p.toc-current 및 상위 굵은 p.toc-current-section) 패널을 스크롤하여 계속 보이게 합니다.

  • 프레임이 있는 정리(Joris van der Hoeven의 웹 기사, 예: texmacs.org/joris/fftcomp; 모델은 TeXmacs의 styles/article/texmacs/tmarticle.ts임): tmhtml-render-theorem → <html-div-class|theorem|<render-enunciation|…>> 및 <html-class|enunciation-name|which>로 tmhtml-render-enunciation을 정의합니다. 정리, 명제, 보조 정리, 따름정리 및 정의는 render-theorem을 사용하는 반면, 주의 및 증명은 render-remark를 사용합니다. Joris의 css(texmacs.org/css/theme-dark-colored.css)는 .theorem {border: 1px solid; border-left: 1em solid; padding: 0 1em}입니다. 흐릿한 색상과 .5em 막대도 잘 작동합니다(max-html.css). 이것은 HTML 전용입니다. PDF는 변경되지 않습니다. 색상(Joris 테마에서와 같이): h1…h6, strong, b, dt, .enunciation-name은 흐릿한 어두운 빨간색으로, MathJax 출력은 mjx-container {color: …}로; TOC 패널 내부의 b는 재설정합니다.

  • HTML 내보내기는 모든 enumerate-alpha|Alpha|roman을 일반 <ol>(십진 레이블)로 바꿉니다. 수정: tmhtml-enumerate-alpha → <html-div-class|enum-alpha|<enumerate|…>> 더하기 .enum-alpha > ol > li::marker {content: "(" counter(list-item, lower-alpha) ") "}.

  • MathJax: 컨버터는 링 악센트 <abovering>을 \ring{…}(LaTeX 패키지 악센트)로 작성하는데, MathJax에는 없습니다(mgubi/texmacs#607). 플러그인에 의해 수정됩니다. 페이지 수준 대안은 html-extra-javascript의 인라인 MathJax 구성(MathJax <script> 앞에서 실행됨)입니다: window.MathJax = {tex: {macros: {ring: [String.fromCharCode(92) + 'mathring{#1}', 1]}}}.

  • MathJax: equation 내부의 aligned는 HTML 내보내기에 의해 equations-base로 사전 확장되어 \begin{equationsbase}로 MathJax에 도달합니다(mgubi/texmacs#611). 플러그인에 의해 수정됩니다. 페이지 수준 대안은 해당 구성의 environments: {equationsbase: […aligned…]}입니다.

  • 내보내기의 모든 수식을 확인하려면 scripts/mathjax-check/를 사용하십시오: 임시 deps/ 폴더에 npm install [email protected]를 설치하고, python3 extract.py HTMLDIR formulas.json을 실행하고(HTML 파서 사용: \(t < \infty\)의 원시 <는 브라우저에서와 같이 텍스트임) node check.js deps/node_modules formulas.json을 실행합니다. noundefined 패키지 없이 모든 수식을 렌더링하고(브라우저에서 정의되지 않은 매크로를 빨간색으로 자동 표시함) 오류를 그룹화합니다. 빈 수식(별도로 \(\displaystyle \) 개수)이나 끊어진 링크는 확인하지 않습니다. 또한 모든 내부 href="…x"에 일치하는 id="x"가 있는지 확인하십시오.

  • 슬라이드: css max-height로 좁혀진 width=100% 이미지는 문단 왼쪽에 남습니다. div.toggle img.image {display: block; margin: 0 auto}로 중앙에 배치하십시오.

  • 헤드리스 Firefox: user.js의 다크 모드 content-override 기본 설정이 적용되지 않았습니다. 확인하려면 about:config를 열고 확인하십시오.

LaTeX에서 변환 (scripts/latex2tm/)

  • py/tm_package/의 Python 패키지는 LaTeX 매크로를 검사하고 TeXmacs 스타일 파일을 생성하기 위한 것입니다(scripts/tex2tm/README.md에 문서화됨).
  • latex2tm.py를 사용하여 LaTeX 파일을 변환하고 강제로 스타일을 지정하십시오: TeXmacs의 -c(느리고 네이티브 LaTeX가 필요하며 중첩된 \input을 따르지 않음) 대신 사용하십시오. latex2tm.py in.tex out.tm article max-html은 LaTeX를 article 패키지(및 플러그인 max-html)가 있는 .tm 파일로 변환하고 \includegraphics 경로를 유지하며 \cite를 <cite|bib:key>로, \ref/\label을 <reference|bib:key>/<label|bib:key>로 바꿉니다. 모든 비표준 LaTeX 명령을 자동으로 감지하여 변환하거나(식별된 것은 tex2tm/packages/에 있음) 경고를 출력합니다. parse_latex.py는 latexxml(PyPI) latexwalker를 사용하여 LaTeX를 구문 분석합니다: displaymath를 제외한 모든 환경을 처리하고, 선택적 인수, 중첩된 그룹을 올바르게 처리하며(LaTeXML보다 더 잘함) \text를 일반 텍스트로 출력합니다. \ref{fig:1} → <reference|fig:1>.
  • Beamer 슬라이드의 경우: latex2tm.py talk.tex talk.tm slides max-html-slides는 max-html-slides 패키지를 사용하여 slides 스타일로 변환합니다. \frame은 <render-frame|title|body>가 되고, 블록 환경은 <render-block|title|body>가 됩니다. \only/\uncover/\visible/\invisible은 각각 <render-overlay|…> / <render-uncover|…> / <render-visible|…> / <render-invisible|…>로 변환됩니다. \makebox[\textwidth]{…}는 외부에 있는 경우 <with|par-columns|1|…>가 됩니다. 나머지 사용자 정의는 수동으로 TeXmacs 매크로를 작성해야 할 수 있습니다: render-frame의 정의를 수정하여 \item에 대한 표준 증분 오버레이를 추가합니다(예: \item<3->는 <render-uncover|3-|\item| …>가 됨). scripts/latex2tm/texmacs_talk/에서 몇 가지 예를 참조하십시오.
  • Beamer에는 표준 \begin{columns}[T] … \end{columns}가 있으며, 이는 사용자 정의 매크로 render-columns(패키지에 정의됨)로 변환됩니다: <render-columns|<render-column|0.5|<content>>|<render-column|0.5|<content>>>.
  • 변환에는 두 번의 패스가 필요합니다. 첫 번째 패스는 LaTeX를 구문 분석하고 원시 TeXmacs 트리를 생성하며, 두 번째 패스는 <render-*> 매크로를 오버레이가 있는 실제 screens 구조로 확장합니다. 대규모 문서(100개 이상의 슬라이드)의 경우 각 슬라이드를 개별적으로 변환하고 연결하거나 scripts/latex2tm/split_talk.py를 사용하십시오: 각 \begin{frame}을 별도의 .tm으로 분할하고, 각각 변환한 다음 <merge|file1.tm|file2.tm|…>를 사용하여 단일 talk_complete.tm으로 병합합니다. run.sh에는 --merge 플래그가 있습니다.

내보내기 파이프라인 (scripts/latex2tm/typeset.sh)

typeset.sh source.tm은 source.tm을 두 번 조판하여 모든 참조를 확인한 다음 source.pdf를 생성합니다(두 번째 조판 후 참조를 저장하기 위해 (buffer-pretend-modified) (buffer-save)를 사용함). -p 플래그를 사용하여 preview_slides.py를 호출하고 플랫 프레젠테이션 사본을 만듭니다. 출력 디렉토리는 typeset.sh에 인수로 전달되거나 현재 디렉토리로 기본 설정됩니다. -j 플래그를 사용하여 HTML도 내보내고 -m을 사용하여 MathJax를 활성화합니다.

주의사항

초보자를 위한 메모와 함정입니다. 항상 목록의 첫 번째 항목으로 새로 배운 내용을 추가합니다.

  1. 부동체 및 참조: 부동체(figure, table)는 typeset.sh로 조판할 때 tmhtml- 변형이 없으면 HTML 내보내기에서 무시됩니다. 각 figure 환경에 tmhtml-figure를 정의하십시오. \label이 있는 부동체는 (generate-all-aux)를 호출하여 참조를 채웁니다. 결과 tm 파일에는 <\references> 블록이 있습니다. HTML 내보내기 전에 이 블록이 존재하는지 확인하십시오. 새로 생성된 tm 파일은 참조가 확인되기 전에 두 번의 조판 실행이 필요합니다.
  2. TeXmacs 버전: TeXmacs 2.1.4는 export-buffer-main에서 :overwrite 옵션을 지원하지 않습니다(mgubi/texmacs#807). 2.1.5로 업그레이드하거나 헤드리스 내보내기 전에 파일을 수동으로 삭제하십시오.
  3. 파일 인코딩: 항상 .tm 파일을 Latin-1(Cork)로 작성하십시오. UTF-8로 작성하면 TeXmacs가 파일을 열 때 문자를 자동으로 변환하려고 시도하지만 <#XX> 이스케이프가 손상될 수 있습니다. Python open은 encoding='latin-1'을 사용해야 합니다. Vim의 경우 :set encoding=latin1을 사용하십시오.
  4. TOC 내보내기: tmhtml-table-of-contents는 dump.scm에 정의되어 있으며 export-buffer-main이 호출될 때 사용됩니다. TOC가 올바르게 렌더링되려면 두 번의 조판 실행이 필요합니다. dump.scm의 tm-html 함수는 첫 번째 패스에서 aux 데이터를 생성합니다. 두 번째 패스는 이를 읽어 TOC를 구성합니다. scripts/latex2tm/typeset.sh에서 이 작업을 처리합니다. (style-clear-cache)를 잊지 마십시오.
  5. TikZ 플러그인: TikZ 플러그인은 .tm 파일에 TikZ 코드를 포함시킵니다. 내보낼 때 플러그인이 설치되어 있어야 합니다. TEXMACS_HOME_PATH가 플러그인 디렉토리를 가리키는지 확인하십시오. 그렇지 않으면 TikZ가 렌더링되지 않습니다. 로컬 테스트를 위해 ~/.TeXmacs/plugins/tikz에 심볼릭 링크를 만드십시오.
  6. 이미지 경로: HTML 내보내기는 <image|path|...>에서 이미지 경로를 기대합니다. path는 HTML 파일을 기준으로 합니다. LaTeX에서 변환할 때 latex2tm.py는 이미지 경로를 상대 경로로 변환하려고 시도합니다. 그러나 <#HEX>로 내장된 이미지는 내보낼 수 없습니다. 수동으로 추출해야 합니다.
  7. 빈 식별자: dump.scm의 tm-html 함수는 export-buffer-main을 호출하기 전에 (generate-all-aux)를 호출합니다. (generate-all-aux)를 호출한 후 export-buffer-main을 호출하지 않으면 참조가 저장되지 않습니다. typeset.sh를 사용하면 이 작업이 자동으로 처리됩니다.
  8. \TeX 매크로: \TeX 매크로는 tmhtml- 변형 없이 HTML 내보내기에서 TeX로 확장됩니다. max-html 패키지에 tmhtml-TeX를 정의하여 <span class="tex">T<sub>E</sub>X</span>를 렌더링하십시오.
  9. 스크립트 경로: 모든 스크립트는 texmacs-skill 루트를 기준으로 합니다. 스크립트를 실행할 때 스크립트가 있는 디렉토리에서 상대 경로를 사용해야 합니다. run.sh는 적절한 경로 설정을 처리합니다.
  10. 오버레이가 있는 Beamer: \only<2->{...}는 render-overlay로 변환되지만 \only 내부의 문법적으로 유효하지 않은 TeX는 변환기에 의해 구문 분석되지 않을 수 있습니다. 변환하기 전에 각 오버레이 사양이 올바른지 확인하십시오. 특히 \pause는 render-uncover로 변환되지 않습니다. \pause를 수동으로 대체하십시오.
  11. HTML과 MathJax: MathJax로 내보내기를 확인할 때 extract.py가 빈 수식을 놓칠 수 있습니다. 또한 모든 수식이 \(\)로 올바르게 래핑되었는지 확인하십시오. MathJax가 \displaystyle를 인식하지 못하면 check.js가 오류를 보고합니다.
  12. 플러그인 구조: max-html 플러그인은 progs/, resources/ 및 선택적으로 styles/ 디렉토리가 있어야 합니다. 누락된 부분이 있으면 TeXmacs가 시작 시 플러그인을 로드하지 못할 수 있습니다. ~/.TeXmacs/plugins/max-html에서 올바른 구조를 확인하십시오.
  13. dump.scm의 catch: catch를 사용하면 TeXmacs가 헤드리스 모드에서 충돌하는 것을 방지할 수 있습니다. 하지만 모든 오류를 자동으로 잡아내지는 않습니다. 예를 들어, 존재하지 않는 파일을 로드하려고 하면 load-buffer가 오류를 발생시키고 catch가 이를 잡아내지 못해 프로세스가 중단됩니다. 항상 파일이 존재하는지 먼저 확인하십시오.
  14. (quit-TeXmacs) 누락: -x 인수로 Scheme 코드를 실행할 때 코드 끝에 (quit-TeXmacs)를 포함하지 않으면 프로세스가 영원히 실행됩니다. run.sh는 제한 시간을 추가하지만 이상적이지 않습니다.
  15. git pull 실패: git pull --ff-only가 로컬 변경 사항으로 인해 실패하면 강제로 푸시하지 마십시오. 사용자에게 알리고 수동으로 해결하도록 하십시오.
  16. 글꼴: HTML 내보내기에서 CSS 변수 --max-text-font 및 --max-slide-font를 사용하여 글꼴을 설정하십시오. 기본값은 TeXmac스의 기본 글꼴(TeX Gyre Pagella)입니다. max-html.css에서 재정의할 수 있습니다.
  17. html-extra-css: 이 변수는 튜플이며 플러그인 CSS가 먼저 옵니다. 문서 패키지에서 html-extra-css를 재정의하면 플러그인의 CSS가 재정의됩니다. 플러그인 CSS를 유지하려면 패키지의 html-extra-css에 플러그인 CSS를 포함시키거나 merge를 사용하십시오(작동하지 않을 수 있음을 명심).
  18. html-extra-javascript-src: 이 변수는 튜플이며 JavaScript 파일이 지연(defer) 속성과 함께 로드됩니다. 스크립트는 DOMContentLoaded 이벤트 후에 실행됩니다. max-html.js는 이 이벤트를 기다립니다.
  19. 헤드리스 Firefox: Firefox를 헤드리스 모드(예: SVG로 내보내기)로 사용하는 경우 user.js에서 content-override를 설정해도 적용되지 않을 수 있습니다. TMPDIR 환경 변수를 설정하여 캐시 문제를 해결하십시오.
  20. 오래된 캐시: (style-clear-cache)를 호출하지 않고 스타일 패키지를 편집하면 이전 정의가 사용됩니다. 항상 스타일 패키지를 변경한 후 캐시를 지우십시오. 캐시는 ~/.TeXmacs/system/cache에 있습니다. 디버깅을 위해 rm -rf를 사용하십시오.

관련 스킬