情境
我正在用 LaTeX 編寫一個類似教程的文檔,介紹如何建立某個基於 Linux 的裝置。重新建立裝置的部分工作是用 Bash 或 Python 編寫小段程式碼,並編輯設定檔。
所有這些都應該包含在文件中。當然,為了能夠重新創建它,人們應該知道檔案名稱和檔案內容。我喜歡拱門人在他們的身上做的方式維基百科,乾淨簡單:
舉例來說,「/etc/systemd/system/unit.d/customexec.conf」是檔名,而下面的三行是檔案中的實際文字。
最後,我希望程式碼能夠語法突出顯示。我用鑄造的為了那個原因。我也很重視行號。這使得引用它們變得更加容易。
我現在擁有的
我嘗試過在互聯網上找到的幾個示例和創建的文檔。但我仍然不喜歡我所擁有的。這是一個 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 中看到的,我誤用了標題作為檔案名稱。我通常不喜歡這個,但我想乾淨地使標題成為 minted 背景的一部分也是不可能的,因為標題超出了 minted 部分的範圍。
筆記:MWE 需要 minted 2。我在這裡下載了 .sty 檔案:https://raw.githubusercontent.com/gpoore/minted/master/source/minted.sty(抱歉,沒有足夠的點數來包含兩個以上的連結)。
問題
簡而言之,我如何接近 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
伊格納西接受的答案對我沒效。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
;我喜歡listings
它是多麼容易創建:a)為我正在使用的特定於域的語言進行語法突出顯示,b)使用自定義突出顯示以不同的方式呈現程式碼的特定部分。還有很多渲染/樣式選項。