tcolorbox 中的 verbatim 环境导致错位

tcolorbox 中的 verbatim 环境导致错位

我试图将两个代码示例并排放置tcolorbox。问题是我使用的alltt环境是环境的派生项verbatim

这是我的代码:

\begin{tcolorbox}[sidebyside,title=Exemple]
    On souhaite créer trois variables \verb~a~, \verb~b~ et \verb~c~ avec des chiffres puis faire des opérations dessus.
    \begin{alltt}
    {\color{green!50!black!}a} ← 2       (la variable a vaut 2)
    {\color{green!50!black!}b} ← 3       (la variable b vaut 3)
    {\color{green!50!black!}c} ← {\color{green!50!black!}a} + {\color{green!50!black!}b}
    {\color{red}afficher} {\color{green!50!black!}c}
    \(\Longrightarrow\) 5
    \end{alltt}
    \tcblower
    On souhaite créer deux variables \verb~prenom~ et \verb~nom~ avec du texte.
    \begin{alltt}
    {\color{green!50!black!}prenom} ← "Jean"
    {\color{green!50!black!}nom} ← "Jaurès"
    {\color{red}afficher {\color{green!50!black!}prenom} + {\color{green!50!black!}nom}}
    \(\Longrightarrow\) "Jean Jaurès"
    \end{alltt}
\end{tcolorbox}

结果如下:

tcolorbox 的问题

如您所见,问题在于第二列的起始位置与第一列的起始位置不同,而是较低。我认为这是因为环境verbatim(嗯alltt,因为当我删除它时,我没有遇到这个问题。

答案1

你需要sidebyside align=top

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage[many]{tcolorbox}
\usepackage{alltt}

\begin{document}

\begin{tcolorbox}[
  sidebyside,
  sidebyside align=top,
  title=Exemple
]
  On souhaite créer trois variables \verb~a~, \verb~b~ et \verb~c~ avec
  des chiffres puis faire des opérations dessus.
  \begin{alltt}
  {\color{green!50!black!}a} ← 2       (la variable a vaut 2)
  {\color{green!50!black!}b} ← 3       (la variable b vaut 3)
  {\color{green!50!black!}c} ← {\color{green!50!black!}a} + {\color{green!50!black!}b}
  {\color{red}afficher} {\color{green!50!black!}c}
  \(\Longrightarrow\) 5
  \end{alltt}
  \tcblower
  On souhaite créer deux variables \verb~prenom~ et \verb~nom~ avec du texte.
  \begin{alltt}
  {\color{green!50!black!}prenom} ← "Jean"
  {\color{green!50!black!}nom} ← "Jaurès"
  {\color{red}afficher {\color{green!50!black!}prenom} + {\color{green!50!black!}nom}}
  \(\Longrightarrow\) "Jean Jaurès"
  \end{alltt}
\end{tcolorbox}

\end{document}

在此处输入图片描述

当然,更好的代码是

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage[many]{tcolorbox}
\usepackage{alltt}

\colorlet{one}{green!50!black!}
\colorlet{two}{red}
\newcommand{\OO}[1]{\textcolor{one}{#1}}
\newcommand{\TT}[1]{\textcolor{two}{#1}}

\begin{document}

\begin{tcolorbox}[
  sidebyside,
  sidebyside align=top,
  title=Exemple
]
  On souhaite créer trois variables \verb~a~, \verb~b~ et \verb~c~ avec
  des chiffres puis faire des opérations dessus.
  \begin{alltt}
  \OO{a} ← 2       (la variable a vaut 2)
  \OO{b} ← 3       (la variable b vaut 3)
  \OO{c} ← \OO{a} + \OO{b}
  \TT{afficher} \OO{c}
  \(\Longrightarrow\) 5
  \end{alltt}
  \tcblower
  On souhaite créer deux variables \verb~prenom~ et \verb~nom~ avec du texte.
  \begin{alltt}
  \OO{prenom} ← "Jean"
  \OO{nom} ← "Jaurès"
  \TT{afficher} \OO{prenom} + \OO{nom}
  \(\Longrightarrow\) "Jean Jaurès"
  \end{alltt}
\end{tcolorbox}

\end{document}

重命名\OO、和\TT,使其在您的上下文中更加语义化。onetwo

相关内容