使用 Pandoc 获取希伯来语支持

使用 Pandoc 获取希伯来语支持

有谁知道为什么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应用范围更广。这种简化仅用于解释目的。

相关内容