我只想使用listings
XeTeX 包来包含一些源代码。
这是我的最小示例:
% !TEX TS-program = XeLaTeX
% !TEX encoding = UTF-8 Unicode
\documentclass[xetex]{scrreprt}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\setmonofont[Scale=.8]{Inconsolata}
\usepackage{bold-extra}
\usepackage{upquote}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily\scriptsize,
keywordstyle=\bfseries,
numbers=left,
inputencoding=utf8x,
extendedchars=true,
showlines=true,
upquote=true,
showstringspaces=false
}
\lstdefinelanguage{turtle} {
morekeywords={@prefix,@base,@forSome,@forAll,@keywords},
% literate=%
% *{``}{``}{1}
% {''}{''}{1}
% {„}{``}{1}
% {“}{''}{1},
}
\begin{document}
\begin{lstlisting}[language=turtle]
@prefix crm: <http://www.cidoc-crm.org/cidoc-crm/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<http://my.domain/object/1>
rdf:type
crm:E22_Man-Made_Object ;
rdfs:label
"„David“ Skulptür …", "This is another ‚test‘ …" ;
crm:P102_has_title
<http://my.domain/title/1> ;
crm:P108i_was_produced_by
<http://my.domain/production/1> ;
crm:P31i_was_modified_by
<http://my.domain/modification/1> .
\end{lstlisting}
\end{document}
这将产生以下输出:
8
正如您在行(末尾的最后一个符号)和行9
(第一个引号之后;在单词前面)中看到的,test
引号是错误的/不正确的。 -应该用(德语)双引号( )和(德语)单引号( )David
括起来。„David“
test
‚test‘
→ 有人知道如何修复/生产该问题吗?
另一个问题9
是整个字符串的印刷引号(开头和结尾)的显示(“„David“ Skulptür …
“)。我只能通过\defaultfontfeatures{Mapping=tex-text}
在序言中注释掉来解决这个问题。
→ 再次:有人知道如何解决这个问题(不禁用\defaultfontfeatures
)吗?
非常感谢!致以最诚挚的问候!
附言:literate
如果启用 MWE 中的 禁用选项,则不会改变任何内容……
答案1
主要问题是它listings
不能很好地处理 UTF-8 输入,特别是 XeLaTeX 和 LuaLaTeX。我担心需要对该软件包进行非常彻底的修订才能使其能够处理任意 UTF-8 输入。
不过,事情还没有结束。我pygmentize
从以下网站下载了一些词法分析器:https://github.com/gniezen/n3pygments并安装它们(pygmentize
是必需的)。然后我以以下方式更改了您的输入:
\documentclass{scrreprt}
\usepackage{fontspec}
\setmonofont[Scale=.8]{Inconsolata}
\defaultfontfeatures{Ligatures=TeX}
\usepackage{verbments}
\begin{document}
\begin{pyglist}[language=turtle]
@prefix crm: <http://www.cidoc-crm.org/cidoc-crm/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<http://my.domain/object/1>
rdf:type
crm:E22_Man-Made_Object ;
rdfs:label
"„David“ Skulptür …", "This is another ‚test‘ …" ;
crm:P102_has_title
<http://my.domain/title/1> ;
crm:P108i_was_produced_by
<http://my.domain/production/1> ;
crm:P31i_was_modified_by
<http://my.domain/modification/1> .
\end{pyglist}
\end{document}
并使用编译文件
xelatex -shell-escape sokai
这就是结果,似乎就是您所寻找的。
请注意\defaultfontfeatures{Ligatures=TeX}
,如果您不想使用标准连字,则应在定义等宽字体之后发出。
此外,不再建议使用xltxtra
;最好直接调用,fontspec
如下所示。包bold-extra
和upquote
与 XeLaTeX 的此设置不兼容,因此我删除了它们。