引号位置不正确

引号位置不正确

我只想使用listingsXeTeX 包来包含一些源代码。

这是我的最小示例:

% !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-extraupquote与 XeLaTeX 的此设置不兼容,因此我删除了它们。

相关内容