如何解决无法在LaTeX中放置Python清单
我正在尝试将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完成之前,段落结束了。额外}或忘记的\ endgroup
- 在\ end {enumerate}上:\ begin {python}以\ end {enumerate}结尾
- 在\ end {document}上:\ begin {enumerate}以\ end {document}结尾。在内部垂直模式下不能使用'\ end'。缺少{已插入
我尝试删除序言中的“ python列表”和“ python环境”,并将\begin{python}
替换为\begin{listings}
(与\end
相同)以将我的LaTeX项目重置为标准代码演示,但我仍然遇到相同的错误。因此,看来LaTeX很难读懂我的列表关闭命令是在关闭枚举之前被放置的。也许是因为我将列表放入了\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}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。