插入灰色背景的代码(在论文中)

插入灰色背景的代码(在论文中)

我正在写一篇关于区块链的论文,我看到了一种我非常喜欢的风格。就是把代码放在黑色背景上(我的表格分为两列)。问题是这是我写的第一篇论文,我不知道如何把代码放在灰色背景上(此外,它必须与列的宽度相同)。

我贴了一张图片希望能帮到你:

在此处输入图片描述

我试图执行此代码(这只是一个例子):

\documentclass{article}

\usepackage{listings}
\usepackage{tcolorbox}
\usepackage{blindtext}  % For dummy text

\lstset{
    keywordstyle=\color{blue}\bfseries,
}

\begin{document}
    \blindtext
    \begin{tcolorbox}[boxrule=0.5pt,sharp corners]
    \begin{lstlisting}[language=Python, gobble=12]
    function calculateFitness() public{
        for(uint j = 0; j < population.length; j++){
            uint[] memory assignments = new uint[](agents.length);
            for(uint i = 0; i < population[j].getGenesLenght(); i++){
                uint[] memory pref;
                // We get preferences for current agent
                (,,pref) = agents[population[j].getGene(i)].getAgentInfo(); 
                assignments[population[j].getGene(i)] += pref[i];
            }
            population[j].setFitness(getMin(assignments));
        } 
    }
    \end{lstlisting}
    \end{tcolorbox}
    \blindtext
\end{document}

在此处输入图片描述

然后我有几个问题:

1.- 我该如何修复文本,使其不显得突兀? 2.- 似乎 LaTeX 没有 Solidity 语言(以太坊区块链),所以我想添加不同的颜色(如上图第一张),但我无法在标签\textcolor{blue}内书写listings。 3.- 我不明白为什么删除了第一个单词:代码以“函数计算健身 ()...”,但图片只显示“计算健身(...)”

答案1

在此处输入图片描述

listings这是使用排版代码包和tcolorbox灰色框包(恰好是 的默认颜色tcolorbox)来实现此目的的一种方法。包含一些用 Python 匆忙编写的示例代码。您可以使用listingstcolorbox来控制输出的外观,但这些应该可以帮助您入门。如果您使用该twocolumn选项,这也有效,但要小心,因为代码不会自动换行,因此可能会超出下一列。

\documentclass{article}

\usepackage{listings}
\usepackage{tcolorbox}
\usepackage{blindtext}  % For dummy text

\lstset{
    keywordstyle=\color{blue}\bfseries,
}

\begin{document}
    \blindtext
    \begin{tcolorbox}[
        boxrule=0pt,
        sharp corners
    ]
        \begin{lstlisting}[language=python, gobble=12]
            def fib(n: int):
                if n < 0:
                    raise ValueError
                else if n == 0 or n == 1:
                    return 1
                else:
                    return fib(n - 1) + fib(n - 2)
        \end{lstlisting}
    \end{tcolorbox}
    
    \blindtext
\end{document}

相关内容