Kontext
Ich schreibe ein anleitungsähnliches Dokument in LaTeX, in dem ich erkläre, wie man ein bestimmtes Linux-basiertes Gerät erstellt. Ein Teil der Arbeit, das Gerät neu zu erstellen, besteht darin, kleine Codestücke in Bash oder Python zu schreiben und Konfigurationsdateien zu bearbeiten.
All diese Elemente sollten im Dokument enthalten sein. Um es neu erstellen zu können, muss man natürlich den Dateinamen und den Dateiinhalt kennen. Mir gefällt, wie die Arch-Leute das auf ihrenWiki, sauber und einfach:
Zur Veranschaulichung: „/etc/systemd/system/unit.d/customexec.conf“ ist der Dateiname, während die drei Zeilen darunter der eigentliche Text in der Datei sind.
Schließlich möchte ich, dass der Code syntaxhervorgehoben wird. Ich verwendegeprägtdafür. Ich lege auch Wert auf Zeilennummern. Das erleichtert das Referenzieren erheblich.
Was ich jetzt habe
Ich habe mit mehreren Beispielen herumgespielt, die ich im Internet und in der erstellten Dokumentation gefunden habe. Was ich habe, gefällt mir jedoch immer noch nicht. Hier ist ein MWE:
\documentclass{report}
\usepackage[table,usenames,dvipsnames,hyperref]{xcolor}
\usepackage{listings}
\usepackage{caption}
\DeclareCaptionStyle{mystyle}%
[margin=2mm,justification=raggedright]%
{font=footnotesize,labelfont=sc,margin={100mm,10mm}}
\DeclareCaptionFormat{continued}{File#2#3}
\captionsetup{style=mystyle, indention=10cm, format=continued}
\usepackage[newfloat]{minted}
\SetupFloatingEnvironment{listing}{name=File}
\definecolor{mintedbackground}{rgb}{0.95,0.95,0.95}
% This is the bash profile used throughout the document.
% I've also got one for Python and console text (regular commands)
\newminted[bashcode]{bash}{
bgcolor=mintedbackground,
fontfamily=tt,
linenos=true,
numberblanklines=true,
numbersep=12pt,
numbersep=5pt,
gobble=0,
frame=leftline,
framesep=2mm,
funcnamehighlighting=true,
tabsize=4,
obeytabs=false,
mathescape=false
samepage=false,
showspaces=false,
showtabs =false,
texcl=false,
baselinestretch=1.2,
fontsize=\footnotesize,
breaklines=true,
}
\begin{document}
\begin{listing}[H]
\caption{/files/location/on/system.sh}
\begin{bashcode}
#!/bin/bash
echo "I am a bash file"
\end{bashcode}
\end{listing}
\end{document}
Es wird Folgendes ausgegeben (Ausschnitt der Originalausgabe):
Wie Sie im MWE sehen können, missbrauche ich die Beschriftung als Dateinamen. Das gefällt mir im Allgemeinen nicht, aber ich vermute, dass es auch nicht in Frage kommt, die Beschriftung sauber in den Hintergrund von Minted einzubinden, da die Beschriftung außerhalb des Geltungsbereichs des Minted-Abschnitts liegt.
Notiz:MWE erfordert Minted 2. Meine Distribution (Kubuntu 14.04) wird mit einer älteren Version ausgeliefert. Ich habe die .sty-Datei hier heruntergeladen: https://raw.githubusercontent.com/gpoore/minted/master/source/minted.sty (leider habe ich nicht genug Punkte, um mehr als zwei Links einzufügen).
Die Frage
Einfach ausgedrückt: Wie komme ich dem Arch-Wiki-Beispiel nahe?
Ich bin mit einer Lösung zufrieden, die Minted nicht verwendet. Die Lösung muss auch nicht unbedingt schön anzusehen sein. Ich überlege gerade, ob ich solche Snippets in einer externen HTML-Datei erstellen und dann einbinden soll. Solange es praktikabel bleibt, ist mir das egal. Das Dokument ist in ein paar Wochen fertig und ich muss nicht weiter daran arbeiten, also ist es nicht so wichtig, dass alles automatisiert und integriert ist.
Vielen Dank im Voraus! Bitte lassen Sie mich wissen, wenn ich Informationen vergessen habe.
Antwort1
Sie können tcolorbox
Pakete verwenden, um Ihre Einträge zu konfigurieren. Es funktioniert mit minted
. Als Nächstes folgt die mehr oder weniger standardmäßige Ausgabe, die einfach an Ihren minted
Stil angepasst wurde.
\documentclass{report}
\usepackage[skins,minted]{tcolorbox}
\definecolor{mintedbackground}{rgb}{0.95,0.95,0.95}
% This is the bash profile used throughout the document.
% I've also got one for Python and console text (regular commands)
\setminted[bash]{
bgcolor=mintedbackground,
fontfamily=tt,
linenos=true,
numberblanklines=true,
numbersep=12pt,
numbersep=5pt,
gobble=0,
frame=leftline,
framesep=2mm,
funcnamehighlighting=true,
tabsize=4,
obeytabs=false,
mathescape=false
samepage=false,
showspaces=false,
showtabs =false,
texcl=false,
baselinestretch=1.2,
fontsize=\footnotesize,
breaklines=true,
}
\newtcblisting{myminted}[2][]{listing engine=minted, listing only,#1, title=#2, minted language=bash, colback=mintedbackground}
\begin{document}
\begin{myminted}{/files/location/on/system.sh}
#!/bin/bash
echo "I am a bash file"
\end{myminted}
\end{document}
Einige Farb- und Größenanpassungen fehlen, aber das Ergebnis ähnelt eher der vom OP vorgeschlagenen Box
\documentclass{report}
\usepackage[skins,minted]{tcolorbox}
\definecolor{mintedbackground}{rgb}{0.95,0.95,0.95}
\definecolor{mintedframe}{rgb}{0.70,0.85,0.95}
% This is the bash profile used throughout the document.
% I've also got one for Python and console text (regular commands)
\setminted[bash]{
bgcolor=mintedbackground,
fontfamily=tt,
linenos=true,
numberblanklines=true,
numbersep=12pt,
numbersep=5pt,
gobble=0,
frame=leftline,
framesep=2mm,
funcnamehighlighting=true,
tabsize=4,
obeytabs=false,
mathescape=false
samepage=false,
showspaces=false,
showtabs =false,
texcl=false,
baselinestretch=1.2,
fontsize=\footnotesize,
breaklines=true,
}
\newtcblisting{myminted}[2][]{enhanced, listing engine=minted,
listing only,#1, title=#2, minted language=bash,
coltitle=mintedbackground!30!black,
fonttitle=\ttfamily\footnotesize,
sharp corners, top=0mm, bottom=0mm,
title code={\path[draw=mintedframe,dashed, fill=mintedbackground](title.south west)--(title.south east);},
frame code={\path[draw=mintedframe, fill=mintedbackground](frame.south west) rectangle (frame.north east);}
}
\begin{document}
\begin{myminted}{/files/location/on/system.sh}
#!/bin/bash
echo "I am a bash file"
\end{myminted}
\end{document}
Antwort2
Diese Antwort basiert auf Ignasis erstem Beitrag. Ich begann, ihn zu verfeinern, nur um festzustellen, dass er seine Antwort bereits so bearbeitet hatte, dass sie genau meinen Anforderungen entsprach. Trotzdem, für das, was es wert ist, und in der Hoffnung, dass jemand davon profitiert, hier mein bisheriger Ansatz. Allerdings erfordert er eine neuere Version von tcolorbox als die, die mit Texlive in den Repos geliefert wurde.
Das ist mein Ergebnis, nachdem ich an seinem ersten Beispiel gearbeitet hatte:
\documentclass{report}
\usepackage[skins,minted]{tcolorbox}
\definecolor{mintedbackground}{rgb}{0.95,0.95,0.95}
% This is the bash profile used throughout the document.
% I've also got one for Python and console text (regular commands)
\setminted[bash]{
bgcolor=mintedbackground,
fontfamily=tt,
linenos=true,
numberblanklines=true,
numbersep=12pt,
numbersep=5pt,
gobble=0,
frame=leftline,
framesep=2mm,
funcnamehighlighting=true,
tabsize=4,
obeytabs=false,
mathescape=false
samepage=false,
showspaces=false,
showtabs =false,
texcl=false,
baselinestretch=1.2,
fontsize=\footnotesize,
breaklines=true,
}
\newtcblisting{myminted}[2][]{minted language=bash,
enhanced, listing engine=minted,
listing only, #1, title=#2,
colback=mintedbackground, colbacktitle=mintedbackground, coltitle=darkgray,
arc=0pt,outer arc=0pt,
boxrule=0mm,
toptitle=1mm, bottomtitle=1mm,
titlerule=1pt, colframe=gray, titlerule style={mintedbackground, dashed}
}
\begin{document}
\begin{myminted}{/files/location/on/system.sh}
#!/bin/bash
echo "I am a bash file"
\end{myminted}
\end{document}
Das ergibt:
Antwort3
Die akzeptierte Antwort von Ignasi hat bei mir nicht funktioniert. Das Hinzufügen
minted options={python3}
innerhalb der \newtcblisting
Definition hat bei mir geholfen.
Antwort4
Wenn Sie eine Antwort mit einem anderen Paket zulassen, verwende ich persönlichlistings
mit gutem Erfolg.
\documentclass{report}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[title=/files/location/on/system.sh,language=bash,numbers=left]
#!/bin/bash
echo "I am a bash file"
\end{listing}
\end{document}
Ich habe es noch nicht ausprobiert minted
. Mir gefiel, listings
wie einfach es war, a) Syntaxhervorhebung für eine domänenspezifische Sprache zu erstellen, die ich verwendete, und b) benutzerdefinierte Hervorhebung zu verwenden, um einen bestimmten Teil des Codes anders darzustellen. Außerdem gibt es viele Darstellungs-/Stiloptionen.