图形环境无法与包含的文件(额外的} 或被遗忘的端组)一起工作

图形环境无法与包含的文件(额外的} 或被遗忘的端组)一起工作

我在这个问题上花了好几个小时。我希望有人能帮助我。当我尝试使用图形环境时,我遇到了某种干扰(对于表格也是如此,可能与浮点数有关)。我最终将问题缩小到一行——我在序言中包含了另一个文件,允许我稍后包含 python 代码并使用 Latex 颜色对其进行编码。我尝试编译的代码是:

\documentclass[10pt]{article}
\include{pythonperfect}
\usepackage{graphicx}
\begin{document}
\begin{figure}
 blah blah blah
\end{figure}
\end{document}

其中“pythonperfect”是:

\usepackage{color}
\usepackage[procnames]{listings}
\usepackage{textcomp}
\usepackage{setspace}
\usepackage{palatino}
\renewcommand{\lstlistlistingname}{Code Listings}
\renewcommand{\lstlistingname}{Code Listing}
\definecolor{gray}{gray}{0.5}
\definecolor{green}{rgb}{0,0.5,0}
\definecolor{lightgreen}{rgb}{0,0.7,0}
\definecolor{purple}{rgb}{0.5,0,0.5}
\definecolor{darkred}{rgb}{0.5,0,0}
\definecolor{orange}{rgb}{1,0.5,0}
%\lstnewenvironment{python}[1][]{
\lstset{
language=python,
basicstyle=\ttfamily\small\setstretch{1},
stringstyle=\color{green},
showstringspaces=false,
alsoletter={1234567890},
otherkeywords={\ , \}, \{},
keywordstyle=\color{blue},
emph={access,and,as,break,class,continue,def,del,elif,else,%
except,exec,finally,for,from,global,if,import,in,is,%
lambda,not,or,pass,print,raise,return,try,while,assert},
emphstyle=\color{orange}\bfseries,
emph={[2]self},
emphstyle=[2]\color{gray},
emph={[4]ArithmeticError,AssertionError,AttributeError,BaseException,%
DeprecationWarning,EOFError,Ellipsis,EnvironmentError,Exception,%
False,FloatingPointError,FutureWarning,GeneratorExit,IOError,%
ImportError,ImportWarning,IndentationError,IndexError,KeyError,%
KeyboardInterrupt,LookupError,MemoryError,NameError,None,%
NotImplemented,NotImplementedError,OSError,OverflowError,%
PendingDeprecationWarning,ReferenceError,RuntimeError,RuntimeWarning,%
StandardError,StopIteration,SyntaxError,SyntaxWarning,SystemError,%
SystemExit,TabError,True,TypeError,UnboundLocalError,UnicodeDecodeError,%
UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,%
UserWarning,ValueError,Warning,ZeroDivisionError,abs,all,any,apply,%
basestring,bool,buffer,callable,chr,classmethod,cmp,coerce,compile,%
complex,copyright,credits,delattr,dict,dir,divmod,enumerate,eval,%
execfile,exit,file,filter,float,frozenset,getattr,globals,hasattr,%
hash,help,hex,id,input,int,intern,isinstance,issubclass,iter,len,%
license,list,locals,long,map,max,min,object,oct,open,ord,pow,property,%
quit,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,%
slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,%
vars,xrange,zip},
emphstyle=[4]\color{purple}\bfseries,
upquote=true,
morecomment=[s][\color{lightgreen}]{"""}{"""},
commentstyle=\color{red}\slshape,
literate={>>>}{\textbf{\textcolor{darkred}{>{>}>}}}3%
         {...}{{\textcolor{gray}{...}}}3,
procnamekeys={def,class},
procnamestyle=\color{blue}\textbf,
%framexleftmargin=1mm, framextopmargin=1mm, frame=shadowbox,
%rulesepcolor=\color{blue},
breaklines=true,
}{}

我收到的错误是:

! Too many }'s.
\color@endbox->\color@endgroup \egroup
l.10 \end{figure}
You've closed more groups than you opened.
Such booboos are generally harmless, so keep going.
! LaTeX Error: \begin{document} ended by \end{figure}.

无论如何,我已经使用“pythonperfect”一段时间了,直到今天我尝试添加一个图形时才遇到问题。问题是我不太了解该文件中发生的大部分事情,我在网上的某个地方找到了它(我不记得在哪里)并做了一些更改以使其适合我。但我真的不明白。所以我不知道哪里出了问题。

我会非常感激任何帮助。非常感谢。

答案1

正如 Martin Scharrer 在他的评论中提到的那样,该示例有效。 但是,我认为问题始于您使用新定义的环境的那一刻 \lstnewenvironment

缺少结尾},当你使用

\begin{python}

\end{python}

出现错误消息。查看此文件的最后一行。我还取消了对新环境定义的注释。

\usepackage{color}
\usepackage[procnames]{listings}
\usepackage{textcomp}
\usepackage{setspace}
\usepackage{palatino}
\renewcommand{\lstlistlistingname}{Code Listings}
\renewcommand{\lstlistingname}{Code Listing}
\definecolor{gray}{gray}{0.5}
\definecolor{green}{rgb}{0,0.5,0}
\definecolor{lightgreen}{rgb}{0,0.7,0}
\definecolor{purple}{rgb}{0.5,0,0.5}
\definecolor{darkred}{rgb}{0.5,0,0}
\definecolor{orange}{rgb}{1,0.5,0}
\lstnewenvironment{python}[1][]{%%%% Included this
\lstset{
language=python,
 basicstyle=\ttfamily\small\setstretch{1},
 stringstyle=\color{green},
 showstringspaces=false,
 alsoletter={1234567890},
 otherkeywords={\ , \}, \{},
 keywordstyle=\color{blue},
 emph={access,and,as,break,class,continue,def,del,elif,else,%
 except,exec,finally,for,from,global,if,import,in,is,%
 lambda,not,or,pass,print,raise,return,try,while,assert},
 emphstyle=\color{orange}\bfseries,
 emph={[2]self},
 emphstyle=[2]\color{gray},
 emph={[4]ArithmeticError,AssertionError,AttributeError,BaseException,%
DeprecationWarning,EOFError,Ellipsis,EnvironmentError,Exception,%
False,FloatingPointError,FutureWarning,GeneratorExit,IOError,%
ImportError,ImportWarning,IndentationError,IndexError,KeyError,%
KeyboardInterrupt,LookupError,MemoryError,NameError,None,%
NotImplemented,NotImplementedError,OSError,OverflowError,%
PendingDeprecationWarning,ReferenceError,RuntimeError,RuntimeWarning,%
StandardError,StopIteration,SyntaxError,SyntaxWarning,SystemError,%
SystemExit,TabError,True,TypeError,UnboundLocalError,UnicodeDecodeError,%
UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,%
UserWarning,ValueError,Warning,ZeroDivisionError,abs,all,any,apply,%
basestring,bool,buffer,callable,chr,classmethod,cmp,coerce,compile,%
complex,copyright,credits,delattr,dict,dir,divmod,enumerate,eval,%
execfile,exit,file,filter,float,frozenset,getattr,globals,hasattr,%
hash,help,hex,id,input,int,intern,isinstance,issubclass,iter,len,%
license,list,locals,long,map,max,min,object,oct,open,ord,pow,property,%
quit,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,%
slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,%
vars,xrange,zip},
 emphstyle=[4]\color{purple}\bfseries,
 upquote=true,
 morecomment=[s][\color{lightgreen}]{"""}{"""},
 commentstyle=\color{red}\slshape,
 literate={>>>}{\textbf{\textcolor{darkred}{>{>}>}}}3%
          {...}{{\textcolor{gray}{...}}}3,
 procnamekeys={def,class},
 procnamestyle=\color{blue}\textbf,
framexleftmargin=1mm, framextopmargin=1mm, frame=shadowbox,
rulesepcolor=\color{blue},
 breaklines=true,
 #1
}}{}%%%%Here it was missing }

以及示例

\documentclass[10pt]{article}
\input{pythonperfect}%input better than include here
\usepackage{graphicx}
\begin{document}
\begin{figure}
 blah blah blah
\end{figure}

\begin{python}
 for a
\end{python}

\end{document}

答案2

好吧,我玩了好几个小时,我想与任何可能感兴趣的人分享我的发现是公平的。

以下是我发现的内容:如果你想使用环境python, Martin 的代码效果很好\begin{python}...\end{python}。他取消了一行的注释:

\lstnewenvironment{python}[1][]{

#1然后他在末尾插入了一个(以使用该选项),并添加了一个}。但那个括号不是 LaTeX 在错误中提到的括号。它只是需要在打开括号的地方添加上述行。

问题在于,只有当您想使用环境时,它才有效python。但是,如果您想使用包含完整的 python 文件(就像我一样),则listings此方法不起作用。overrides ,这就是我首先将其注释掉的原因。\lstnewenvironment\lstinputlisting

无论如何,如果您需要环境,您可以使用它,也可以将其省略。或者想办法同时使用两者。

在安装了新的 TexLive-full 之后,我让它工作了——但只能在试用文档的无菌环境中工作。当我将它放入我正在处理的文档中时,我遇到了与开始时相同的问题。显然,它与文档中的其他内容发生了某种冲突。

经过多次尝试和错误,我发现是软件包的使用setspace干扰了……某些东西。我无论如何也想不出是什么。它在一个简单的文档中确实有效。很奇怪。

反正拿出来setspace也得拿出来\setstretch{1},不过也没什么大不了的。

感谢那些回答的人。我很感激。马丁,关于\inputvs 的观点很好\include。我没有意识到这一点。

相关内容