Interlinea dell'algoritmo Latex

Sep 14 2020

Ho creato un algoritmo in lattice ma è stata inserita una spaziatura di linea extra. Al momento ho il seguente codice

\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}

e l'output è un po 'come questo:

I tre stati nelle immagini sono chiamate di servizio identiche con una piccola modifica. Il cambiamento minore è l'uso di parole diverse e quindi una differenza di lunghezza. Il codice di esempio allegato contiene la lunghezza esatta. L'output dello stato 7 è ciò di cui ho bisogno anche per gli altri stati, ma a causa di alcune parole in più non segue il formato. Qualche idea su come correggere lo stato 5 e lo ** stato 6 ** in modo che assomigli allo stato 7 ?

Differenza di colore con e senza modalità matematica

Grazie

Risposte

2 samcarter_is_at_topanswers.xyz Sep 14 2020 at 19:54

La modalità matematica è totalmente inadatta per impostare contenuto letterale come nomi di variabili. Le interruzioni di riga mancanti dovrebbero essere l'ultima delle tue preoccupazioni. La crenatura è incasinata, le virgolette sono sbagliate, i segni meno invece dei trattini ...

Potresti provare con un testo normale irregolare, ma io comporrei cose come il codice sorgente, ad esempio usando il listingspacchetto:

\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}

O se insisti sul carattere corsivo:

\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}

O forse anche con inserzioni reali con interruzioni di riga ecc. Per rendere le cose più leggibili:

\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}