Arch Wiki のように、コード スニペットの上にファイル名を表示するにはどうすればよいでしょうか?

Arch Wiki のように、コード スニペットの上にファイル名を表示するにはどうすればよいでしょうか?

コンテクスト

私は、特定の Linux ベースのデバイスを作成する方法についてのチュートリアルのようなドキュメントを LaTeX で書いています。デバイスを再作成するための作業の一部は、Bash または Python で小さなコードを記述し、構成ファイルを編集することです。

これらはすべてドキュメントに含まれている必要があります。もちろん、それを再現するには、ファイル名とファイルの内容を知っておく必要があります。私は、Archの人たちが自分のドキュメントでそれを実行する方法が好きです。ウィキ、すっきりシンプル:

[arch wiki][1]からの抜粋

たとえば、「/etc/systemd/system/unit.d/customexec.conf」はファイル名ですが、以下の 3 行はファイル内の実際のテキストです。

最後に、コードの構文をハイライト表示します。鋳造されたそのために。また、行番号があることも重要です。行番号があると参照がずっと簡単になります。

私が今持っているもの

インターネットで見つけたいくつかの例と、作成されたドキュメントを試してみました。しかし、まだ満足できません。これが 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}

出力は次のようになります (元の出力の一部)。

上記のMWEの結果

MWE でわかるように、キャプションをファイル名として誤って使用しています。これは一般的には好きではありませんが、キャプションが minted セクションの範囲外にあるため、キャプションを minted の背景の一部にきれいにすることも問題外だと思います。

注記:MWE には minted 2 が必要です。私のディストリビューション (Kubuntu 14.04) には古いバージョンが付属しています。.sty ファイルをここからダウンロードしました: https://raw.githubusercontent.com/gpoore/minted/master/source/minted.sty (申し訳ありませんが、ポイントが足りないため、2 つ以上のリンクを含めることができません)。

質問

簡単に言えば、Arch Wiki の例に近づくにはどうすればよいのでしょうか?

minted を利用しないソリューションでも構いません。ソリューションは見た目に美しいものでなくても構いません。私は今、外部 HTML ファイルにそのようなスニペットを作成して、それを含めることを考えています。それが機能する限り、私にとっては問題ありません。ドキュメントは数週間で完成し、作業を続ける必要はないので、すべてを自動化して統合することはそれほど重要ではありません。

よろしくお願いします。情報が不足している場合はお知らせください。

答え1

パッケージを使用してtcolorboxリストを設定できます。 で動作しますminted。次は、スタイルに合わせてカスタマイズされた、ほぼデフォルトの出力になりますminted

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

ここに画像の説明を入力してください

色とサイズの調整がいくつか欠けていますが、結果はOPが提案したボックスに似ています。

ここに画像の説明を入力してください

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

答え2

この回答は、Ignasi の最初の投稿に基づいています。私がそれを改良し始めたところ、彼がすでに自分の回答を編集して、まさに私が必要としているものになっていることがわかりました。それでも、価値あるものとして、そして誰かがそこから利益を得られることを願って、これがこれまでの私のアプローチです。ただし、リポジトリの texlive に同梱されているものよりも新しいバージョンの tcolorbox が必要です。

これは、彼の最初の例に取り組んだ後に私が思いついたものです。

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

つまり、次のようになります。

ここに画像の説明を入力してください

答え3

Ignasi による承認済みの回答は私にはうまくいきませんでした。 定義minted options={python3} 内に追加することで\newtcblistingうまくいきました。

答え4

別のパッケージを使用した回答を許可する場合は、個人的にはlistings良い効果がありました。

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

まだ試していませんがminted、a) 使用していたドメイン固有言語の構文強調表示、b) カスタム強調表示を使用してコードの特定部分を異なる方法でレンダリングすることの簡単さが気に入りましたlistings。レンダリング/スタイル オプションも多数あります。

関連情報