我经常使用简短的章节名称进行样式设置。我希望简短名称出现在页眉中,而较长的名称仅出现在文档本身中。
我已经解决了这个问题,但这需要大量重复信息。例如:
\section[1--10]{1--10 Proem and summary}
...
\section[11--20]{11--20 The adventure begins}
我想知道是否有办法重写文档中各部分的打印输出,以便同时打印短部分名称和长部分名称,而不是1--10
每次都重复(或等效重复),这既繁琐又容易出错。
% I'd like this to print "1-10 Proem and summary" in the document itself.
\section[1--10]{Proem and summary}
下面我附上了一个最小的工作示例,其中包含我迄今为止所做的其他样式。
\documentclass[11pt]{article}
\usepackage{fontspec}
\setmainfont[Ligatures={Common,TeX}]{Times New Roman}
\setmainfont{Times New Roman}
\usepackage{titlesec}
\titleformat{\section}{\centering\normalfont\itshape}{}{0em}{}
\titleformat{\subsection}[runin]{\normalfont\bfseries}{}{0em}{}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\setlength{\headheight}{15pt}
\renewcommand{\sectionmark}[1]{\markright{Commentary: {#1}}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\lhead{\nouppercase{\fancyplain{}{\rightmark}}}
\rfoot{\nouppercase{\thepage}}
\usepackage{lipsum}
\begin{document}
\section[1--10]{1--10 Proem}
\lipsum
\section[11--55]{11--55 Something else}
\lipsum
\section[56--100]{56-100 Another thing}
\lipsum
\end{document}
我怀疑titlesec
可以做到这一点,但我还不知道该怎么做。
答案1
这里有一种方法可以做到这一点,即重新定义部分命令,以便
\section[55]{标题}
如果前一节的格式为“*--10 其他标题”,则将创建一个节标题“11--55 标题”。没有错误检查来确保新节号大于旧节号,尽管这并不难做到。
下面的 MWE 的第二页如下所示:
实际代码如下:
\documentclass{article}
\usepackage{mwe}% mwe and geometry used just for MWE
\usepackage[textheight=40mm]{geometry}
\pagestyle{headings}% turn page headings on
\setcounter{secnumdepth}{0}% turn off section numbers
\let\realSection=\section% save the "real" section so that we can use it after we change it
\newcounter{RunningSection}% for counting our pseudo sections
\newcommand\mysection[2][\relax]{% overwriting the section command
\refstepcounter{RunningSection}% increment running sections
\xdef\tempSec{\arabic{RunningSection}}%
\ifx\relax#1\relax\addtocounter{RunningSection}{1}% if no default argument: X--X
\else\setcounter{RunningSection}{#1}%
\fi%
\xdef\tempSec{\tempSec--\arabic{RunningSection}}%
\realSection[\tempSec]{\tempSec\space#2}%
}
\let\section=\mysection
\renewcommand{\sectionmark}[1]{\markright{Commentary: {#1}}}% set section marks
\begin{document}
\section[10]{Proem}
\lipsum[1]
\section[55]{Something else}
\lipsum[2]
\section{Something different}% with no optional argument increment by 1
\lipsum[3]
\section[100]{Another thing}
\lipsum[4]
\end{document}
编辑(使用 titlesec)
如果您想使用它,请在新宏之前titlesec
插入命令,然后在参考书目之前插入以下行:titlesec
\section
\let\section=\realSection
这使得 section 命令恢复到其通常含义,所以一切都很好。更详细地说:
\documentclass{article}
\usepackage{mwe}% mwe and geometry used just for MWE
\pagestyle{headings}% turn page headings on
\setcounter{secnumdepth}{0}% turn off section numbers
\usepackage{fontspec}
\setmainfont[Ligatures={Common,TeX}]{Times New Roman}
\setmainfont{Times New Roman}
\usepackage{titlesec}
\titleformat{\section}{\centering\normalfont\itshape}{}{0em}{}
\titleformat{\subsection}[runin]{\normalfont\bfseries}{}{0em}{}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\setlength{\headheight}{15pt}
\renewcommand{\sectionmark}[1]{\markright{Commentary: {#1}}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\lhead{\nouppercase{\fancyplain{}{\rightmark}}}
\rfoot{\nouppercase{\thepage}}
\let\realSection=\section% save the "real" section so that we can use it after we change it
\newcounter{RunningSection}% for counting our pseudo sections
\newcommand\mysection[2][\relax]{% overwriting the section command
\refstepcounter{RunningSection}% increment running sections
\xdef\tempSec{\arabic{RunningSection}}%
\ifx\relax#1\relax\addtocounter{RunningSection}{1}% if no default argument: X--X
\else\setcounter{RunningSection}{#1}%
\fi%
\xdef\tempSec{\tempSec--\arabic{RunningSection}}%
\realSection[\tempSec]{\tempSec\space#2}%
}
\let\section=\mysection
%\renewcommand{\sectionmark}[1]{\markright{Commentary: {#1}}}% set section marks
\begin{document}
\section[10]{Proem}
\lipsum[1]
\section[55]{Something else}
\lipsum[2]
\section{Something different}% with no optional argument increment by 1
\lipsum[3]
\section[100]{Another thing}
\lipsum[4]
\let\section=\realSection
\begin{thebibliography}{100}
\bibitem{AJS}
{\sc H.~H. Andersen, J.~C. Jantzen, and W.~Soergel}, {\em Representations of
quantum groups at a {$p$}th root of unity and of semisimple groups in
characteristic {$p$}: independence of {$p$}}, Ast\'erisque, 1994, 321.
\end{thebibliography}
\end{document}
如果你需要多次将这些“花哨部分”更改回正常部分,那么你可以使用
\let\section=\realSection
... % normal sections
\let\section=\mysection
.... % fancy sections
\let\section=\realSection
... % normal sections
... etc
编辑 II(一种简单的方法)
最后,计算是为了让用户更容易操作。由于 OP 不喜欢这样,这里有一个更简单的解决方案:
\let\realSection=\section
\newcommand\mysection[2][]{%
\realSection[#1]{#1 #2}%
}
\let\section=\mysection
这用作
\section[1--10]{Proem}
并且您需要\let\section=\realSection
在参考书目等之前写下。