latex排版文字时,如何让第一回、第二回、……第二十一回在页眉和目录中占据相同的宽度,文字均匀分散对齐?以下是我的代码
\documentclass[b5paper,twoside,openany,UTF8]{ctexbook}
\usepackage{zhnumber} %中文数字宏包
\ctexset{
chapter/name = {第,回},
chapter/number = \chinese{chapter},
% chapter/format = \Huge\bfseries\centering
}
% 章节格式设定
\renewcommand{\chaptermark}[1]{\markboth{第\zhnumber{\thechapter}回}{#1}}
\usepackage{fancyhdr}
% 设置全局页眉页脚格式
\pagestyle{fancy}
\fancyhf{} % 清空默认页眉页脚
% 章节首页(奇数页)的页眉显示章节名称
\fancyhead[CO]{\zihao{5}\rightmark}
% 偶数页页眉显示“第一回、第二回……”
\fancyhead[CE]{\zihao{5}\leftmark}
% 偶数页左下角、奇数页右下角显示页码
\fancyfoot[RO]{--~\thepage~--}
\fancyfoot[LE]{--~\thepage~--}
% 设置页眉横线
\renewcommand{\headrulewidth}{0.5pt}
% 设定章节标记:
% - 左页(偶数页)显示“第一回、第二回……”
% - 右页(奇数页)显示章节名称
\renewcommand{\chaptermark}[1]{%
\markboth{第\zhnumber{\thechapter}回}{#1}
}
% 章节首页样式(无页眉和页眉横线,仅保留页码)
\fancypagestyle{plain}{%
\fancyhf{} % 清空页眉页脚
\fancyfoot[RO]{--~\thepage~--}
\fancyfoot[LE]{--~\thepage~--}
\renewcommand{\headrulewidth}{0pt} % 去掉页眉横线
}
\begin{document}
\tableofcontents
\chapter{1}\chapter{2}\chapter{3}
\chapter{4}\chapter{5}\chapter{6}
\chapter{7}\chapter{8}\chapter{9}
\chapter{10}\chapter{11}\chapter{12}
\chapter{13}\chapter{14}\chapter{15}
\chapter{16}\chapter{17}\chapter{18}
\chapter{19}\chapter{20}\chapter{21}
\end{document}
预期效果
我是这样实现的:
\usepackage{titletoc}
\titlecontents{chapter}[\ccwd]{\addvspace{2pt}\filright}%缩进1个汉字
{\contentspush{\begin{CJKfilltwosides}{5\ccwd}\thecontentslabel\end{CJKfilltwosides}\quad}}
{}{\titlerule*[6pt]{$\cdot$}\contentspage}
用xeCJK宏包提供的CJKfilltwosides环境。
不会影响页眉的展示。
该代码如下部分设置的是全文的页眉页脚样式,而不只是首页:
% 章节首页样式(无页眉和页眉横线,仅保留页码) \fancypagestyle{plain}{% %... }
个人认为最快捷的方式,但会顺带使修改正文中章节标题也具备这个效果:
将原代码中的如下部分(第3行--第7行)
\ctexset{
chapter/name = {第,回},
chapter/number = \chinese{chapter},
% chapter/format = \Huge\bfseries\centering
}
改为
\ctexset{
chapter/name = {第,回},
chapter/number = \makebox[3em]{\chinese{chapter}},
% chapter/format = \Huge\bfseries\centering
}
即:用盒子控制长度。其中,章节序号有多少个字、就相应有多少个em
。
效果:
感谢@u64726 提供的思路,微调了一下...
\documentclass[b5paper,twoside,openany,UTF8]{ctexbook}
\usepackage{zhlipsum}
\usepackage{zhnumber}
\ctexset{
chapter/name = {,},
chapter/number = {\makebox[5\ccwd][s]{第\chinese{chapter}回}},
}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[CO]{\zihao{5}\rightmark}
\fancyhead[CE]{\zihao{5}\leftmark}
\fancyfoot[RO]{--~\thepage~--}
\fancyfoot[LE]{--~\thepage~--}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\chaptermark}[1]{%
\markboth{\makebox[5\ccwd][s]{第\zhnumber{\thechapter}回}}{#1}
}
% 章节首页样式(无页眉和页眉横线,仅保留页码)
% 这是由于在book.cls中,章节首页预定义了样式 \thispagestyle{plain}
% 因此此处重定义 plain 样式相当于重定义了 章节首页
\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[RO]{--~\thepage~--}
\fancyfoot[LE]{--~\thepage~--}
\renewcommand{\headrulewidth}{0pt}
}
\begin{document}
\tableofcontents
\chapter{这是一个标题名1}\zhlipsum[1-6]
\addtocounter{chapter}{9}
\chapter{这是一个标题名2}\zhlipsum[1-6]
\addtocounter{chapter}{9}
\chapter{这是一个标题名3}\zhlipsum[1-6]
\end{document}
(有没有什么方便的同时展现10+个pdf页面的截图方式啊...上图至少微调了2分钟大小...)
`documentclass[b5paper,twoside,openany,UTF8]{ctexbook}
usepackage{zhlipsum}
usepackage{zhnumber}
ctexset{
chapter/name = {,},
chapter/number = {\makebox[5\ccwd][s]{第\chinese{chapter}回}},
}
usepackage{fancyhdr}
pagestyle{fancy}
fancyhf{}
fancyhead[CO]{zihao{5}rightmark}
fancyhead[CE]{zihao{5}leftmark}
fancyfoot[RO]{--~thepage~--}
fancyfoot[LE]{--~thepage~--}
renewcommand{headrulewidth}{0.5pt}
renewcommand{chaptermark}[1]{%
\markboth{\makebox[5\ccwd][s]{第\zhnumber{\thechapter}回}}{#1}
}
% 章节首页样式(无页眉和页眉横线,仅保留页码)
% 这是由于在book.cls中,章节首页预定义了样式 thispagestyle{plain}
% 因此此处重定义 plain 样式相当于重定义了 章节首页
fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[RO]{--~\thepage~--}
\fancyfoot[LE]{--~\thepage~--}
\renewcommand{\headrulewidth}{0pt}
}
usepackage{color,xcolor}
usepackage[%
xetex,
%xetex选项是配合xelatex编译程序的。
pagebackref,
%pagebackref是页码反向索引功能,出现在参考文献后部,用于反馈该条目对应的页码。
pdfstartview=FitH,
%pdfstartview表示打开PDF时,整个页面宽度适合PDF阅读器的窗口宽度(参照胡伟书)。
CJKbookmarks=true,
%CJKbookmarks=true确保PDF书签中的中文标签(如第一章等)显示正常。
bookmarksnumbered=true,
%bookmarksnumbered=true确保PDF书签中的章节编号正常显示
bookmarksopen=true,
%bookmarksopen=true确保打开PDF时,所有的书签都能展开
colorlinks,
%colorlinks链接改用彩色显示,默认为红色边框;
%单独注释掉colorlinks则后续所有的颜色设置失效。
linkcolor=purple,
%linkcolor指定页码和序号等链接的颜色为black黑色
pdfborder=001,
%pdfborder为超链接彩色框设置,单独注释掉此项或000表示不使用链接框。
citecolor=blue,
%citecolor=blue设置参考文献的颜色显示为蓝色
urlcolor=blue
%urlcolor=blue设置超链接文本为蓝色显示
]{hyperref}
begin{document}
\tableofcontents
\chapter{这是一个标题名1}\zhlipsum[1-6]
\addtocounter{chapter}{9}
\chapter{这是一个标题名2}\zhlipsum[1-6]
\addtocounter{chapter}{9}
\chapter{这是一个标题名3}\zhlipsum[1-6]
end{document}`
文字确实都占用了相同的字符宽度,但是(例如)第十八回、第二十一回几个汉字没有在盒子里均匀分散对齐,字符间的距离不均匀。
@u6746 这个问题应该是因为
\chinese{}
输出的结果是一个整体的盒子导致的...试改成这个吧:
如果觉得还不够“均匀”,可以修改
0.3em
为其他值(minus
前后的都要改,且要相同)这是手动调距离的方法...不添加其他宏包的自动化方法,我便不知道了...
@u70550 我反对我自己...
这不是
\chinese{}
的锅关于等宽的问题...贡献一个"不得体"(割裂了
name
与number
的关系)之术:@u6746 我想你需要补充一下的具体需求
fancyhdr
的设置为何略微“割裂”?编译你的mwe,没有体现任何关于"页眉"的信息,不是很明白你的预期效果(如目录页的页眉,正文章节标题的页眉,正文的页眉)。具体需求:
1.在目录页要求“第XX章”等宽;
2.在正文的章节标题中要求“第XX章”等宽;
3.在页眉中要求“第XX章”等宽;
4.没有体现任何关于"页眉"的信息是因为忘记在chapter后输入文字,胡乱输入一些测试文字就能显示页眉了。