我正在使用 Ott 工具和奥特-阿尔特用于自动生成和排版大量推理规则的软件包。有些规则集太大,无法放在一页纸上。
ott-alt 包将它们放在一个mathparpagebreakable
环境中,这非常适合允许它们分布在多个页面上,以及在适当的位置自动添加换行符。
但是,没有标题。我可以给开头添加一个标题,但是查看第二页规则的人不知道他们正在查看哪些规则。
我想知道,是否存在某种环境可以将其包装在其中,以执行以下全部或部分操作:
- 将 mathpar 包装在出现的每页上的框/边框中
- 在每个页面的底部添加标题,或者在每个页面的顶部添加标题,最好将后面的页面标记为“继续”
- 将它们视为浮点数/数字,这样它们就可以很好地放置在文本中,而不会扰乱流程,并且可以给出漂亮的标签和数字。
关键是它必须是自动化的:规则是机器生成的,所以我自己进入并插入分页符或拆分图形是不可行的。
我愿意涉足“黑客”领域:我可以控制生成的 TeX 代码的格式(在一定程度上),所以如果我需要在每个规则中注入一些东西来实现这一点,这可能是一个选择。
编辑:最小工作示例:
\documentclass{article}
\usepackage{mathpartir}
\usepackage{semantic}
\usepackage{lipsum}
\newcommand{\myrule}{\inference{Premise\\Premise\\Premise\\Premise\\Premise\\Premise}{Conclusion}}
\newcommand{\myrulelong}{\inference{Premise\\Premise\\Premise\\Premise\\Premise\\Premise}{Conclusion!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}}
\begin{document}
\lipsum
\begin{mathparpagebreakable}
\textbf{My rule}\\
\myrule \and
\myrule \and
\myrule \and
\myrule \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\end{mathparpagebreakable}
\lipsum
\end{document}
答案1
我认为tcolorbox
可以解决所有三个要求:
\documentclass{article}
\usepackage{mathpartir}
\usepackage{semantic}
\usepackage{duckuments}
\usepackage[]{tcolorbox}
\tcbuselibrary{breakable}
\newcommand{\myrule}{\inference{Premise\\Premise\\Premise\\Premise\\Premise\\Premise}{Conclusion}}
\newcommand{\myrulelong}{\inference{Premise\\Premise\\Premise\\Premise\\Premise\\Premise}{Conclusion!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}}
\newenvironment{mathparpagebreakableboxed}[2][]
{%
\begin{tcolorbox}[
,title={#2}
,breakable
,title after break={#2 (\textit{cont.})}
,#1
]%
\begin{mathparpagebreakable}%
}
{%
\end{mathparpagebreakable}%
\end{tcolorbox}%
}
\begin{document}
\blindduck[-]
\begin{mathparpagebreakableboxed}[% additional maybe interesting options
,vfill before first%
%,float % if it should float
]{My rule}
\myrule \and
\myrule \and
\myrule \and
\myrule \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\myrulelong \and
\end{mathparpagebreakableboxed}
\blindduck[-]
\end{document}
您可以根据自己的喜好更改一些默认选项mathparpagebreakableboxed
。