latex排版文字时,如何让第一回、第二回、……第二十一回在页眉和目录中占据相同的宽度,文字分散对齐?

发布于 2025-02-11 21:23:02

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}

微信截图_20250211211906.jpg
预期效果
2.jpg

查看更多

关注者
0
被浏览
332
4 个回答
赤霓
赤霓 2025-02-13
这家伙很懒,什么也没写!

我是这样实现的:

\usepackage{titletoc}
\titlecontents{chapter}[\ccwd]{\addvspace{2pt}\filright}%缩进1个汉字
    {\contentspush{\begin{CJKfilltwosides}{5\ccwd}\thecontentslabel\end{CJKfilltwosides}\quad}}
    {}{\titlerule*[6pt]{$\cdot$}\contentspage}

用xeCJK宏包提供的CJKfilltwosides环境。
02a778fb-fc6c-4b22-971b-907f717de7cc.jpg
10234f22-59ea-40d0-8898-09919ed1c8c4.jpg
不会影响页眉的展示。

尊咾哎哟
尊咾哎哟 2025-02-11
¥a^2+b^2=c^2¥. . .

写在前头

  • 该代码有种拼接感,下次请提供只反映需求的MWE(最小代码示例)
  • 该代码如下部分设置的是全文的页眉页脚样式,而不只是首页:

    % 章节首页样式(无页眉和页眉横线,仅保留页码)
    \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

效果:
image.png
image.png

Sagittarius Rover
Sagittarius Rover 2025-02-12
我要成为Typst糕手/(ㄒoㄒ)/~~

感谢@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}

image.png

(有没有什么方便的同时展现10+个pdf页面的截图方式啊...上图至少微调了2分钟大小...)

竹林第八贤
竹林第八贤 2025-02-12
这家伙很懒,什么也没写!

`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}`

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览