我正在尝试编写一个新的环境定理和另一个作为练习。根据我的结果,环境的范围没有得到很好的定义:
- 如何去掉插入到行尾的黑色方块?
- 如何很好的固定环境练习和示例的范围?谢谢。
下面的图片显示了我想要得到的东西。
\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}