有关 tcolorbox 包和 newtcbinputlisting 的帮助

有关 tcolorbox 包和 newtcbinputlisting 的帮助

我已经尝试学习如何使用该\newtcbinputlisting命令几个小时了,但没有成功。

我正在与一个小组一起在 overleaf 中编写 latex。我们有几个 .py 文件需要输入,使用 minted 是不够的,因为其中一些文件的长度超过一页,因此breaklines=true,我们遇到了一些问题,即某些行超出了背景颜色框。

在我们的 Latex 存储库中,文件的示例可能是:

appendix/code/utils/diagnosis_descriptions.py

有人能帮我创建\newtcbinputlisting{mycode}python 命令吗?我想使用 monokai minted 样式和 bg as \definecolor{bg}{HTML}{282828}。我根本无法让它输入我们的文件,而且在自己的尝试中遇到了无数错误

链接至 overleaf 项目示例https://www.overleaf.com/3162436877yfgynkbsrcvr

我的代码:

% IMPORTANT! In order for the document to compile, one needs to use 
XeLaTeX or LuaLaTeX as compiler. This can be done in  Overleaf by 
Menu -> Settings -> Compiler -> Choose XeLaTeX/LuaLaTeX
\documentclass[12pt]{article}
\renewcommand{\baselinestretch}{1.5}
\usepackage[margin=1.4in]{geometry} % Package for pagemargin
\usepackage{setspace} % Package for linespacing
\usepackage{tabularx} % Package for table
\usepackage[skip=10pt plus1pt, indent=20pt]{parskip}
\usepackage{fontspec}
\usepackage[style=ddmmyyyy]{datetime2}
\usepackage[tracking=true]{microtype}
\usepackage[style=numeric, backend=biber]{biblatex}
\usepackage[toc,page]{appendix} % Package for creating appendix
\usepackage{minted} % Package for inputting src code
\usepackage{tcolorbox}
\tcbuselibrary{minted, breakable}

\definecolor{bg}{HTML}{282828} % styling for minted

\newtcbinputlisting{\mycode}[2]{  
    listing engine=minted,   
    minted language={python},   
    listing file={#2},  
    %left=5mm,  
    minted style=default,  
    minted options={    
        frame=lines,    
        framesep=1mm,  
        baselinestretch=1,  
        bgcolor=bg,   
        fontsize=\footnotesize,   
        numbers=left,   
        mathescape=true,   
        breaklines=true,    
        breakanywhere=true   
        },% <-- put other minted options inside the brackets    
    colback=bg,     
    breakable, % Allows for code to continue on multiple pages   
    listing only,     
}   
\begin{document}

\mycode{appendix/code/utils/diagnosis_descriptions.py}

\end{document}

答案1

两个半问题:

  • ,你的\newtcbinputlisting

  • 如果您使用的\mycode{diagnosis_descriptions.py}宏有一个参数,但您定义的宏有两个参数,其中 Python 文件的名称作为第二个参数。请更改宏的定义或在使用它时使用两个参数。

  • Minted 用户指南对使用背景颜色有以下说明:

    请注意,如果将 bgcolor 与 breaklines=true 一起使用,并且换行符恰好出现在分页符之前,则文本在某些情况下可能会延伸到彩色背景下方。在这些情况下,最好使用更高级的框架包;

    ...鉴于您已经在使用更高级的框架包,设置铸造的背景颜色无论如何都是没用的。


% !TeX program = txs:///arara
% arara: lualatex: {synctex: on, interaction: nonstopmode, shell: yes}
\documentclass[12pt]{article}
\renewcommand{\baselinestretch}{1.5}
\usepackage[margin=1.4in]{geometry} % Package for pagemargin
\usepackage{setspace} % Package for linespacing
\usepackage{tabularx} % Package for table
\usepackage[skip=10pt plus1pt, indent=20pt]{parskip}
\usepackage{fontspec}
\usepackage[style=ddmmyyyy]{datetime2}
\usepackage[tracking=true]{microtype}
\usepackage[style=numeric, backend=biber]{biblatex}
\usepackage[toc,page]{appendix} % Package for creating appendix
\usepackage{minted} % Package for inputting src code
\usepackage{tcolorbox}
\tcbuselibrary{minted, breakable}

\definecolor{bg}{HTML}{282828} % styling for minted

\newtcbinputlisting{\mycode}[1]{  
    listing engine=minted,   
    minted language={python},   
    listing file={#1},  
    %left=5mm,  
    minted style=default, % <- missing   
    minted options={    
        frame=lines,    
        framesep=1mm,  
        baselinestretch=1,  
        bgcolor={},   
        fontsize=\footnotesize,   
        numbers=left,   
        mathescape=true,   
        breaklines=true, % <- missing      
        breakanywhere=true   
        },% <-- put other minted options inside the brackets    
    colback=bg,     
    breakable, % Allows for code to continue on multiple pages   
    listing only,     
}   
\begin{document}

\mycode{diagnosis_descriptions.py}

\end{document}

在此处输入图片描述

相关内容