아름다운 수식을 커맨드 라인에서 만들어 내고 싶다!

하고 싶은 일



명령 줄에서 저하되지 않는 SVG 형식의 수식을 만들고 싶습니다. (PNG도 생성할 수 있습니다)

브라우저를 사용하여 온라인으로 TeX 표기법 수식을 이미징하는 웹 사이트가 이미 있습니다.
하지만 다음과 같은 문제가 있습니다.
  • 외부에 업로드 필요
  • 스크립트에서 자동화하기 어려움

  • 따라서 아름다운 SVG 형식의 수식
  • 로컬 내에서만 완결하여 생성
  • 스크립트 등으로 자동화하기 쉬운 방법

  • 에서 만드는 방법의 소개입니다.

    설치



    npm 에서 다음 명령을 사용하면 math2image 명령으로 설치할 수 있습니다. 명령으로 사용하기 때문에 -g 옵션으로 install 해 버립니다.
    npm install -g math2image
    

    GitHub 리포지토리



    GitHub : htps : // 기주 b. 이 m / n wtgck / th2math2image라는 이름으로 개발하고 있습니다.

    사용법


    echo 를 사용하여 수식을 math2image 명령에 전달하면 SVG 이미지를 생성할 수 있습니다.
    echo "e^{i \pi} + 1 = 0" | math2image > euler_identity.svg
    


    (Qiita는 SVG를 표시 할 수없는 것 같기 때문에 PNG입니다)

    파이프로 수식을 전달할 수 있으므로 중간 파일 없이 SVG를 생성할 수 있습니다. SVG의 표준 출력에 낼 수 있으므로, 그것을 파이프 해 JPEG로 하는 등, 파이프를 연결해 다른 형식으로 변환하는 것도 가능할 것입니다.

    다음과 같이 조금 복잡해질 수 있습니다.
    echo "\sum_{n=0}^∞\frac{f^{(n)}(a)}{ n! }(x-a)^n" | math2image > taylor_series.svg
    



    파일에서 만들기



    아래 내용의 sample7.math.tex 를 준비해, (확장자는 무엇이든 OK입니다)

    sample7.math.tex
    % (from: https://en.wikibooks.org/wiki/LaTeX/Mathematics)
    f(n) =
    \begin{cases}
      n/2       & \quad \text{if } n \text{ is even}\\
      -(n+1)/2  & \quad \text{if } n \text{ is odd}
    \end{cases}
    

    다음과 같이 실행하면 sample7.math.tex.svg로 생성됩니다.
    math2image sample7.math.tex
    



    지정된 파일 경로에 저장



    파일명・파일 패스를 지정하고 싶을 때는 -o 옵션으로 지정으로 합니다. 다음 예제에서는 out/euler_identity.svg에 저장됩니다.

    echo "e^{i \pi} + 1 = 0" | math2image -o out/euler_identity.svg
    

    .png 형식으로 저장


    --to-png 옵션과 --png-width=500를 지정하면 투명 png로 깨끗하게 저장할 수 있습니다.

    echo "e^{i \pi} + 1 = 0" | math2image --to-png --png-width=500 > euler_identity.png
    

    사용하는 기술



    MathJax 을 이용하고 있습니다. MathJax는 Qiita의 ```math 의 하이라이트 기능에서도 사용되고 있는 기능으로 TeX 기법의 수식을 브라우저(JavaScript 등)에서 생성할 수 있는 기술입니다.
    참고 : Qiita 수식 치트 시트 - Qiita

    이 MathJax를 Node.js에서 사용하려면 mathjax-node을 사용합니다.

    PNG 생성은 svg2png을 사용하고 있으며 내부에서는 PhantomJS에서 svg에서 PNG로 변환하는 것 같습니다. 2년 정도 전에 개발이 멈추고 있기 때문에, 가능한 한 파괴적인 변경을 하지 않고 다른 라이브러리에 이행할 수 있으면 좋겠습니다.

    수식 이외도 생성할 수 있다!



    MathJax로 생성할 수 있는 것이라면 무엇이든 생성할 수 있을 것이므로, 수식에 한정하지 않고 테이블(표)등도 생성 가능합니다.

    보고 즐거운 MathJax에서 생성하는 아름다운 수식 사이트를 발견했습니다. 표라든지 교환 도식이었습니다. math2image 하지만 사용할 수 있어야 합니다.
    Easy Copy MathJax

    좋은 웹페이지 즐겨찾기