我的 TeX 文档出了问题。我试图将我的 java 文件导入到列表中以获取语法着色和其他内容。我的 java 文件包含丹麦语注释,这意味着它们包含特殊字符(æ、ø 和 å)。我设法通过添加\lstset{inputencoding=utf8, extendchars=\true}
到我的 premable 来查看它们。即使我可以看到文档中的字符,它仍然不正确。语法着色不适用于特殊字符,并且它们不在单词中的正确位置。您可以在此处查看示例:
它应该说“...du fortsætte med at åbne programmet?...”
就像特殊字符跳转到单词的开头然后不应用语法着色。
希望有人能够帮忙。谢谢。
编辑
我使用 ansinew 字符集而不是使用 UTF8 作为输入编码,让它工作了。我就是这样做的:
\documentclass[a4paper,oneside]{memoir}
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\usepackage{listings}
\lstset{literate=%
{æ}{{\ae}}1
{å}{{\aa}}1
{ø}{{\o}}1
{Æ}{{\AE}}1
{Å}{{\AA}}1
{Ø}{{\O}}1
}
\lstset{extendedchars=\true}
\lstset{inputencoding=ansinew}
\begin{document}
\begin{lstlisting}
public class Main
{
public Main(String args[])
{
// Java logic
}
}
\end{lstlisting}
\end{document}
答案1
stackoverflow 上的这个帖子应该有帮助。假设您无法将文档从 UTF-8 转换,最简单的方法似乎是将 UTF-8 字符视为文学编程。
还有一个listingsutf8包,但这只适用于通过 引入的外部文件\lstinputlisting
,而不适用于直接在 .tex 文件中定义的代码。