带脚注的标题与后续段落之间没有分页符

带脚注的标题与后续段落之间没有分页符

下列的这个已经回答过的帖子,我有一个相关但不同的问题要问您。

问题 :

由于计数器中有脚注,我经常在计数器后立即出现分页符: 在此处输入图片描述

我知道不建议在标题内使用脚注。但是,我在这里别无选择。我也知道此功能与通常的 等命令一起存在。\section\subsection在这种情况下,我无法使用这些命令,我​​必须坚持使用自己的命令,原因有二:- 首先,我已经使用了所有命令,甚至在这个社区的帮助下创建了额外的命令 - 其次,计数器在文档中根本没有重置。

部分解决方案:

titlesecneedspace包对于没有脚注的标题很有效。

能否将下一段用脚注粘贴到我的计数器上?我创建的文档很长,它必须是自动的,即我无法在单独的 \numsubpara 命令之前手动添加 \pagebreak。

平均能量损失

\documentclass[12pt,twoside]{book}
\usepackage[paperheight=240mm,paperwidth=160mm, left=22mm, right = 20mm, top = 20mm, bottom = 22mm]{geometry}

\usepackage[cam,width=17.5truecm,height=25.54truecm,center,dvips,noinfo]{crop}
\usepackage[french]{babel}


\usepackage{fontspec}
\usepackage{lipsum}
\usepackage{titlesec}

%\usepackage{needspace}
%\newcounter{subpara}
%\setcounter{subpara}{0}
%\newcommand\numsubpara[1]%
   %{\vspace{3.36mm}\par\refstepcounter{subpara}%
   %\needspace{2em}%
   %\fontsize{10}{12}\selectfont\textbf{\thesubpara.}\fontsize{12}{12}\selectfont%
   %\space\textbf{#1}\space\vspace{2.8mm}\\%
   %\fontsize{12}{12}\selectfont\nobreak%
%}


\newcounter{subpara}
\setcounter{subpara}{0}
\newcommand\numsubpara[1]%
   {\vspace{3.36mm}\par\refstepcounter{subpara}%
   \fontsize{10}{12}\selectfont\textbf{\thesubpara.}\fontsize{12}{12}\selectfont%
   \space\textbf{#1}\space\vspace{2.8mm}\\%
   \fontsize{12}{12}\selectfont\nobreak%
}


\newcommand{\nocontentsline}[3]{}
\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup}
\newcommand{\hnumsubpara}{\tocless\numsubpara}


\begin{document}

\chapter{Test}
\section{Test}
\hnumsubpara{Test}
\lipsum[1]


\hnumsubpara{My command\footnote{\lipsum[1]}}
\lipsum[1]



\tableofcontents

\end{document}

谢谢大家 !

答案1

tocless您对和的定义有很多问题\numsubpara。您使用的是 titlesec,这肯定为定义新的分段命令提供了很好的便利!如果不是这样,那么您应该使用 来使用 LaTeX 内置的支持\@startsection。您的小定义有太多错误,无法全部涵盖

  • 包装器\tocless结束该组,取消设置numsubpara
  • 最后一个设置可能是错误的字体设置,除非文档的其余部分应该与标题大小相同(您应该使用分组进行局部字体更改)。
  • 之前\space有时\vspace会在标题下方留下一个额外的空白行
  • 如果输入中出现空白行,则以 结尾的标题\\也会导致虚假的空白行(和警告消息)。
  • 您确实想要段落缩进吗?
  • 没有什么可以阻止在两行标题中间分页。
  • \vspace{2.8mm}是分页的地方,这就是这次困扰你的问题。

为了尽可能减少对定义的更改,请将其更改\space\vspace{2.8mm}\vspace*{2.8mm}。或者更简洁一些,将其更改\space\vspace{2.8mm}\\\\*[2.8mm]

该问题实际上并不涉及脚注,除非改变页面上的空间大小。

答案2

我不确定这是否可行,因为 LaTeX 设置脚注的打印顺序 --- 据我所知,LaTeX 看到后会立即\footnote计划打印它,然后再处理任何内容。

我已经修改了您的 MWE 以供使用\footnotemark\footnotetext但这本质上是一个手动过程,但也许它会给您一些想法。

% numsubparaprob.tex  SE 546518

\documentclass[12pt,twoside]{book}
\usepackage[paperheight=240mm,paperwidth=160mm, left=22mm, right = 20mm, top = 20mm, bottom = 22mm]{geometry}
\usepackage[cam,width=17.5truecm,height=25.54truecm,center,dvips,noinfo]{crop}
\usepackage[french]{babel}
\usepackage{fontspec}
\usepackage{lipsum}
\usepackage{titlesec}

\newcounter{subpara}
\setcounter{subpara}{0}
\newcommand\numsubpara[1]%
   {\vspace{3.36mm}\par\refstepcounter{subpara}%
   \fontsize{10}{12}\selectfont\textbf{\thesubpara.}\fontsize{12}{12}\selectfont%
   \space\textbf{#1}\space\vspace{2.8mm}\\%
   \fontsize{12}{12}\selectfont\nobreak%
}

\newcommand{\nocontentsline}[3]{}
\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup}
\newcommand{\hnumsubpara}{\tocless\numsubpara}

\begin{document}

\chapter{Test}
\section{Test}
\hnumsubpara{Test}
\lipsum[1]

%\hnumsubpara{My command\footnote{\lipsum[1]}}
\hnumsubpara{My command\footnotemark} % PW used \footnotemark

Text \footnotetext{\lipsum[1]} % PW used \footnotetext
\lipsum[1]

\tableofcontents

\end{document}

相关内容