LaTeX에 Python 목록을 넣을 수 없습니다.

Aug 31 2020

Python 목록을 a에 넣으려고하는데 \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}

다음과 같은 오류가 있습니다.

  • 문서 클래스에서 : 비상 정지, 치명적 오류 발생, 출력 PDF가 생성되지 않음!
  • err1에서 : \ lst @ next의 인수에는 추가}가 있습니다. \ lst @ next가 완료되기 전에 단락이 끝났습니다. 추가} 또는 잊어 버린 \ endgroup
  • \ end {enumerate} : \ begin {python}이 \ end {enumerate}에 의해 끝남
  • \ end {document} : \ begin {enumerate}가 \ end {document}에 의해 끝났습니다. 내부 수직 모드에서는 '\ end'를 사용할 수 없습니다. {삽입 됨

나는 프리앰블에 "파이썬 목록 '과'파이썬 환경"을 지우고 교체 시도 \begin{python}\begin{listings}(과 같은 \end코드의 표준 프리젠 테이션 내 LaTeX의 프로젝트를 재설정),하지만 난 여전히 같은 오류를 얻을. 따라서 LaTeX는 열거 형을 닫기 전에 목록 닫기 명령이 입력되었음을 읽는 데 어려움이있는 것 같습니다. 아마도 목록을 \fbox\parbox?

\fbox\parbox문제가 거기에서 나오지 않도록 잘 텍스트와 그것에 식으로 작동합니다.

답변

samcarter_is_at_topanswers.xyz Aug 31 2020 at 06:38

목록과 같은 깨지기 쉬운 콘텐츠를 다른 매크로의 인수로 사용해서는 안됩니다.

어쨌든 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}분명히 누락되었습니다)