我还有一个关于实验性 expl3 包的问题xgalley
:这次,简单地加载包会导致memoir
和出现问题ntheorem
。考虑下面的 MWE。当我加载时xgalley
,会发生以下事情:
- 我的间距
\maketitle
坏了 - 定理变得缩进,而以前并不是这样。
- 我的文档中添加了空白的第二页(下面的屏幕截图中看不到)
这一切都能解决吗?
\documentclass[a5paper]{memoir}
\usepackage{lipsum,ntheorem}
\title{Blahblah}
\author{Me, myself, and I}
\newtheorem{theorem}{Theorem}
\usepackage{xgalley}
\begin{document}
\maketitle
\begin{theorem}
\lipsum[1]
\end{theorem}
\end{document}
和xgalley
:
没有xgalley
:
答案1
这不是一个修复。我认为,考虑到代码的实验状态,目前更重要的是找到问题。
因此,我查看了l3galley
代码,找到了所有可能重要的标准 LaTeX/TeX 命令的重新定义,并设置了一个测试环境。
有了它您可以恢复命令的“旧”含义。
注意力:这些命令并不独立,因此如果只恢复部分命令,则很有可能一切都会中断。但对于调查来说,这仍然非常有用。
在您的例子中,很容易发现缩进是由 的更改引起的\everypar
,而间距是一个\addvspace
问题。空白页是由\clearpage
重新定义引起的,重新定义执行了\newpage
,然后插入了一个框,但该框不会像原始\clearpage
代码中那样被丢弃——在我看来,这看起来像是一个错误。
\documentclass[a5paper]{memoir}
\usepackage{expl3}
\ExplSyntaxOn
%save the old definitions
\clist_set:Nn\l_tmpa_clist{
clearpage,
nobreak,
noindent,
vspace,
@vspace,
@xnewline,
@newline,
newline,
addpenalty,
addvspace,
@afterheading,
@hangfrom,
@normalcr,
@par,
everypar
}
\clist_map_inline:Nn\l_tmpa_clist{\cs_set_eq:cc{ORI#1}{#1}}
\cs_set_eq:NN \ORINewline\\
\cs_set_eq:Nc \ORIpar { @ @ par }
\skip_set_eq:NN\l_tmpa_skip\parskip
\ExplSyntaxOff
\usepackage{lipsum}
\usepackage{ntheorem}
\title{Blahblah}
\author{Me, myself, and I}
\newtheorem{theorem}{Theorem}
\usepackage{l3galley}
% Restore the old meanings, choose the one you want to test
\ExplSyntaxOn\makeatletter
\clist_set:Nn\l_tmpa_clist{
% clearpage,
% nobreak,
% noindent,
% vspace,
% @vspace,
% @xnewline,
% @newline,
% newline,
% addpenalty,
% addvspace,
% @afterheading,
% @hangfrom,
% @normalcr,
% @par,
% everypar
}
\clist_map_inline:Nn\l_tmpa_clist{\cs_set_eq:cc{#1}{ORI#1}}
%\cs_set_eq:NN \\\ORINewline
%\cs_set_eq:cN { @ @ par }\ORIpar
%\cs_set_eq:Nc \@normalcr { \cs_to_str:N \\ }
%\skip_set_eq:NN\parskip\l_tmpa_skip
\ExplSyntaxOff\makeatother
\begin{document}
%wrong spacing between lists:
\begin{center}
blub
\end{center}
\vspace*{10pt}
\begin{center}
blub
\end{center}
{
\let\addvspace\ORIaddvspace
\begin{center}
blub
\end{center}
\vspace*{10pt}
\begin{center}
blub
\end{center}
}
\maketitle
\begin{theorem}
blub\lipsum[1]
\end{theorem}
\end{document}