
我使用minted
套件來獲取帶有背景顏色的語法著色。我知道它對印表機非常不友好,但我使用它。
我的目標是使背景矩形顏色採用羊毛頁寬度。但所包含的程式碼必須保持在常規頁邊距內。
因此,使用以下 MWE:
\documentclass[a4paper]{article}
\usepackage{minted,xcolor}
\usemintedstyle{monokai}
\definecolor{bg}{HTML}{282828} % from https://github.com/kevinsawicki/monokai
\begin{document}
{Code Example:}
\begin{minted}[bgcolor=bg,
frame=lines,
framesep=2mm]{python}
#!/usr/bin/env python2
def example_function():
return "hello world"
a = 5
b = "I am python code"
\end{minted}
\end{document}
我想得到以下渲染效果:
tcolorbox
我嘗試用and來實現adjustbox
,但它不會保留文字的邊距。
那麼,我怎麼才能得到這個渲染圖呢?
編輯 :
我這樣修改我的 MWE:
\documentclass[11pt,letterpaper]{article}
\usepackage[breakable]{tcolorbox}
\usepackage{minted,xcolor}
\usepackage{xcolor,eso-pic}
\usepackage[savepos]{zref}
\usepackage{color}
\usepackage{lipsum}
\definecolor{bg}{HTML}{282828} % from https://github.com/kevinsawicki/monokai
\newenvironment{widthcode}%
{%
\begin{tcolorbox}[breakable,size=tight,oversize,
sharp corners,
colback=blue,
left=150pt,
right=150pt,
]}%
{%
\end{tcolorbox}
}
\setminted[text]{breaklines}
\setminted{bgcolor=bg,
linenos,
breaklines,
fontsize=\footnotesize}
\begin{document}
\begin{minted}{python}
#!/usr/bin/env python2
def example_function():
return "hello world"
a = 5
b = "I am python code"
\end{minted}
\lipsum[2]
\begin{minted}{sh}
#!/bin/sh
# Simple line count example, using sh
#
# sh tutorial: http://linuxconfig.org/Bash_scripting_Tutorial#8-2-read-file-into-bash-array
# My scripting link: http://www.macs.hw.ac.uk/~hwloidl/docs/index.html#scripting
#
# Usage: ./line_count.sh file
# -----------------------------------------------------------------------------
# Link filedescriptor 10 with stdin
exec 10<&0
# stdin replaced with a file supplied as a first argument
exec < $1
# remember the name of the input file
in=$1
# init
file="current_line.txt"
let count=0
# this while loop iterates over all lines of the file
while read LINE
do
# increase line counter
((count++))
# write current line to a tmp file with name $file (not needed for counting)
echo $LINE > $file
# this checks the return code of echo (not needed for writing; just for demo)
if [ $? -ne 0 ]
then echo "Error in writing to file ${file}; check its permissions!"
fi
done
echo "Number of lines: $count"
echo "The last line of the file is: `cat ${file}`"
# Note: You can achieve the same by just using the tool wc like this
echo "Expected number of lines: `wc -l $in`"
# restore stdin from filedescriptor 10
# and close filedescriptor 10
exec 0<&10 10<&-
mkvmerge --machin-chouette
\end{minted}
\lipsum[2]
\lipsum[2-4]
\begin{widthcode}
\begin{minted}{sh}
#!/bin/sh
# Simple line count example, using sh
#
# sh tutorial: http://linuxconfig.org/Bash_scripting_Tutorial#8-2-read-file-into-bash-array
# My scripting link: http://www.macs.hw.ac.uk/~hwloidl/docs/index.html#scripting
#
# Usage: ./line_count.sh file
# -----------------------------------------------------------------------------
# Link filedescriptor 10 with stdin
exec 10<&0
# stdin replaced with a file supplied as a first argument
exec < $1
# remember the name of the input file
in=$1
# init
file="current_line.txt"
let count=0
# this while loop iterates over all lines of the file
while read LINE
do
# increase line counter
((count++))
# write current line to a tmp file with name $file (not needed for counting)
echo $LINE > $file
# this checks the return code of echo (not needed for writing; just for demo)
if [ $? -ne 0 ]
then echo "Error in writing to file ${file}; check its permissions!"
fi
done
echo "Number of lines: $count"
echo "The last line of the file is: `cat ${file}`"
# Note: You can achieve the same by just using the tool wc like this
echo "Expected number of lines: `wc -l $in`"
# restore stdin from filedescriptor 10
# and close filedescriptor 10
exec 0<&10 10<&-
mkvmerge --machin-chouette
\end{minted}
\end{widthcode}
\end{document}
如您所見,我創建了一個widthcode
環境,從頁面左側到右側放置了一個大的藍色背景。這 widthcode
工作正常並且允許長文本分頁:
但是,當我將一個minted
環境放入其中widthcode
時,它失敗了:
所以,問題變成了:如何讓minted
環境變得可破壞tcolorbox
?