iftoggle mit Minipage: Fehler, fehlende Zahl, ungültige Maßeinheit

iftoggle mit Minipage: Fehler, fehlende Zahl, ungültige Maßeinheit

beim Kombinierenwenn umschaltenmitMiniseite, habe ich folgende Fehlermeldung erhalten:

Missing number, treated as zero }
Illegal unit of measure (pt inserted) 
Emergency stop
Text dropped after begin of listing

\iftogglefunktioniert gut in Kombination mit lstlisting (ohne Minipage). Aber ich hätte gerne 2 Listings nebeneinander, entweder C und Python oder C++ und Python, je nach Toggletrue ...

Danke für die Hilfe !

\documentclass[12pt]{article} % classe de document
\usepackage[latin1]{inputenc} % encodage des caractères d'entrée
\usepackage[T1]{fontenc} % encodage de la police
\usepackage[english,frenchb]{babel}% langue

\usepackage{listings}

\usepackage{etoolbox}
\newtoggle{LANGC}
\toggletrue{LANGC}  

\begin{document}

\iftoggle{LANGC}{%
\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=C,caption=code C,frame=tlrb]{Name}
int i = 1;
while (i <= 10) {
printf(" %d", i);
i = i + 1;
}
\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
i = 1
while (i <= 10):
print " ", i
i = i + 1
\end{lstlisting}
\end{minipage}
}{%
\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=C++,caption=code C++,frame=tlrb]{Name}
int i = 1;
while (i <= 10) {
cout << i;
i = i + 1;
}
\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
i = 1
while (i <= 10):
print " ", i
i = i + 1
\end{lstlisting}
\end{minipage}
}         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< error here !
\end{document}

Danke für die Hilfe !

Antwort1

Sie können keine lstlistingUmgebung im Argument eines anderen Befehls haben. Es ist einfach, eine „freistehende“ Form zu haben:

\documentclass[12pt]{article} % classe de document
\usepackage[latin1]{inputenc} % encodage des caractères d'entrée
\usepackage[T1]{fontenc} % encodage de la police
\usepackage[english,frenchb]{babel}% langue

\usepackage{listings}

\usepackage{etoolbox}
\newtoggle{LANGC}
\toggletrue{LANGC}

\newcommand{\doiftoggle}[1]{\iftoggle{#1}{\iftrue}{\iffalse}\ignorespaces}

\begin{document}

\doiftoggle{LANGC}
\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=C,caption=code C,frame=tlrb]{Name}
int i = 1;
while (i <= 10) {
printf(" %d", i);
i = i + 1;
}
\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
i = 1
while (i <= 10):
print " ", i
i = i + 1
\end{lstlisting}
\end{minipage}
\else
\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=C++,caption=code C++,frame=tlrb]{Name}
int i = 1;
while (i <= 10) {
cout << i;
i = i + 1;
}
\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
i = 1
while (i <= 10):
print " ", i
i = i + 1
\end{lstlisting}
\end{minipage}
\fi

\togglefalse{LANGC}

\doiftoggle{LANGC}
\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=C,caption=code C,frame=tlrb]{Name}
int i = 1;
while (i <= 10) {
printf(" %d", i);
i = i + 1;
}
\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
i = 1
while (i <= 10):
print " ", i
i = i + 1
\end{lstlisting}
\end{minipage}
\else
\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=C++,caption=code C++,frame=tlrb]{Name}
int i = 1;
while (i <= 10) {
cout << i;
i = i + 1;
}
\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.45\textwidth}
\begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
i = 1
while (i <= 10):
print " ", i
i = i + 1
\end{lstlisting}
\end{minipage}
\fi

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Danke für die Kommentare, ich werde es versuchen mitWennStruktur (SIEHE UNTEN...), aber für den Moment habe ich geändertAbonnierenZuEingabeliste...etwas mehr Aufwand beim Exportieren der Quelldateien, aber eine Möglichkeit, diese einfacher zu überprüfen

        \iftoggle{LANGC}{%
        \noindent\begin{minipage}{.45\textwidth}
        \lstinputlisting[language=C,caption={Compter de 1 à 10 en C},frame=tlrb]{code000.c}
        \end{minipage}\hfill
        \begin{minipage}{.45\textwidth}
        \lstinputlisting[language=Python,caption={Compter de 1 à 10 en Python},frame=tlrb]{code000.py}
        \end{minipage}
        }{%
        \noindent\begin{minipage}{.45\textwidth}
        \lstinputlisting[language=C++,caption={Compter de 1 à 10 en C++},frame=tlrb]{code000.c++}
        \end{minipage}\hfill
        \begin{minipage}{.45\textwidth}
        \lstinputlisting[language=Python,caption={Compter de 1 à 10 en Python},frame=tlrb]{code000.py}
        \end{minipage}
        }

oder noch kürzer:

        \noindent\begin{minipage}{.45\textwidth}
        \iftoggle{LANGC}{%
        \lstinputlisting[language=C,caption={Compter de 1 à 10 en C},frame=tlrb]{code000.c}
        }{%
        \lstinputlisting[language=C++,caption={Compter de 1 à 10 en C++},frame=tlrb]{code000.c++}
        }
        \end{minipage}\hfill
        \begin{minipage}{.45\textwidth}
        \lstinputlisting[language=Python,caption={Compter de 1 à 10 en Python},frame=tlrb]{code000.py}
        \end{minipage}

BEARBEITEN 1

\Wenn... funktioniert gut !

Hinzufügen:

    \newif\iflangageC
    \langageCtrue

UndAbonnieren:

        \noindent\begin{minipage}{.45\textwidth}
        \iflangageC
          \begin{lstlisting}[language=C,caption=code C,frame=tlrb]{Name}
          int i = 1;
          while (i <= 10) {
            printf(" %d", i);
            ++i;
          }
          \end{lstlisting}
        \else
          \begin{lstlisting}[language=C++,caption=code C++,frame=tlrb]{Name}
          int i = 1;
          while (i <= 10) {
            cout << " " << i;
            ++i;
           }
          \end{lstlisting}
        \fi
        \end{minipage}\hfill
        \begin{minipage}{.45\textwidth}
        \begin{lstlisting}[language=Python, caption=code Python ,frame=tlrb,firstnumber=1]{Name}
        i = 1
        while (i <= 10):
           print " ", i
           i = i + 1
         }
        \end{lstlisting}
        \end{minipage}

verwandte Informationen