语境

语境

语境

对于我正在编写的文档,我使用 mdframed 和 listings 来创建“花哨”的代码块外观。我为该视图使用了圆角和自定义颜色。在创建此文档的过程中,一切都很顺利,直到我framemethod=tikz为圆角设置了 mdframed ( )。

问题

当 mdframed 和 listings 环境被页面破坏时,某些样式(特别是行号和代码块内容的颜色)将被忽略或替换为黑色。

MWE 和问题演示

让我用一个简单的例子来演示这个问题。

注意:example.tex 的文件内容被省略。这是一个内容较长的简单文本文件。

平均能量损失

使用以下代码,文档(几乎)看起来就像我需要的那样,没有问题:

\documentclass[a4paper]{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage{mdframed}

\begin{document}

\begin{mdframed}[backgroundcolor=black]
    \lstinputlisting[basicstyle=\color{white}]{example.txt}
\end{mdframed}

\end{document}

在生成的 PDF 中,即使在分页之后,代码仍能保持正确的颜色:

即使分页符分割了代码块,代码颜色仍然正确

问题演示

当应用必要的更改来创建圆角时,会出现问题:

\documentclass[a4paper]{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage[framemethod=tikz]{mdframed}

\begin{document}

\begin{mdframed}[roundcorner=10pt, backgroundcolor=black]
    \lstinputlisting[basicstyle=\color{white}]{example.txt}
\end{mdframed}

\end{document}

在生成的 PDF 中,分页符后的代码现在颜色不正确。分页符后的字母应该保持白色且可读,但在这里它们变成了黑色且不可读:

分页后代码颜色不正确

在有限的屏幕截图中看不到圆角,但它们在 mdframed 框架的外角上可见且正确应用

使用 LuaLaTeX 和 XeLaTeX 时似乎都会发生此问题。

理想情况下,我想继续使用 XeLaTeX 来编译我的文档。

我该如何解决这个问题,并保持遇到分页符的代码块中的代码样式持久?

感谢您对解决该问题的任何帮助。

答案1

您在错误的地方指定了字体颜色 - 应该用\mdfsetup{fontcolor=white}而不是用来设置[basicstyle=\color{white}]

在此处输入图片描述

这是用和编译的xelatexlualatex并且都正确输出:

\begin{filecontents}[overwrite]{example.txt}
Text
Text
Text
Text
Text
Text
Text
Text
Text
Text
\end{filecontents}

\documentclass[a4paper]{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{lipsum}

\mdfsetup{fontcolor=white,roundcorner=10pt,backgroundcolor=black}

\begin{document}
\lipsum[1-4]\lipsum[1][1-4]
\begin{mdframed}
    \lstinputlisting{example.txt}
\end{mdframed}

\end{document}

将来,请使用filecontents环境为我们创建一个examples.txt文件,在这种情况下,这并不重要,因为它很容易创建,但它有助于我们复制和粘贴问题,以便我们能够更快地调试和测试解决方案。

相关内容