语境
对于我正在编写的文档,我使用 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}]
:
这是用和编译的xelatex
,lualatex
并且都正确输出:
\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
文件,在这种情况下,这并不重要,因为它很容易创建,但它有助于我们复制和粘贴问题,以便我们能够更快地调试和测试解决方案。