我的 Java 列表中的花括号未显示

我的 Java 列表中的花括号未显示

我正在使用基于模板的 ShareLatex 在线工具(pdfLaTeX 编译器)撰写论文;ShareLatex 上的 METU 论文模板。当我尝试添加列表或者输入列表到我的文档,花括号({}) 在我的Java代码根本没有显示。我对 LaTeX 还不太熟悉,但我尝试了很多在线找到的解决方案,比如在我的 Java 代码中转义括号,或者尝试调整列表集参数。我还尝试简化并注释掉每一个列表集指令,但没有解决我的问题。

在我的测试中,似乎当我使用元类作为我的文档类,它弄乱了我的列表格式。我该如何解决这个问题或为我的列表添加一个不同的文档类?谢谢您的帮助。

我的文档示例(为了编译,我仅包含了模板的某些部分)(对于文档类指令,元类文件可以在以下链接中找到 -元类):

%%%% Works fine with this default article document class %%%%
%\documentclass[a4paper,12pt]{article}
%%%% When I use the "metu" class, it seems like it messes up with my source codes %%%%
\documentclass[chaparabic,ceng,ms,12pt,oneandhalf]{metu}

\usepackage{appendix}
\usepackage[pdftex]{hyperref}
\usepackage[all]{hypcap}
\usepackage{todonotes}
\usepackage{rotating}
\usepackage{xy} 
\usepackage{booktabs}
\usepackage{pifont}
\usepackage{color}
\usepackage{pdfpages}
\usepackage{adjustbox}
\usepackage{caption}
\usepackage{array}
\usepackage{graphicx}
\graphicspath{ {./images/} }
\DeclareGraphicsExtensions{.pdf,.png,.jpg}

% Listings formatting directives
\usepackage{listings}
\usepackage{float}
\lstset{float}
\makeatletter
\let\lst@floatdefault\lst@float
\makeatother
\DeclareCaptionFormat{listing}{#1#2#3}
\captionsetup[lstlisting]{format=listing,singlelinecheck=false, margin=0pt, font={sf}}
\restylefloat{figure}
\newcommand{\tab}{\hspace*{2em}}
\definecolor{keyword}{rgb}{0.13,0.13,1}
\definecolor{comment}{rgb}{0,0.5,0}
\definecolor{string}{rgb}{0.9,0,0}
\definecolor{splashedwhite}{rgb}{1.0, 0.99, 1.0}
\definecolor{reserved}{rgb}{0.46,0.45,0.48}
\lstset{
    language = Java,
    basicstyle=\scriptsize\ttfamily,
    numbers=left,
    numbersep=10pt,
    numberstyle=\tiny\color{black},
    stepnumber=1,
    tabsize=2,
    showspaces=false, 
    frame=single,
    breaklines=true,
    escapeinside={\%*}{*)},
    backgroundcolor=\color{splashedwhite},
    commentstyle=\itshape\color{comment},
    keywordstyle=\bfseries\color{keyword},
    stringstyle=\color{string},
    extendedchars=true,
    captionpos=t
}

\begin{document}
% Sample lstlisting from my document
\begin{lstlisting}[caption=Browsed Log Hadoop Mapper Code]
public void map(Text key, Text value, Mapper.Context context) throws IOException, InterruptedException {
List<String> logValues = Lists.newArrayList();

StringTokenizer itr = new StringTokenizer(value.toString(), LOG_SEPERATOR);
while (itr.hasMoreTokens()) {
    logValues.add(itr.nextToken());
}

context.write(new Text(logValues.get(UID_INDEX)), new Text(logValues.get(URL_INDEX)));
}
\end{lstlisting}

% Sample lstinputlisting from my document
%\lstinputlisting[language=Java, float=false, frame=none]{source-codes/EUrlCategory.java}

\end{document}

答案1

我们可以通过这个非常小的 MWE 看到问题:

\documentclass[a4paper]{article}

\uccode`@=`I \lccode`@="10

\usepackage{listings}
\lstset{
    language = Java,
    basicstyle=\scriptsize\ttfamily,
}

\begin{document}
\begin{lstlisting}
... InterruptedException {

}
\end{lstlisting}
\end{document}

\uccode`@=`I \lccode`@="10行位于 的最末尾metu.cls,显然会弄乱listings。删除该行, 会{}重新出现。

相关内容