我正在使用 minted 包列出代码,并使用 tcolorbox 包在其周围绘制框。但是,有两种方法可以做到这一点,我不知道哪一种最好。
要列出位于单独文件中的代码,您可以 (a) 使用 tcbinputlisting 命令或 (b) 在 tcolorbox 环境中包装 inputminted 命令。
要列出放入 LaTeX 源本身的代码,您可以 (a) 使用 tcblisting 环境或 (b) 将 minted 环境包装在 tcolorbox 中。
使用 (a) 还是 (b) 更好?其中一个比另一个更强大吗?如果不是,哪种方法被认为是最现代、最干净和最棒的?
答案1
我认为,问题的核心是:我应该使用
minted
(a)库提供的宏tcolorbox
,- (b)基础
tcolorbox
包不包含minted
库但包含包中的宏minted
。
答案将取决于您的特殊应用,并且在一定程度上也将基于观点,但我会尝试给出优点和缺点。
(a)使用以下minted
库tcolorbox
:
- 优点:该库提供了快捷宏,允许编写紧凑的源代码。选项设置
minted
融入了tcolorbox
允许通用设置的选项中(您可以称之为干净的)。通过库的环境创建宏,可以轻松创建新的盒装列表(编号或不编号)。如果生成的代码是 LaTeX 源,则有特殊支持,也应显示编译后的代码。 - 缺点:库宏包装了
minted
可能隐藏某些(未来)功能的宏minted
。框内容会自动填充;例如,源+文本+源的个别混合不会被覆盖。
(b)使用库tcolorbox
中的基础宏minted
。
优点:盒子内容完全灵活。所有(未来)
minted
功能均可直接使用。缺点:源代码更长更复杂。
tcolorbox
和的选项设置minted
必须单独进行。
为什么要创建minted
/listings
库?因为我有大量使用 (b) 方法的示例,它们都具有相同的重复结构。使用库,它们会更短,可读性也会更好。但是,我的示例主要包含源代码和编译文本;这样,优势就大于仅仅显示源代码。
最后:没有必要使用 (a) 或 (b)。两者可以并行使用。大多数情况下我使用 (a) 方法。如果一个盒子需要更多的灵活性(例如一个盒子中有两个源代码),我会为这个盒子切换到 (b)。