
Ich verwende minted
ein Paket, um Syntaxfärbung mit Hintergrundfarbe zu erhalten. Ich weiß, dass es höchst druckerunfreundlich ist, aber ich verwende es.
Mein Ziel ist es, die Farbe des Hintergrundrechtecks an die Breite der Wollseite anzupassen. Der enthaltene Code muss jedoch innerhalb der normalen Ränder bleiben.
Also mit folgendem 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}
Ich hätte gern folgendes Rendering:
tcolorbox
Ich versuche, es mit und zu machen adjustbox
, aber dadurch bleibt der Rand für den Text nicht erhalten.
Also, wie kann ich dieses Rendering erhalten?
Bearbeiten :
Ich ändere mein MWE folgendermaßen:
\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}
Wie Sie sehen, habe ich die widthcode
Umgebung erstellt, indem ich einen großen blauen Hintergrund von der linken zur rechten Seite der Seite eingefügt habe. Das widthcode
funktioniert gut und ermöglicht Seitenumbrüche für lange Texte:
Aber wenn ich eine minted
Umgebung in eine widthcode
Eins setze, schlägt es fehl:
Die Frage war also:wie kann man minted
eine Umgebung zerbrechlich machen tcolorbox
?