有谁知道为什么pandoc
引擎xelatex
可能不会生成希伯来字符,而直接调用xelatex
则会?
也就是说,我有一个简单的.tex
文件,里面有一些希伯来语。
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{hebrew}
\setmainfont{Times New Roman}
\newfontfamily{\hebrewfont}{New Peninim MT}
\begin{document}
\title{שלום עולם}
\author{שלום עולם}
\maketitle
שלום עולם
\end{document}
如果我把这个喂给xelatex
$ xelatex simple.tex
我得到了一个包含希伯来字符的 PDF 文件。太棒了!
但是,如果我将同一篇文档输入到pandoc
,并指定--latex-engine=xelatex
引擎。
$ pandoc --latex-engine=xelatex simple.tex -o test.pdf
我得到的 PDF 没有呈现希伯来语字符。有人知道为什么会发生这种情况,以及我该如何修复它吗?我假设 pandoc 正在调用xelatex
后台调用——有没有办法查看它调用时使用的选项/参数/标志,或者清除那些选项?
另外——我的最终目标是将带有一些希伯来字符的 HTML 文档转换为 PDF 文件,当我有一个文件( )pandoc
时,我遇到了类似的问题,例如simple.html
<h1>שלום עולם</h1>
然后尝试将其转换
pandoc --latex-engine=xelatex simple.html -o test.pdf
上述操作还生成了一个不含希伯来语的文件。
因此,我使用pandoc
转换为simple.tex
文件作为调试技术,而不是因为我实际上正在从转换tex
为 PDF。我知道我可以xelatex
直接调用并使其工作,但出于复杂的原因,我希望它与一起使用pandoc
。我还想了解它pandoc
实际上如何与 LaTeX 交互。所以这些答案会加分 :)
答案1
如果字体配置正确,Pandoc 可以处理 unicode 希伯来语文本(由于字体信息未在 pandoc 的 AST 中表示,因此读者会省略它们)。
1. 在 pandoc 中明确配置字体
因此,您必须明确告诉 pandoc 要使用哪种字体:-V mainfont:"Times New Roman"
如果您想将文本方向设置为从右到左,您可以使用:-V dir:rtl
得出的结果是:
pandoc --latex-engine=xelatex \
-V mainfont:"Times New Roman" \
-V dir:rtl \
simple.tex -o test.pdf
pandoc --latex-engine=xelatex \
-V mainfont:"Times New Roman" \
-V dir:rtl \
simple.html -o test.pdf
2.在模板中添加字体配置:
您需要一个新文件include.tex
:
% include.tex
\setmainfont{Times New Roman}
\newfontfamily{\hebrewfont}{New Peninim MT}
还告诉 pandoc 使用希伯来语作为主要语言:-V lang:he
得出的结果是:
pandoc --latex-engine=xelatex \
-V lang:he \
-H include.tex \
simple.tex -o test.pdf
pandoc --latex-engine=xelatex
-V lang:he \
-H include.tex \
simple.html -o test.pdf
答案2
您的pandoc
命令需要.html
文件作为输入*。因此,当您使用文件作为输入时,它不起作用是正常的.tex
。
事实上pandoc的原理如下:
.html-file -->[html-to-latex]--> .tex-file -->[(xe)latex compiling]--> .pdf-file
|___________________________________________________|
pandoc, as a black-box
例如下面的html文档:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>My title</title>
</head>
<body>
<h1>Lorem</h1>
Ipsum dolor sit amet
</body>
</html>
将被转换成这样的 tex 文档(这是一个虚拟示例,仅用于解释原理。我不确定是否-->[html-to-latex]-->
会给出确切地相同的输出):
\documentclass{article}
%<automatically loaded packages>
\title{My title}
\begin{document}
\section{Lorem}
Ipsum dolor sit amet
\end{document}
Pandoc 可能在前言中包含一些软件包(例如inputenc
等),但它还不够智能,无法知道您想要某些特定的软件包或设置(在您的情况下是\setmainlanguage{hebrew}
、\setmainfont{Times New Roman}
和\newfontfamily{\hebrewfont}{New Peninim MT}
)。因此,您应该查看 的pandoc
文档以了解如何在文档的前言中包含这些设置。
* 嗯,有点过于简单了,因为pandoc
应用范围更广。这种简化仅用于解释目的。