fancyhdr 中灵活的用户生成文本

fancyhdr 中灵活的用户生成文本

我正在研究一本哲学手稿的学术版,并寻找一种方法让 fancyhdr 显示原始 MS 的分页符。

在文本中,我在分页符的位置放置了“|”,现在 - 尽管我很天真 - 我正在寻找一个命令来(手动)在页眉中放置像“1|2”这样的信息(偶数页放在右边,奇数页放在左边)。

我希望我的英语不是太差,并且我确实表达得足够清楚。

答案1

使用\mymark命令将规则放置在文本中,并将所需的文本放置在页眉中;例如,\mymark{7}{8}在文档正文中放置一条规则,并将其放置 7|8在页眉中(如果第二个数字始终是第一个加一,则可以稍微简化定义,但这在问题中并不清楚):

\documentclass[twoside]{article}
\usepackage[a6paper]{geometry} % just for the example
\usepackage{fancyhdr} 

\def\mymark{}
\fancyhf{}
\fancyhead[RE,LO]{\mymark}
\fancyfoot[c]{\thepage}

\pagestyle{fancy}

\newcommand\MyBreak[2]{%
  \renewcommand\mymark{\footnotesize#1\,\rule{0.4pt}{1.6ex}\,#2}~\rule[-.3ex]{1pt}{2ex}}

\newcommand\Text{this is just some text for the example} % just to generate text for the example
\begin{document}

\Text\ \Text\ \Text\ \Text\ \Text\ \Text\MyBreak{1}{2}\ \Text\ \Text
\clearpage
\Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ 
\Text\ \Text\ \Text\ \Text\ \Text\ \Text\MyBreak{4}{5}\ \Text\ \Text

\end{document}

第一页的图片:

在此处输入图片描述

第二页的图片:

在此处输入图片描述

变体;\MyBreak现在有一个强制参数和一个可选参数。如果以 的形式使用\MyBreak{}(强制参数为空),它只会从标题中删除文本;否则,以 的形式使用,它会\MyBreak{<number>}在文本中打印一条规则,并以 的形式打印标题<number>|<number>+1。如果字符u在可选参数中使用,如\MyBreak[u]{<number>},则标题将仅包含<number>;如果字符t在可选参数中使用,如\MyBreak[t]{<number>},则标题将包含<number>|<number>+1|<number>+2请参见以下示例;\MyRule提供了一个附加命令,用于在文本中简单地绘制垂直规则而不生成标记:

\documentclass[twoside]{book}
\usepackage[a6paper]{geometry} % just for the example
\usepackage{fancyhdr} 

\def\mymark{}
\fancyhf{}
\fancyhead[RE,LO]{\mymark}
\fancyfoot[c]{\thepage}

\pagestyle{fancy}

\newcommand\MyRule{~\rule[-.3ex]{1pt}{2ex}}
\newcommand\MyBreak[2][]{%
\ifx#1u\relax
  \renewcommand\mymark{\footnotesize#2}%
\else
\ifx#1t\relax
  \renewcommand\mymark{\footnotesize#2\,\rule{0.4pt}{1.6ex}\,\number\numexpr#2+1\,\rule{0.4pt}{1.6ex}\,\number\numexpr#2+2\relax}~\rule[-.3ex]{1pt}{2ex}%
\else
  \if\detokenize{#2}\relax\relax
  \renewcommand\mymark{}%
  \else
  \renewcommand\mymark{\footnotesize#2\,\rule{0.4pt}{1.6ex}\,\number\numexpr#2+1\relax}~\rule[-.3ex]{1pt}{2ex}%
  \fi
\fi
\fi
}

\newcommand\Text{this is just some text for the example} % just to generate text for the example
\begin{document}

\Text\ \Text\ \Text\ \Text\ \Text\ \Text\MyBreak{3}\ \Text\ \Text
\clearpage
\Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ 
\Text\ \Text\ \Text\ \Text\ \Text\ \Text\MyBreak[u]{4}\ \Text\ \Text
\clearpage
\MyBreak{}
\Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ \Text\ 
\clearpage
\Text\ \Text\ \Text\ \Text\MyBreak[t]{7} \Text\ \Text\ \Text\ \Text\MyRule\ \Text\ \Text\ \Text\ \Text\ \Text\ 

\end{document}

答案2

\documentclass[twoside]{article}
\usepackage[a4paper,margin=1in,heightrounded,headheight=16pt]{geometry}
\usepackage{fancyhdr}         % put things headers and footers and we plan misuse it ;)
\usepackage{lipsum}           % for sample text
\usepackage{lastpage}         % Will get last page number for you    
%
\fancypagestyle{mypage}{%
    \fancyhf{}
    \fancyhead[LO]{Page \thepage\ \rule[-1ex]{.5pt}{3.5ex} \pageref{LastPage}}
    \fancyhead[RE]{Page \thepage\ \rule[-1ex]{.5pt}{3.5ex} \pageref{LastPage}}    
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
}

\begin{document}
\pagestyle{mypage}   % activate page style
\lipsum[1-25]
\end{document}

在此处输入图片描述

相关内容