조직 모드에서 라텍스를 사용하여 유니 코드 문자를 PDF로 내보내기


15

Emacs의 좋은 사람들 안녕하세요!

유니 코드 수학 기호를 버퍼 (org-mode)에서 pdf 파일로 내보내는 데 문제가 있습니다.

1. 문제 설명 :

기호는 버퍼에 유니 코드 문자로 삽입됩니다 ( TEX 입력 방법 또는 회사 수학을 통해 )

소스 코드 데모는 다음과 같습니다.

#+TITLE: Unicode characters export test 
#+AUThor: 
#+date:
Unicode characters:

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

$$\Bbb{R} \Bbb{Z} \Bbb{N} \Rightarrow \in \forall$$

생성 된 .tex 파일에는 유니 코드 기호가 포함됩니다.

% Created 2016-03-04 Pá 21:01
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{amssymb}
\usepackage{hyperref}
\tolerance=1000
\date{}
\title{Unicode characters export test}
\hypersetup{
  pdfkeywords={},
  pdfsubject={},
  pdfcreator={Emacs 24.4.1 (Org mode 8.2.10)}}
\begin{document}

\maketitle
\tableofcontents

Unicode characters:

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

$$\Bbb{R} \Bbb{Z} \Bbb{N} \Rightarrow \in \forall$$
% Emacs 24.4.1 (Org mode 8.2.10)
\end{document}

PDF 파일은하지 않습니다 :

여기에 이미지 설명을 입력하십시오

2. 내가 지금까지 시도한 것 :

Xelatex와 unicode-math : 이것은 Rasmus의 답변에 포함되어 있습니다. 나는 인정해야한다 : 나는 그가 언급하고있는 org-mode의 개발 버전을 사용하고 있지 않다. 어쨌든 xelatex adn unicode-math를 시도했습니다. 내 조직 모드 버전은 8.2.10입니다.

#+latex_compiler: xelatex
#+latex_header: \usepackage{libertine}
#+latex_header: \usepackage{unicode-math}

이것을 파일에 포함시키는 것은 pdf 파일 대신 그렇게 멋진 메시지를 소개합니다.

org-latex-compile : PDF 파일 ./unicode_export_test.pdf가 생성되지 않았습니다 : [package error]

올바른 유니 코드 수학 설치를 확인했습니다.

~ $ kpsewhich unicode-math.sty
/usr/share/texlive/texmf-dist/tex/latex/unicode-math/unicode-math.sty

Xelatex 설치는 최신 버전입니다.

~ $ sudo apt-get install texlive-xetex
Reading package lists... Done
Building dependency tree       
Reading state information... Done
texlive-xetex is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 16 not upgraded.

org-mode의 개발 버전 설치 : (실패) 다음 과 같은 최첨단 개발을 유지하려면 어떻게해야합니까? -튜토리얼 나는 그것을 다운로드하고 컴파일 할 수 있었다고 생각한다. Emacs에게이 버전을 실행하는 방법을 모르기 때문에 Emacs는 조직 모드 버전 8.2.10 (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/)을 실행합니다. 구성에 다음 줄을 추가하려고했습니다.

(add-to-list 'load-path (expand-file-name "~/elisp/org-mode/lisp"))
(remove 'load-path (expand-file-name "/usr/local/share/emacs/24.4/lisp/org/"))
(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
(require 'org)

만족스러운 결과없이.

인터넷 검색 : 솔루션을 찾을 수 없습니다.

바보 같은 내 자신을 이길 : 도움이되지 않았습니다.

3. 질문 : org-mode에서 pdf로 유니 코드 문자를 내보내는 방법은 무엇입니까?

  • org-mode 변수를 구성해야합니까?
  • 다른 라텍스 인터프리터로 컴파일 하시겠습니까?
  • 다른 아이디어가 있습니까?
  • 개발 버전에서이 문제가 해결되면 ... 어떻게 설치합니까?

이미지 외에도 일반 텍스트로 예제를 제공해 주시겠습니까?
rasmus

답변:


9

\usepackage[utf8x]{inputenc}기본값 대신 사용하려면 라텍스 파일이 필요합니다 \usepackage[utf8]{inputenc}. 이것은 표준 (pdf) latex와 함께 작동합니다.

조직 내보내기에서이를 생성하려면 변수를 org-latex-inputenc-alist적절히 설정해야합니다 . 예를 들면 다음과 같습니다.

(setq org-latex-inputenc-alist '(("utf8" . "utf8x")))

변수를 정의하려면 (require 'ox-latex)먼저 해야 할 수도 있습니다 .

불행히도 이것은 제한된 수학 문자 세트 만 지원합니다. 를 포함하면 훨씬 더 많은 것을 지원할 수 있습니다 \usepackage[mathletters]{ucs}. 이것은 inputenc물건 앞에 나타나야 하므로을 사용할 수는 없습니다 #+latex_header:. 이를 수행하는 방법은의 머리글에 추가하는 것입니다 org-latex-default-packages-alist.

(setq org-latex-default-packages-alist (cons '("mathletters" "ucs" nil) org-latex-default-packages-alist))

그 주 ucs(일반적으로 사용 가능한를 통해이 문서 texdoc ucs)에 대한 경고 mathletters옵션 :

일반 텍스트에서 수학 그리스어를 사용하는 것이 좋지 않기 때문에이 옵션은 기본적으로 비활성화되어 있습니다.

이러한 설정이 전역이 아닌 현재 파일에만 적용되도록하려면 파일 로컬 변수 로 정의 할 수 있습니다 . 파일 끝 부분에 다음을 추가하십시오.

# Local Variables:
# org-latex-inputenc-alist: (("utf8" . "utf8x"))
# eval: (setq org-latex-default-packages-alist (cons '("mathletters" "ucs" nil) org-latex-default-packages-alist))
# End:

eval 파일이로드 될 때 lisp 코드를 실행할 수있는 의사 변수입니다.


심볼 Ω Θ Γ ω은 내보내지지 않습니다. 내보낼 수없는 더 많은 심볼이있을 것입니다.
Empty_Mind

@Empty_Mind 어머. 아마도 이것이 실제로 작동하기에는 너무 간단했을 것입니다 (제공된 예제에서는 괜찮음). 라텍스에 대한 추가 조사가 필요합니다.
JeanPierre

@Empty_Mind 방금 게시물을 편집했습니다. 오메가와 세타를 시험해 보았고 다른 일도 희망하십시오.
JeanPierre

내가 이것을 할 수 없었기 때문에 : 당신은 어떻게 필요한 정보를 찾았습니까? 무엇을 찾고 있었습니까?
Empty_Mind

2
@Empty_Mind 첫 번째 단계는 라텍스 부품 작업을 얻는 것이 었습니다. tex.stackexchange에서 유니 코드를 검색 한 다음 로컬 tex 문서 (inputenc, ucs)를 사용했습니다. org에서 내 보낸 tex 파일을 직접 편집하고 컴파일하여 작업하는 것이 편리합니다. 작업 라텍스 파일을 얻은 후 두 번째 단계는 조직이 필요한 항목을 내보내도록하는 것입니다. ox-latex.el"조직 내보내기 엔진 용 LaTeX 백엔드"가 정의 된 파일 에서 변수에 대해 찾았습니다 . 1995 년에 처음으로 라텍스를 사용했고 천천히 유니 코드로 옮기고 있다고 언급해야합니까 ?
JeanPierre

5

당신은을 통해 라텍스 적절한 유니 코드 지원을로드해야 할 것 unicode-mathfontspec. 그런 다음 xelatex또는 로 컴파일해야합니다 lualatex.

다음 변수의 문서화 문자열을 참조하십시오 org-latex-packages-alist, org-latex-pdf-process그리고 org-latex-compiler(후자는 조직 구에서 소개).

조직의 개발 버전에서는 다음과 같이 할 수 있습니다.

#+latex_compiler: xelatex
#+latex_header: \usepackage{libertine}
#+latex_header: \usepackage{unicode-math}

* Unicode symbols
 $z$ ∈ ℝ ∖ ℤ
\begin{equation}
\label{eq:1}
X ≔ \left\{ z\colon z ∈ ℝ ∖ ℤ \right\}
\end{equation}

유니 코드 기호로 라텍스 문서를 컴파일하는 조직 모드


이것은 자랑스러워 보인다. 그러나이 Process completed with errors: [package error] 문제를 해결하는 방법에 대한 아이디어가 있거나 더 구체적인 오류 설명이 있습니까?
Empty_Mind

개발 버전은 어떻게 설치합니까?
Empty_Mind

2

두 가지 방법 :

1) 유니 코드 대신 적절한 TeX 표현식을 작성하고 org 만 utf-8 문자로 표시 하도록하십시오 C-c C-x \. http://orgmode.org/manual/Special-symbols.html

또는 2) utf-8 문자를 적절한 수학 식으로 변환하는 TeX 패키지를로드하십시오. 예를 들어 https://www.ctan.org/pkg/unicode-math?lang=en 입니다.


1
ad 2) TeX 패키지를 어떻게로드합니까?
Empty_Mind

@Empty_Mind #+latex_header: \usepackage{unicode-math}. 그러나이 패키지는 나를 위해 작동하지 않습니다.
JeanPierre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.