Zeilenabstand des Latexalgorithmus

Sep 14 2020

Ich habe einen Algorithmus in Latex erstellt, aber es wird ein zusätzlicher Zeilenabstand eingefügt. Ich habe derzeit den folgenden Code

\documentclass{article}

\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{caption}

\begin{document}

This this this

\begin{algorithm}
    \algblock[TryCatchFinally]{try}{endtry}
    \algcblock[TryCatchFinally]{TryCatchFinally}{finally}{endtry}
    \algcblockdefx[TryCatchFinally]{TryCatchFinally}{catch}{endtry}
    [1]{\textbf{catch} #1}
    {\textbf{end try}}  
    \caption{Task}
    \begin{algorithmic}[1]
        \Procedure {Task Check}{}        
        \State \parbox[t]{313pt}{$aaaaaaaaa\textunderscore aaaaaaa = Thread(aaaaaa=call\textunderscore service, args=( "aaaaa\textunderscore aaaaaa\textunderscore generation\textunderscore aaaa", Craaaaalan, "load\textunderscore plan\textunderscore aaaa") )$}
        \State \parbox[t]{313pt}{$aaaa-aaaaaaaaa\textunderscore aaaaaaa = Thread(aaaaaa=call\textunderscore service, args=( "aaaaa\textunderscore aaaaaa\textunderscore generation\textunderscore aaaa", Craaaaalan, "load\textunderscore plan\textunderscore aaaa") )$}
        \State \parbox[t]{313pt}{$aaaaaa\textunderscore aaaaaaa = Thread(aaaaaa=call\textunderscore service, args=( "aaaaa\textunderscore aaaaaa\textunderscore generation\textunderscore aaaa", Craaaaalan, "load\textunderscore plan\textunderscore aaaa") )$}     
        \EndProcedure
    \end{algorithmic}
\end{algorithm}

\end{document}

und die Ausgabe ist ungefähr so:

Die drei Zustände in den Bildern sind identische Serviceabrufe mit einer geringfügigen Änderung. Die geringfügige Änderung ist die Verwendung unterschiedlicher Wörter und damit eine Differenzlänge. Der beigefügte Beispielcode enthält die genaue Länge. Die Ausgabe von Zustand 7 ist das, was ich auch für die anderen Zustände benötige, aber aufgrund einiger zusätzlicher Wörter folgt sie nicht dem Format. Irgendeine Idee, wie man Zustand 5 und ** Zustand 6 ** korrigiert, so dass es wie Zustand 7 aussieht ?

Farbunterschied mit und ohne Mathematikmodus

Vielen Dank

Antworten

2 samcarter_is_at_topanswers.xyz Sep 14 2020 at 19:54

Der Mathematikmodus ist völlig ungeeignet, um wörtliche Inhalte wie Variablennamen festzulegen. Die fehlenden Zeilenumbrüche sollten Ihre geringste Sorge sein. Das Kerning ist durcheinander, die Anführungszeichen sind falsch, minus Zeichen anstelle von Bindestrichen ...

Sie könnten es mit normalem Text versuchen, aber ich würde Dinge wie den Quellcode setzen, z. B. mit dem listingsPaket:

\documentclass{article}



\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{caption}

\usepackage{listings}
\lstset{basicstyle=\ttfamily, breaklines}

\begin{document}

\begin{algorithm}
    \algblock[TryCatchFinally]{try}{endtry}
    \algcblock[TryCatchFinally]{TryCatchFinally}{finally}{endtry}
    \algcblockdefx[TryCatchFinally]{TryCatchFinally}{catch}{endtry}
    [1]{\textbf{catch} #1}
    {\textbf{end try}}  
    \caption{Task}
    \begin{algorithmic}[1]
        \Procedure {Task Check}{}        
        \State \parbox[t]{313pt}{\raggedright\lstinline{aaaaaaaaa_aaaaaaa = Thread(aaaaaa=call_service, args=("aaaaa_aaaaaa_generation_aaaa", Craaaaalan, "load_plan_aaaa"))}}
        \State \parbox[t]{313pt}{\raggedright\lstinline{aaaa-aaaaaaaaa_aaaaaaa = Thread(aaaaaa=call_service, args=("aaaaa_aaaaaa_generation_aaaa", Craaaaalan, "load_plan_aaaa"))}}
        \State \parbox[t]{313pt}{\raggedright\lstinline{aaaaaa_aaaaaaa = Thread(aaaaaa=call_service, args=("aaaaa_aaaaaa_generation_aaaa", Craaaaalan, "load_plan_aaaa"))}}     
        \EndProcedure
    \end{algorithmic}
\end{algorithm}

\end{document}

Oder wenn Sie auf Kursivschrift bestehen:

\documentclass{article}



\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{caption}

\usepackage{listings}
\lstset{basicstyle=\itshape, breaklines}

\begin{document}

\begin{algorithm}
    \algblock[TryCatchFinally]{try}{endtry}
    \algcblock[TryCatchFinally]{TryCatchFinally}{finally}{endtry}
    \algcblockdefx[TryCatchFinally]{TryCatchFinally}{catch}{endtry}
    [1]{\textbf{catch} #1}
    {\textbf{end try}}  
    \caption{Task}
    \begin{algorithmic}[1]
        \Procedure {Task Check}{}        
        \State \parbox[t]{313pt}{\raggedright\lstinline{aaaaaaaaa_aaaaaaa = Thread(aaaaaa=call_service, args=("aaaaa_aaaaaa_generation_aaaa", Craaaaalan, "load_plan_aaaa"))}}
        \State \parbox[t]{313pt}{\raggedright\lstinline{aaaa-aaaaaaaaa_aaaaaaa = Thread(aaaaaa=call_service, args=("aaaaa_aaaaaa_generation_aaaa", Craaaaalan, "load_plan_aaaa"))}}
        \State \parbox[t]{313pt}{\raggedright\lstinline{aaaaaa_aaaaaaa = Thread(aaaaaa=call_service, args=("aaaaa_aaaaaa_generation_aaaa", Craaaaalan, "load_plan_aaaa"))}}     
        \EndProcedure
    \end{algorithmic}
\end{algorithm}

\end{document}

Oder vielleicht sogar mit echten Auflistungen mit Zeilenumbrüchen usw., um die Dinge besser lesbar zu machen:

\documentclass{article}



\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{caption}

\usepackage{listings}
\lstset{basicstyle=\ttfamily, breaklines}

\begin{document}

\begin{algorithm}
    \algblock[TryCatchFinally]{try}{endtry}
    \algcblock[TryCatchFinally]{TryCatchFinally}{finally}{endtry}
    \algcblockdefx[TryCatchFinally]{TryCatchFinally}{catch}{endtry}
    [1]{\textbf{catch} #1}
    {\textbf{end try}}  
    \caption{Task}
    \begin{algorithmic}[1]
        \Procedure {Task Check}{}        
        \State \vspace*{-1.46\baselineskip}\begin{lstlisting}
aaaaaaaaa_aaaaaaa = Thread(
  aaaaaa=call_service, 
  args=(
    "aaaaa_aaaaaa_generation_aaaa", 
    Craaaaalan, 
    "load_plan_aaaa"
  )
)
\end{lstlisting}
        \State \vspace*{-1.46\baselineskip}\begin{lstlisting}
aaaa-aaaaaaaaa_aaaaaaa = Thread(
  aaaaaa=call_service, 
  args=(
    "aaaaa_aaaaaa_generation_aaaa", 
    Craaaaalan, 
    "load_plan_aaaa"
  )
)
        \end{lstlisting}
        \State \vspace*{-1.46\baselineskip}\begin{lstlisting}
aaaaaa_aaaaaaa = Thread(
  aaaaaa=call_service, 
  args=(
    "aaaaa_aaaaaa_generation_aaaa", 
    Craaaaalan, 
    "load_plan_aaaa"
  )
)
        \end{lstlisting}     
        \EndProcedure
    \end{algorithmic}
\end{algorithm}

\end{document}