Hoze 2020. 5. 13. 17:07

lwarp는 .tex을 HTML로 변환한다. 

\usepackage[mathjax]{lwarp}

어떤 패키지는 lwarp 앞에, 다른 패키지는 lwarp 다음에 불러야 하는데, 컴파일할 때 에러 메시지가 알려주는 대로 고치면 된다.

#>xelatex foo
#>lwarpmk html 

lwarpmk가 .tex 파일을 곧바로 읽어서 변환하는 게 아니라, lwarp 패키지가 다른 패키지들, 이를테면 amsmath 패키지의 매크로들에 대한 이런저런 규칙이나 정보들을 PDF에 심는 것 같다. 그래서 lwarpmk가 .tex도 참조하겠지만 적지 않은 부분을 PDF에서 가져다가 html로 만드는 게 아닌가 싶다.

다음과 같은 사용자 정의 매크로는 당연히 무시된다. 

\newcommand\my[1]{{\Huge\itshape\bfseries #1}}

해법은 두 가지이다. 

\begin{warpHTML}
\renewcommand\my[1]{\ begin{lateximage}\Huge\itshape\bfseries #1\ end{lateximage}}
\end{warpHTML}

warpHTML 환경은 HTML 출력에만 관여한다. 레이텍은 이를 무시하고 lwarpmk가 이를 이용하는 것 같다. \my 매크로에 의한 결과는 (PDF로부터 추출하여) SVG 이미지로 바뀐다. 

더 근사해 보이지만 그만큼 골치아픈 해법은 <div> 클래스로 변환되게 지정하고, 그에 대한 스타일을 CSS에 추가하는 것이다.

\begin{warpHTML}
\renewcommand\my[1]{\ begin{BlockClass}{my}#1\ end{BlockClass}}
\end{warpHTML}

CSS에는 이렇게

div.my{
    font-style: italic;
    font-weight: bolder;
    font-size: 400%
}