
Utilizo minted
el paquete para obtener coloración de sintaxis con color de fondo. Sé que no es compatible con las impresoras, pero lo uso.
Mi objetivo es hacer que el color del rectángulo de fondo ocupe el ancho de la página de lana. Pero el código incluido debe permanecer dentro de los márgenes habituales.
Entonces, con el siguiente 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}
Me gustaría obtener la siguiente representación:
Intento hacerlo con tcolorbox
y adjustbox
, pero no conserva el margen del texto.
Entonces, ¿cómo puedo obtener esta representación?
Editar :
Modifico mi MWE así:
\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}
Como puede ver, creo el widthcode
entorno en el que puse un gran fondo azul de izquierda a derecha de la página. Esto widthcode
funciona bien y permite saltos de página para textos largos:
Pero, cuando pongo un minted
entorno en widthcode
uno, falla:
Entonces, la pregunta fue:¿Cómo hacer que minted
el ambiente se rompa en tcolorbox
el ambiente?