我正在使用基于模板的 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
。删除该行, 会{}
重新出现。