minted: xleftmargin berechnen

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


fs
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Di 2. Jan 2018, 09:24
Kontaktdaten:

minted: xleftmargin berechnen

Beitrag von fs »

Hallo,

ich nutze das Paket minted zum Einbetten von Programm-Quelltexten in LaTeX-Dokumente. Dabei finde ich es unschön, dass die Zeilennummern in den linken Seitenrand gesetzt werden. Ich möchte stattdessen, dass die Zeilennummern linksbündig mit dem umgebenden Text erscheinen. Wie kann ich dies erreichen?

Ich habe herausgefunden, dass minted eine Option xleftmargin besitzt, mit der ich den Zeilenanfang verschieben kann. Mein Problem ist jetzt, dass ich diese Länge in Abhängigkeit von der Anzahl der Stellen der größten Zeilennummer des Codeabschnitts berechnen muss. D.h. wenn der Codeabschnitt die Zeilen 1 bis 5 umfasst, muss ich die Länge für eine Ziffer berechnen, wenn der Codeabschnitt die Zeilen 90 bist 120 umfasst, für drei Ziffern. Da ich den LaTeX-Code durch ein Programm generiere, kenne ich die maximale Anzahl der Stellen n für jeden Codeabschnitt.

Ist es möglich, ein Makro \myxoffset{n} zu formulieren, dass ich schreiben kann:
\begin{minted}[...,xleftmargin=\myxoffset{n},...]{...}
CODE
\end{minted}
Oder wie löse ich dies am besten?

Was ich momentan mangels tiefergehender LaTeX-Kenntnisse mache, erscheint mir umständlich:
\newlength{\linenumwidth} % Länge einmal vorab definieren
...
% dann für jeden Codeabschnitt:
\settowidth{\linenumwidth}{\scriptsize 999} % Beispiel für dreistellige Zeilennummern
\addtolength{\linenumwidth}{2.5ex}
\begin{minted}[...,xleftmargin=\linenumwidth,...]{...}
CODE
\end{minted}
Oder hat jemand einen ganz anderen Vorschlag für das eigentliche Problem?

Grüße
Frank