LaTeX로 텍스트 렌더링 #

Matplotlib는 LaTeX를 사용하여 텍스트를 렌더링할 수 있습니다. 이것은 rcParams에서 설정하거나 개별 개체 에서 속성을 True 로 설정하여 활성화됩니다. LaTeX를 통한 텍스트 처리는 Matplotlib의 매우 유능한 mathtext 보다 느리지 만 다른 LaTeX 패키지(글꼴 패키지, 수학 패키지 등)를 사용할 수 있기 때문에 더 유연합니다. 특히 주 문서에서와 동일한 글꼴을 그림에 사용하려고 주의를 기울일 때 결과가 놀라울 수 있습니다.text.usetex : TrueusetexText

Matplotlib의 LaTeX 지원에는 작동하는 LaTeX 설치가 필요합니다. *Agg 백엔드의 경우 dvipng 가 추가로 필요합니다. PS 백엔드의 경우 PSfrag , dvipsGhostscript 가 추가로 필요합니다. PDF 및 SVG 백엔드의 경우 LuaTeX가 있으면 일부 사후 처리 단계의 속도를 높이는 데 사용되지만 TeX 문자열 자체를 구문 분석하는 데 사용되지는 않습니다(LaTeX만 지원됨). 이러한 외부 종속성에 대한 실행 파일은 모두PATH.

소수의 글꼴군( PSNFSS 체계로 정의됨)만 지원됩니다. 자동으로 사용되는 해당 LaTeX 글꼴 선택 명령 및 LaTeX 패키지와 함께 여기에 나열됩니다.

일반 가족

글꼴

세리프 ( \rmfamily)

Computer Modern Roman, Palatino( mathpazo), Times( mathptmx), Bookman( bookman), New Century Schoolbook( newcent), Charter( charter)

산세리프( \sffamily)

컴퓨터 모던 세리프, 헬베티카( helvet), 아방가르드( avant)

필기체 ( \rmfamily)

Zapf Chancery ( chancery)

모노스페이스( \ttfamily)

컴퓨터 현대 타자기, 택배 ( courier)

기본 글꼴 모음(LaTeX 패키지를 로드할 필요가 없음)은 Computer Modern입니다. 다른 모든 패밀리는 Adobe 글꼴입니다. Times와 Palatino에는 각각 고유한 수학 글꼴이 있으며 다른 Adobe serif 글꼴은 Computer Modern 수학 글꼴을 사용합니다.

LaTeX를 활성화하고 글꼴을 선택하려면 다음을 사용하십시오.

plt.rcParams.update({
    "text.usetex": True,
    "font.family": "Helvetica"
})

또는 동등하게 matplotlibrc 를 다음 과 같이 설정합니다.

text.usetex : true
font.family : Helvetica

대신 font.family일반 제품군 이름 중 하나로 설정한 다음 해당 일반 제품군을 구성할 수도 있습니다. 예:

plt.rcParams.update({
    "text.usetex": True,
    "font.family": "sans-serif",
    "font.sans-serif": "Helvetica",
})

(이것은 Matplotlib 3.5까지 필요한 접근 방식이었습니다).

다음은 TeX를 사용하여 수학 방정식을 렌더링 하는 표준 예제입니다 .

../../_images/sphx_glr_tex_demo_001.png

디스플레이 수학 모드( )는 지원되지 않지만 위의 데모에서와 같이 명령을 추가하면 동일한 결과가 생성됩니다.$$ e=mc^2 $$\displaystyle

ASCII가 아닌 문자(예: 위의 y 레이블의 도 기호)는 inputenc 에서 지원하는 범위 내에서 지원됩니다 .

메모

유스텍스가 아닌 경우와의 일관성을 위해 Matplotlib는 개행을 특수하게 처리하여 단일 개행이 줄 바꿈을 생성하도록 합니다(표준 LaTeX에서 공백으로 해석되지 않음).

Matplotlib는 underscore 패키지를 사용하여 밑줄( _)이 텍스트 모드에서 "있는 그대로" 인쇄됩니다(표준 LaTeX에서와 같이 오류가 발생하지 않음). 밑줄은 여전히 ​​수학 모드에서 첨자를 도입합니다.

메모

다음과 같은 특정 문자는 TeX에서 특수 이스케이프 처리가 필요합니다.

# $ % & ~ ^ \ { } \( \) \[ \]

rcParams["text.usetex"]따라서 이러한 문자는 (기본값: ) 에 따라 다르게 동작합니다 False. 위에서 언급한 것처럼 밑줄( _)은 수학 모드 외부로 이스케이프할 필요가 없습니다.

포스트스크립트 옵션 #

새 LaTeX 문서에 포함될 수 있는 캡슐화된 PostScript(EPS) 파일을 생성하기 위해 Matplotlib의 기본 동작은 출력을 추출하는 것입니다. 이렇게 하면 EPS 파일에서 불법인 LaTeX에서 사용되는 일부 PostScript 연산자가 제거됩니다. 이 단계에서는 텍스트가 거칠게 래스터화되어 표준 PostScript처럼 확장할 수 없는 비트맵으로 변환되고 텍스트를 검색할 수 없기 때문에 일부 사용자에게 적합하지 않은 결과가 생성됩니다. 한 가지 해결 방법은 rc 설정에서 rcParams["ps.distiller.res"](기본값: 6000)을 더 높은 값(아마도 6000)으로 설정하는 것입니다. 이렇게 하면 더 큰 파일이 생성되지만 더 보기 좋고 적절하게 확장될 수 있습니다. Poppler 또는 Xpdf 가 필요한 더 나은 해결 방법은 rcParams["ps.usedistiller"](기본값: None)을 다음 으로 변경하여 활성화할 수 있습니다 .xpdf. 이 대안은 텍스트를 래스터화하지 않고 PostScript를 생성하므로 크기가 적절하게 조정되고 Adobe Illustrator에서 편집할 수 있으며 PDF 문서에서 텍스트를 검색할 수 있습니다.

가능한 전화 끊기 #

  • Windows에서는PATHlatex, dvipng 및 ghostscript 실행 파일을 포함하는 디렉토리를 포함하도록 환경 변수를 수정해야 할 수 있습니다. 자세한 내용은 환경 변수Windows에서 환경 변수 설정 을 참조하십시오.

  • Computer Modern 글꼴과 함께 MiKTeX를 사용하여 *Agg 및 PNG 결과가 이상한 경우 MiKTeX/옵션으로 이동하여 형식 파일을 업데이트하십시오.

  • Ubuntu 및 Gentoo에서 기본 texlive 설치는 type1cm 패키지와 함께 제공되지 않습니다. 다른 LaTeX 배포판과 함께 번들로 제공되는 모든 기능을 얻으려면 일부 추가 패키지를 설치해야 할 수도 있습니다.

  • Matplotlib가 텍스트 레이아웃에 직접 dvi 파일을 사용하도록 일부 진행이 이루어졌습니다. 이를 통해 LaTeX는 *Agg 및 PS 백엔드뿐만 아니라 pdf 및 svg 백엔드와 함께 텍스트 레이아웃에 사용될 수 있습니다. 미래에는 LaTeX 설치가 유일한 외부 종속성이 될 수 있습니다.

문제 해결 #

  • .matplotlib/tex.cache디렉터리를 삭제해 보십시오 . 찾을 위치를 모르는 경우 matplotlib 구성 및 캐시 디렉토리 위치.matplotlib 를 참조하십시오 .

  • LaTeX, dvipng 및 ghostscript가 각각 작동하는지 확인하십시오. PATH.

  • 수행하려는 작업이 LaTeX 문서에서 가능한지, LaTeX 구문이 유효한지, 의도하지 않은 이스케이프 시퀀스를 피하기 위해 필요한 경우 원시 문자열을 사용하고 있는지 확인하십시오.

  • rcParams["text.latex.preamble"](기본값: '')은 공식적으로 지원되지 않습니다. 이 옵션은 많은 유연성과 문제를 일으키는 많은 방법을 제공합니다. 메일링 리스트에 문제를 보고하기 전에 이 옵션을 비활성화하십시오.

  • 여전히 도움이 필요한 경우 도움말 얻기 를 참조하십시오 .

Sphinx-Gallery에서 생성한 갤러리