Estou usando o pacote de listagens para colocar código Java em meus arquivos tex. Existem alguns caracteres turcos no código. Então, estou usando a diretiva literate para que apareçam corretamente. Tudo funciona bem, exceto o caractere "İ", o I maiúsculo com um ponto no topo. Este personagem não é renderizado corretamente. Meu código é o seguinte:
\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}
A saída disso é a seguinte:
A carta aparece incorretamente com uma linha próxima ao final da carta. A saída correta deve ser como "İ", com um ponto no topo. Tenho várias opções para resolver isso. Mas nenhum funcionou. Alguém tem uma solução? Obrigado...
Responder1
Eu sugiro que você adicione as instruções
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
ao seu preâmbulo.
O exemplo a seguir teve que modificar as opções de codificação de cores, pois você não forneceu informações sobre como as diversas cores java... são definidas.
\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}