我在 Linux 上,我有一份使用其进行编译的文档xelatex main.tex
:
\documentclass[12pt]{article}
\usepackage{color}
\usepackage{xcolor}
\definecolor{code_linenumbers_b}{RGB}{215,215,215}
\definecolor{code_linenumbers}{RGB}{255,255,255}
\definecolor{code_background}{RGB}{250,250,250}
\definecolor{code_comments}{RGB}{185,185,185}
\definecolor{code_borders}{RGB}{86,211,239}
\usepackage{mathspec}
\setallmonofonts[
%Path=.,
Extension=.ttf,
Scale=0.8,
UprightFont=*--regular,
BoldFont=*--bold,
ItalicFont=*--italic
]{liberation-mono}
\usepackage{listings}
%Global
\lstset{
%frame
frame=l,
captionpos=b,
numbersep=3.5mm,
xleftmargin=0.35cm,
xrightmargin=0cm,
framesep=0mm,
framexleftmargin=2.5mm,
framerule=0.5mm,
%colors
backgroundcolor=\color{code_background},
basicstyle=\ttfamily\color{black},
numberstyle=\ttfamily\bfseries\color{code_linenumbers},
fillcolor=\color{code_linenumbers_b},
commentstyle=\color{code_comments},
keywordstyle=\color{black}\bfseries,
rulecolor=\color{code_borders},
%code format
showspaces=false,
breaklines=true,
breakatwhitespace=true,
tabsize=3,
columns=flexible
}
\begin{document}
\lstinputlisting[
language=C,
caption=\lstinline{main.c},
label=r001,
numbers=left,
xleftmargin=1.15cm,
framesep=8mm
]{main.c}
\end{document}
我的main.c
文件如下所示:
#include <stdio.h>
int main(){
// ir
// ↓
// 012345678
// 0 *
// 1 ***
// 2 *****
// 3 *******
// ir → 4 *********
return 0;
}
但编译后(没有错误或警告)我得到的结果main.pdf
中箭头↓
( U+2193
) 和→
( U+2192
) 的位置不正确:
所有字体均位于和*.ttf
的同一文件夹中。main.tex
main.c
ziga@ziga-laptop:mwe$ ls -l
total 468
-rw-r--r-- 1 ziga ziga 120308 May 21 17:30 liberation-mono--bold-italic.ttf
-rw-r--r-- 1 ziga ziga 107620 May 21 17:30 liberation-mono--bold.ttf
-rw-r--r-- 1 ziga ziga 126308 May 21 17:30 liberation-mono--italic.ttf
-rw-r--r-- 1 ziga ziga 110204 May 21 17:29 liberation-mono--regular.ttf
-rw-r--r-- 1 ziga ziga 229 May 21 18:45 main.c
-rw-r--r-- 1 ziga ziga 1479 May 21 18:50 main.tex
他们确实有一个字形箭头↓
(U+2193
)和→
(U+2192
)我通过打开所有*.ttf
文件进行仔细检查字体:
xelatex
是一个 UTF-8 引擎,应该支持 UTF-8 编码的多字节字符...那么为什么它们不能正确呈现呢?
答案1
我用这个方法:'listings' 包和 UTF-8
MWE:
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{listings}
\makeatletter
\lst@InputCatcodes
\def\lst@DefEC{%
\lst@CCECUse
\lst@ProcessLetter
^^^^2192^^^^2193^^00}
\lst@RestoreCatcodes
\makeatother
\lstset{
basicstyle=\ttfamily,
keepspaces,
commentstyle=\color{gray},
extendedchars
}
\begin{document}
\lstinputlisting[language=C]{main.c}
\end{document}