tcolorbox 与 minted 结合使用的不同方式有哪些优势?哪种方式更可取?

tcolorbox 与 minted 结合使用的不同方式有哪些优势?哪种方式更可取?

我正在使用 minted 包列出代码,并使用 tcolorbox 包在其周围绘制框。但是,有两种方法可以做到这一点,我不知道哪一种最好。

要列出位于单独文件中的代码,您可以 (a) 使用 tcbinputlisting 命令或 (b) 在 tcolorbox 环境中包装 inputminted 命令。

要列出放入 LaTeX 源本身的代码,您可以 (a) 使用 tcblisting 环境或 (b) 将 minted 环境包装在 tcolorbox 中。

使用 (a) 还是 (b) 更好?其中一个比另一个更强大吗?如果不是,哪种方法被认为是最现代、最干净和最棒的?

答案1

我认为,问题的核心是:我应该使用

  • minted(a)库提供的宏tcolorbox
  • (b)基础tcolorbox包不包含minted库但包含包中的宏minted

答案将取决于您的特殊应用,并且在一定程度上也将基于观点,但我会尝试给出优点和缺点。

(a)使用以下mintedtcolorbox

  • 优点:该库提供了快捷宏,允许编写紧凑的源代码。选项设置minted融入了tcolorbox允许通用设置的选项中(您可以称之为干净的)。通过库的环境创建宏,可以轻松创建新的盒装列表(编号或不编号)。如果生成的代码是 LaTeX 源,则有特殊支持,也应显示编译后的代码。
  • 缺点:库宏包装了minted可能隐藏某些(未来)功能的宏minted。框内容会自动填充;例如,源+文本+源的个别混合不会被覆盖。

(b)使用库tcolorbox中的基础宏minted

  • 优点:盒子内容完全灵活。所有(未来)minted功能均可直接使用。

  • 缺点:源代码更长更复杂。tcolorbox和的选项设置minted必须单独进行。

为什么要创建minted/listings库?因为我有大量使用 (b) 方法的示例,它们都具有相同的重复结构。使用库,它们会更短,可读性也会更好。但是,我的示例主要包含源代码和编译文本;这样,优势就大于仅仅显示源代码。

最后:没有必要使用 (a) 或 (b)。两者可以并行使用。大多数情况下我使用 (a) 方法。如果一个盒子需要更多的灵活性(例如一个盒子中有两个源代码),我会为这个盒子切换到 (b)。

相关内容