新环境范围定义不明确

新环境范围定义不明确

我正在尝试编写一个新的环境定理和另一个作为练习。根据我的结果,环境的范围没有得到很好的定义:

  1. 如何去掉插入到行尾的黑色方块?
  2. 如何很好的固定环境练习和示例的范围?谢谢。

下面的图片显示了我想要得到的东西。

\documentclass[11pt]{book}
\usepackage[paperwidth=20cm, paperheight=29cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsmath, amsfonts, amsthm, amssymb}
\usepackage{qtree}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{parskip}
\usepackage{hyperref}
\usepackage{tikz}
\usepackage{listings}
\usetikzlibrary{arrows.meta, arrows}

\definecolor{light-gray}{gray}{0.9}
\newcommand{\code}[1]{\colorbox{light-gray}{\texttt{#1}}}

\newcommand{\phase}[1]{\par\medskip\textbf{#1}\par\nopagebreak}

\usetikzlibrary{arrows.meta,arrows,chains,automata,shapes,matrix,positioning,scopes,calc}

\RequirePackage[framemethod=default]{mdframed} % Required for creating the theorem, definition, exercise and corollary boxes

\definecolor{ocre}{RGB}{70,50,212} % Define the orange color used for highlighting throughout the book

% Exercice box    
\newmdenv[skipabove=7pt,
skipbelow=7pt,
rightline=false,
leftline=true,
topline=false,
bottomline=false,
backgroundcolor=ocre!10,
linecolor=ocre,
innerleftmargin=5pt,
innerrightmargin=5pt,
innertopmargin=5pt,
innerbottommargin=5pt,
leftmargin=0cm,
rightmargin=0cm,
linewidth=4pt]{eBox}

\renewcommand{\qedsymbol}{$\blacksquare$}

\newtheorem{exempleT}{Exemple}[chapter]
\newenvironment{exemple}% environment name
{
\par
    \begin{exempleT}
        %\par\vspace{\baselineskip}\noindent
        %\hfill{\tiny\ensuremath{\blacksquare}}
        \par\vspace{\baselineskip}\noindent
        \tiny\ensuremath{\blacksquare}
        \par\vspace{\baselineskip}\noindent\ignorespaces
        %\ignorespacesafterend
    \end{exempleT}
}

\newtheorem{exerciceT}{Exercice}[chapter]
\newenvironment{exercice}% environment name
{
\par
    \begin{eBox}\begin{exerciceT}
        %\par\vspace{\baselineskip}\noindent
        %\hfill{\tiny\ensuremath{\blacksquare}}
        %\par\vspace{\baselineskip}\noindent
        \hfill{\color{ocre}\tiny\ensuremath{\blacksquare}}
        \par\vspace{\baselineskip}\noindent\ignorespaces
        %\ignorespacesafterend
    \end{exerciceT}\end{eBox}
}

\begin{document}
    \begin{exemple}
        Soit l'expression suivante:

        \code{nouvelle\_valeur = ancienne\_valeur + 12}

        Après avoir lu les symboles issus de l'instruction de l'exemple ci-dessus, l'analyseur va les regrouper en jetons.
    \end{exemple}

Ainsi, considérant cette expression: \code{nouvelle\_valeur = ancienne\_valeur + fact * 1}, pendant la phase de génération de code intermédiaire, ce code de haut niveau est traduit dans un langage de bas niveau, c'est-à-dire en langage machine ainsi:

    \begin{exercice}
            Construisez l'automate à pile pouvant reconnaître le langage $L = \{w|w = a^nb^m| n \geq m\}$
    \end{exercice}      
    \begin{enumerate}
        \item Pour l'expression régulière $\epsilon$, l'AFD correspondant est:
            \begin{tikzpicture}[>=Stealth, shorten >=1pt, auto, node distance=1cm, initial text = Début]
                \node[initial, state](1){1};
                \node[state, accepting](2)[right=of 1]{2};

                \path[->] (1) edge node {$\epsilon$}   (2);
            \end{tikzpicture}

        \item Pour l'expression régulière \code{a}, l'AFD correspondant est:
            Ceci n'est pas encore défini.

    \end{enumerate}
    \begin{exercice}
        Soit l'instruction suivante:
        \begin{lstlisting}[captionpos=b, caption=, label=listing:exempleLexeme_2, basicstyle=\ttfamily]
            int max(int i);
        \end{lstlisting}

        Quel est le nombre total de jetons présents dans cette instruction?

        \emph{Réponse:}

        \begin{itemize}
            \item l’analyseur lexical lit d’abord \code{int} et le trouve valide et l'accepte comme jeton;
            \item \code{max} est lu par celui-ci et s’avère être un nom de fonction valide;
            \item ensuite le symbole \code{(} est reconnu comme jeton;
            \item \code{int}  est aussi un jeton, de même que \code{i} et enfin \code{)};
        \end{itemize}

        Le nombre total de jetons est: 7. Les jetons sont: \code{int}, \code{max}, \code{(}, \code{int}, \code{i}, \code{)}, \code{;}
    \end{exercice}
\end{document}

在此处输入图片描述

相关内容