下列的这个已经回答过的帖子,我有一个相关但不同的问题要问您。
问题 :
我知道不建议在标题内使用脚注。但是,我在这里别无选择。我也知道此功能与通常的 等命令一起存在。\section
但\subsection
在这种情况下,我无法使用这些命令,我必须坚持使用自己的命令,原因有二:- 首先,我已经使用了所有命令,甚至在这个社区的帮助下创建了额外的命令 - 其次,计数器在文档中根本没有重置。
部分解决方案:
titlesec
或needspace
包对于没有脚注的标题很有效。
能否将下一段用脚注粘贴到我的计数器上?我创建的文档很长,它必须是自动的,即我无法在单独的 \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}