Я использую пакет listings для помещения кода Java в мои файлы tex. В коде есть несколько турецких символов. Поэтому я использую директиву literate, чтобы они отображались правильно. Все работает отлично, кроме символа "İ", заглавной буквы I с точкой сверху. Этот символ отображается неправильно. Мой код выглядит следующим образом:
\usepackage{listings}
\lstset{
language=Java,
captionpos=t,
tabsize=3,
frame=single,
frameround=tttt
backgroundcolor=\color{highlight},
basicstyle=\footnotesize\ttfamily,
keywordstyle=\color{javapurple}\bfseries,
commentstyle=\color{javagreen},
stringstyle=\color{javared},
morecomment=[s][\color{javadocblue}]{/**}{*/},
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
breaklines=true,
showstringspaces=false,
emph={label},
inputencoding=utf8,
extendedchars=true,
% German umlauts
literate=%
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}1
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
%Türkçe karakterler
{ı}{{\i}}1
{İ}{{\.{I}}}1 % This is the problem character.
{ğ}{{\u{g}}}1
{Ğ}{{\u{G}}}1
{ş}{{\c{s}}}1
{Ş}{{\c{S}}}1
{ç}{{\c{c}}}1
{Ç}{{\c{C}}}1
}
\begin{lstlisting}
System.out.println("Test: ı ü ğ ş ç ö, İ Ü Ğ Ş Ç Ö ");
\end{lstlisting}
Вывод этого следующий:
Буква отображается неправильно с линией близко к низу буквы. Правильный вывод должен быть как "İ", с точкой сверху. У меня есть несколько вариантов решения этой проблемы. Но ни один не сработал. Есть ли у кого-нибудь решение? Спасибо...
решение1
Предлагаю вам добавить инструкцию
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
к вашей преамбуле.
В следующем примере пришлось изменить варианты кодирования цвета, поскольку вы не предоставили информацию о том, как определяются различные цвета Java...
\documentclass{article}
\usepackage[utf8]{inputenc} % assumes input is utf8-encoded
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
\lstset{
language=Java,
captionpos=t,
tabsize=3,
frame=single,
frameround=tttt
backgroundcolor=\color{highlight},
basicstyle=\footnotesize\ttfamily,
keywordstyle=\color{purple}\bfseries,
commentstyle=\color{green},
stringstyle=\color{red},
morecomment=[s][\color{blue}]{/**}{*/},
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
breaklines=true,
showstringspaces=false,
emph={label},
inputencoding=utf8,
extendedchars=true,
% German umlauts
literate=%
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}1
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
%Türkçe karakterler
{ı}{{\i}}1
{İ}{{\.{I}}}1 % This is the problem character.
{ğ}{{\u{g}}}1
{Ğ}{{\u{G}}}1
{ş}{{\c{s}}}1
{Ş}{{\c{S}}}1
{ç}{{\c{c}}}1
{Ç}{{\c{C}}}1
}
\begin{lstlisting}
System.out.println("Test: ı ü ğ ş ç ö, İ Ü Ğ Ş Ç Ö ");
\end{lstlisting}
\end{document}