minted: xleftmargin berechnen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: minted: xleftmargin berechnen

minted: xleftmargin berechnen

von fs » Di 2. Jan 2018, 10:37

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

Nach oben