对于一个项目,我使用 Minted 打印了大量源代码。某些块(例如 CSS 块)相当短,但分散在多个页面上,这意味着它们不太易读。能否让 Minted 仅在代码中有双行换行符的地方插入分页符?
答案1
这里的计划是首先将 interlinepenalty 设置为 10000,以便正常情况下不会发生换行,然后修改底层 fancyverb 以检测空白行,如果是则鼓励分页。
示例使用了非常小的页面,只是为了展示效果。
前:
后:
\documentclass{article}
\usepackage{minted}
\setlength\topskip{\baselineskip}
\setlength\textheight{12\baselineskip}
\makeatletter
%\showoutput
\def\@wasblank{\PYG {err}{BLANK}}
\def\foo{\aftergroup\ffoo}
\def\ffoo{\goodbreak}% or \clearpage or whatever
\let\zzzz\FV@PreProcessLine
\def\FV@PreProcessLine{%
\ifx\FV@Line\@empty
\def\FV@Line{BLANK}%
\fi
\ifx\FV@Line\@wasblank
\def\FV@Line{\aftergroup\aftergroup\aftergroup\foo}%
\fi
\zzzz}
\begin{document}
%\showoutput
\noindent x1\\x2\\x3\\x4\\x5\\x6\\x7\\x8\\x9\\x10\\x11\\x12
%\tracingall
{
\interlinepenalty10000 %
\begin{minted}{json}
[
{
"type": "Room"
"type1": "Room"
"typesad": "Room"
"typde": "Room"
"tydpe": "Room"
},
1111,
"aaaaa",
"aaaasda",
"aaaaa",
2222,
"2aaaaa" ,
333,
"zzzz"
]
\end{minted}
}
\end{document}