以下是代码
\lstdefinestyle{mystyle}{
frame=single,
}
\begin{figure*}[tbp!]
\begin{center}
\begin{tabular}{c}
\lstset{style=mystyle}
\lstinputlisting[]{code/method.cs}
\end{tabular}
\end{center}
\end{figure*}
method.cs 中定义的内容:
public string[] reverse(string[] array)
{
string[] newArray = new string[array.Length];
for (int index = 0; index < array.Length; index++)
newArray[array.Length-index-1] = array[index];
return newArray;
}
错误信息:
Missing { inserted. \lstset{style=mystyle}
Missing } inserted. \lstset{style=mystyle}
Extra alignment tab has been changed to \cr. \lstset{style=mystyle}
You can't use `macro parameter character #' in restricted horizontal mode. \lstset{style=mystyle}
You can't use `macro parameter character #' in restricted horizontal mode. \lstset{style=mystyle}
You can't use `macro parameter character #' in restricted horizontal mode. \lstset{style=mystyle}
....
删除表格环境似乎可行,但我需要这样做才能实现居中。错误是什么?
编辑:
完整的 MWE:
\documentclass{article}
\usepackage{listings}
\lstdefinestyle{mystyle}{
% backgroundcolor=\color{backcolour},
frame=single,
}
\begin{document}
\begin{figure*}[tbp!]
\begin{center}
%\begin{tabular}{c}
\lstset{style=mystyle}
\lstinputlisting[]{method.cs}
%\end{tabular}
\end{center}
\end{figure*}
\end{document}
再次强调,我想要tabular
环境。无论如何,我想知道为什么这不起作用。所以请不要建议删除tabular
我已经知道可以工作的内容。
答案1
使用 MWE 时,列表环境已经居中,问题是它的宽度太长,因此看起来文本在左侧。 解决方案是这个答案(正如@leandriis 指出的那样)。
导致您出现错误的是框架。在表格环境中不能有框架。这是因为框架的定义与表格不兼容。您应该使用表格分隔符\begin{tabular}{|c|}
和\hline
来创建框架。
两种方案的 MWE 及其边界以几何图形表示:
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{listings}
\lstdefinestyle{mystyle}{
%backgroundcolor=\color{green},
frame=single,
}
\begin{document}
\begin{figure*}[tbp!]
\begin{center}
\begin{tabular}{|c|}
\hline
\lstinputlisting[]{method.cs}\\
\hline
\end{tabular}
\end{center}
\end{figure*}
\begin{figure*}[tbp!]
\begin{center}
%\begin{tabular}{|c|}
\lstset{style=mystyle}
\lstinputlisting[]{method.cs}
%\end{tabular}
\end{center}
\end{figure*}
\end{document}