Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';不要将Python列表放在LaTeX中_Latex_Lstlisting - Fatal编程技术网

Can';不要将Python列表放在LaTeX中

Can';不要将Python列表放在LaTeX中,latex,lstlisting,Latex,Lstlisting,我试图将Python列表放入\fbox\parbox中,但总是会出错 这是我的密码: \documentclass[12pt]{article} % Packages \usepackage[utf8]{inputenc} % support for accents \usepackage[T1]{fontenc} \usepackage[francais]{babel} % doc language \usepackage{lmodern} \usepackage[a4paper]

我试图将Python列表放入
\fbox\parbox
中,但总是会出错

这是我的密码:

\documentclass[12pt]{article}

% Packages
\usepackage[utf8]{inputenc}    % support for accents
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}   % doc language
\usepackage{lmodern}
\usepackage[a4paper]{geometry} % marges
\usepackage{xcolor}            % text color
\usepackage{sectsty}           % colorize sections
\usepackage{changepage}
\usepackage{moreverb}          % code with indent
\usepackage{listings}          % display code with magnification
\usepackage{amssymb}
\usepackage{amsmath}           % Text into equation
\usepackage{enumitem}          % Continue enumerate numbers
\usepackage{fourier}           % Double brackets

% Python listing
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\sffamily,
keywordstyle=\textbf,
commentstyle=\color{blue},
showstringspaces=false,
frame=tb, numbers=left }}
% Python environment
\lstnewenvironment{python}[1][]{
\pythonstyle \lstset{#1} }{}

\begin{document}
\begin{enumerate}
    \item On suppose qu'on dispose d'une fonction \texttt{binom(n,k)}, prenant en entrée deux entiers, et qui calcule $\binom{n}{k}$. Ecrire en langage \textsc{Python} une fonction \texttt{bernoulli(n)}, qui prend en entrée un entier naturel, et qui renvoie la liste \texttt{[b\_0, b\_1, ..., b\_n]}. \par
        \fbox{\parbox{\linewidth-2\fboxrule-2\fboxsep}{
            La relation précédente donne, pour $n \ge 2$ :
            \[ \binom{n}{n-1} b_{n-1} = - \sum_{j=0}^{n-2} \binom{n}{j} b_j \]
            autrement dit on a la relation de récurrence, pour tout $m \ge 1$ :
            \[ b_m = -\frac{1}{m+1} \sum_{j=0}^{m-1} \binom{n}{j} b_j \]
            On en déduit le code demandé :
        }}
        \fbox{\parbox{\linewidth-2\fboxrule-2\fboxsep}{
            \begin{python}
                def bernoulli(n) :
                     liste_bj = [1]
                     for m in range(1,n+1):
                         b = 0
                         for j in range(m):
                             b -= binom(m+1,j) * liste_bj[j]
                         b /= m+1
                         liste_bj.append(b)
                     return liste_bj
            \end{python}
        }} %err1
    \end{enumerate}
我得到了以下错误:

  • 在documentclass上:紧急停止,发生致命错误,未生成输出PDF
  • 关于err1:的论点\lst@next有一个额外的}。段落结束于\lst@next完成了。Extra},或遗忘\endgroup
  • 在\end{enumerate}:\开始{python}结束于\end{enumerate}
  • 在\end{document}:\开始{枚举}结束于\end{document}。不能在内部垂直模式下使用“\end”。缺少{插入
我试图删除序言中的“python列表”和“python环境”,并将
\begin{python}
替换为
\begin{listings}
(与
\end
相同)用代码的标准表示形式重置我的LaTeX项目,但我仍然会遇到相同的错误。因此,LaTeX似乎很难在关闭enumerate项目之前读取我的listing Close命令。可能是因为我将列表放入了一个
\fbox\parbox


\fbox\parbox
可以很好地处理其中的文本和公式,因此问题不会从那里产生。

您不能使用脆弱的内容(如列表)作为其他宏的参数

无论如何,fbox\parbox确实是多余的-
lstings
有一个框架选项:

\documentclass[12pt]{article}

% Packages
\usepackage[utf8]{inputenc}    % support for accents
\usepackage[T1]{fontenc}
\usepackage[french]{babel}   % doc language
\usepackage{lmodern}
\usepackage[a4paper]{geometry} % marges
\usepackage{xcolor}            % text color
\usepackage{sectsty}           % colorize sections
\usepackage{changepage}
\usepackage{moreverb}          % code with indent
\usepackage{listings}          % display code with magnification
\usepackage{amssymb}
\usepackage{amsmath}           % Text into equation
\usepackage{enumitem}          % Continue enumerate numbers
\usepackage{fourier}           % Double brackets

% Python listing
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\sffamily,
keywordstyle=\textbf,
commentstyle=\color{blue},
showstringspaces=false,
frame=tb, numbers=left }}
% Python environment
\lstnewenvironment{python}[1][]{
\pythonstyle \lstset{#1} }{}

\begin{document}
\begin{enumerate}
    \item On suppose qu'on dispose d'une fonction \texttt{binom(n,k)}, prenant en entrée deux entiers, et qui calcule $\binom{n}{k}$. Ecrire en langage \textsc{Python} une fonction \texttt{bernoulli(n)}, qui prend en entrée un entier naturel, et qui renvoie la liste \texttt{[b\_0, b\_1, ..., b\_n]}. \par
        \fbox{\parbox{\linewidth-2\fboxrule-2\fboxsep}{
            La relation précédente donne, pour $n \ge 2$ :
            \[ \binom{n}{n-1} b_{n-1} = - \sum_{j=0}^{n-2} \binom{n}{j} b_j \]
            autrement dit on a la relation de récurrence, pour tout $m \ge 1$ :
            \[ b_m = -\frac{1}{m+1} \sum_{j=0}^{m-1} \binom{n}{j} b_j \]
            On en déduit le code demandé :
        }}
%        \fbox{\parbox{\linewidth-2\fboxrule-2\fboxsep}{
            \begin{python}[frame=single,linewidth=1.035\linewidth]
def bernoulli(n) :
     liste_bj = [1]
     for m in range(1,n+1):
         b = 0
         for j in range(m):
             b -= binom(m+1,j) * liste_bj[j]
         b /= m+1
         liste_bj.append(b)
     return liste_bj
            \end{python}
%        }} %err1
    \end{enumerate}
    \end{document}


(而且,
\end{document}
明显丢失)

您不能将脆弱内容(如列表)用作其他宏的参数

无论如何,fbox\parbox确实是多余的-
lstings
有一个框架选项:

\documentclass[12pt]{article}

% Packages
\usepackage[utf8]{inputenc}    % support for accents
\usepackage[T1]{fontenc}
\usepackage[french]{babel}   % doc language
\usepackage{lmodern}
\usepackage[a4paper]{geometry} % marges
\usepackage{xcolor}            % text color
\usepackage{sectsty}           % colorize sections
\usepackage{changepage}
\usepackage{moreverb}          % code with indent
\usepackage{listings}          % display code with magnification
\usepackage{amssymb}
\usepackage{amsmath}           % Text into equation
\usepackage{enumitem}          % Continue enumerate numbers
\usepackage{fourier}           % Double brackets

% Python listing
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\sffamily,
keywordstyle=\textbf,
commentstyle=\color{blue},
showstringspaces=false,
frame=tb, numbers=left }}
% Python environment
\lstnewenvironment{python}[1][]{
\pythonstyle \lstset{#1} }{}

\begin{document}
\begin{enumerate}
    \item On suppose qu'on dispose d'une fonction \texttt{binom(n,k)}, prenant en entrée deux entiers, et qui calcule $\binom{n}{k}$. Ecrire en langage \textsc{Python} une fonction \texttt{bernoulli(n)}, qui prend en entrée un entier naturel, et qui renvoie la liste \texttt{[b\_0, b\_1, ..., b\_n]}. \par
        \fbox{\parbox{\linewidth-2\fboxrule-2\fboxsep}{
            La relation précédente donne, pour $n \ge 2$ :
            \[ \binom{n}{n-1} b_{n-1} = - \sum_{j=0}^{n-2} \binom{n}{j} b_j \]
            autrement dit on a la relation de récurrence, pour tout $m \ge 1$ :
            \[ b_m = -\frac{1}{m+1} \sum_{j=0}^{m-1} \binom{n}{j} b_j \]
            On en déduit le code demandé :
        }}
%        \fbox{\parbox{\linewidth-2\fboxrule-2\fboxsep}{
            \begin{python}[frame=single,linewidth=1.035\linewidth]
def bernoulli(n) :
     liste_bj = [1]
     for m in range(1,n+1):
         b = 0
         for j in range(m):
             b -= binom(m+1,j) * liste_bj[j]
         b /= m+1
         liste_bj.append(b)
     return liste_bj
            \end{python}
%        }} %err1
    \end{enumerate}
    \end{document}


(而且
\end{document}
明显缺失)

谢谢你的回复。我试过了,但列表框已经超出了我的页面边距。我想要的是将Python列表放入上一个\fbox\parbox中。我只是将框切成两块,因为它比页面长。@AdrienMerat为了防止框进入边距,可以使用
linewidth=\linewidth
。I增加它是因为您以前的parbox进入了页边空白处,您可以在日志文件中看到警告。如果您必须在框内有一个列表,请查看
tcolorbox
包中的
tcblisting
。@AdrienMerat tcolorboxs还可以避免在页面之间手动打断框的问题,因为它们可以被设置为breakable…谢谢你的回复。我试过了,但列表框已经超出了我的页面边距。我想要的是将Python列表放入上一个\fbox\parbox中。我只是将框切成两块,因为它比页面长。@AdrienMerat为了防止框进入边距,可以使用
linewidth=\linewidth
。我增加了它,因为您以前的parbox进入了页边空白处,您可以在日志文件中看到警告。如果您必须在框内有一个列表,请查看
tcolorbox
包中的
tcolorbox
。@AdrienMerat tcolorbox还可以避免在页面之间手动断开框的问题,因为它们可以通过卡布尔。。。