尊咾哎哟
尊咾哎哟
¥a^2+b^2=c^2¥. . .

注册于 3年前

回答
7
文章
0
关注者
1

详情xeCJK宏包手册的3.5 标点符号的处理

这里我有种错觉:既然您都知道PunctStyle这个key的存在,那应该能顺势从xeCJK手册后面摸排到专门处理标点符号的方法才对...

仅针对个别case的话(例如这里的,),可以使用\xeCJKsetwidth命令来修改其宽度。

MWE:

\documentclass{ctexart}

\xeCJKsetwidth{《》}{0.5em} %一次可对多个标点符号同时修改

\begin{document}

查看《手册》, 可以知道。

\end{document}

效果:
image.png

但如果是一般的全角标点宽度问题/全角标点与西文标点间距问题,可能得用到3.5.2中的命令了。

一个不skilled的方法。

核心思路是使用盒子:

\parbox[l]{<字数>\ccwd}{<第一行内容>\newline{}<第二行内容>}
% <字数>的大小对应两行中字数较大者

这边无法确定正文是否也需要想目录那样对齐,所以下面分类解决.

所有情况下MWE的结果均为:
image.png

目录中的为双行、正文中的随意

即:正文中两行之间要么用符号分隔,要么直接连成一句话.
\documentclass{ctexbook}

\ctexset{
    chapter={
        name={第,回},
        number={\chinese{chapter}}
    }
}

\usepackage[hidelinks,bookmarksnumbered=true, breaklinks=true]{hyperref}

\begin{document}

\tableofcontents

\chapter[\texorpdfstring{\parbox[l]{8\ccwd}{甄士隐梦幻识通\newline{}贾雨村风尘怀闺秀}}{甄士隐梦幻识通灵,贾雨村风尘怀闺秀}]{甄士隐梦幻识通灵,贾雨村风尘怀闺秀}

\chapter{这一回不需要双行目录}

\chapter[\texorpdfstring{\parbox[l]{8\ccwd}{甄士隐梦幻识通灵\newline{}贾雨村风尘怀闺秀}}{甄士隐梦幻识通灵贾雨村风尘怀闺秀}]{甄士隐梦幻识通灵贾雨村风尘怀闺秀}

\end{document}

正文、目录的标题样式均双行

从你给的图来看,不是所有的章标题都要双行,所以直接封装一个新的章标题命令\twolinechapter

  • 参数1:字数最多行的字数
  • 参数2:第一行的内容
  • 参数3:第二行的内容
\documentclass{ctexbook}

\ctexset{
    chapter={
        name={第,回},
        number={\chinese{chapter}}
    }
}

% ------------- 封装部分 -------------- %
\newcommand{\twolinechapter}[3]{
\chapter{\texorpdfstring{\parbox[l]{#1\ccwd}{#2\newline{}#3}}{#2,#3}} % \texorpdfstring命令是为了照顾到pdf书签中的输出内容,下同
} 
% ====================================== %

\usepackage[hidelinks,bookmarksnumbered=true, breaklinks=true]{hyperref}

\begin{document}

\tableofcontents

\twolinechapter{8}{甄士隐梦幻识通灵}{贾雨村风尘怀闺秀}

\chapter{这一回不需要双行目录}

\twolinechapter{8}{甄士隐梦幻识通}{贾雨村风尘怀闺秀}

\end{document}

正文中的按逗号分隔、目录的为双行

还是封装一个新的章标题命令\twolinechapter

\documentclass{ctexbook}

\ctexset{
    chapter={
        name={第,回},
        number={\chinese{chapter}}
    }
}

% ------------- 封装部分 -------------- %
\newcommand{\twolinechapter}[3]{
\chapter[\texorpdfstring{\parbox[l]{#1\ccwd}{#2\newline{}#3}}{#2,#3}]{#2,#3}
}
% ====================================== %

\usepackage[hidelinks,bookmarksnumbered=true, breaklinks=true]{hyperref}

\begin{document}

\tableofcontents

\twolinechapter{8}{甄士隐梦幻识通灵}{贾雨村风尘怀闺秀}

\chapter{这一回不需要双行目录}

\twolinechapter{8}{甄士隐梦幻识通}{贾雨村风尘怀闺秀}

\end{document}

小插曲

\settowidth命令对中文文本长度的获取貌似不准确,不然\twolinechapter命令的第一个参数可以省去。

不清楚这种“拿来主义”是否讲武德,侵删...

取自 tse 中某个问答的首答:
https://tex.stackexchange.com/questions/2326/vertically-center-text-on-a-page

但此处无需用 memoir 文档类,而是从 memoir.cls 中剖出 vplace 环境定义的 code。同时再加上\centering 实现行内居中。

\documentclass{article}
\usepackage{lipsum}
\newenvironment{vplace}[1][1]{%
  \par\vspace*{\stretch{#1}}%
  \centering %extra centering
}{%
  \vspace*{\stretch{1}}%
  \par}

\begin{document}

\lipsum[1-3] %contents of former pages
\clearpage

\begin{vplace}
\parbox{\textwidth}{\lipsum[1-3]}
\end{vplace}

\clearpage 
\lipsum[1-3] %contents of later pages

\end{document}

效果:
image.png

承接@u70550 的回答。

MWE的编译确实没有问题,但我猜题主想说的是无法使用超链接...在导言区(的尽可能最后一行)中导入 hyperref 宏包即可启动超链接。

请提供完整的MWE(最小工作示例),即从\documentclass\end{document}的代码部分,以便能复现你所说的问题

您所给的代码(大概率)只是放在导言区中的config,而没有正文区中的伪代码示例,因此无法看出所谓的Step x

(貌似)直接用 \SetCell命令就行:

\documentclass{article}
\usepackage{xcolor}
\usepackage[scale=0.8,papersize={10.5cm,14.85cm}]{geometry}
\usepackage{tabularray}
\pagestyle{empty}
\begin{document}
\begin{center}
    \begin{tblr}{
        hlines,vlines,
        colspec={X[c,m]X[c,m]X[c,m]X[c,m]X[c,m]X[c,m]},
        cell{3,4}{4,5}={bg=green!30},
        cell{3,4}{6}={bg=red!30},
        cell{5,6,7}{6}={bg=blue!30},
    }
    1-1&1-2&1-3&1-4&1-5&1-6\\
    2-1&2-2&2-3&2-4&2-5&2-6\\
    3-1&3-2&3-3&\SetCell[r=2,c=2]{c,m}3-4&   &\SetCell[r=2]{c,m}3-6\\
    4-1&4-2&4-3&   &   &   \\
    5-1&5-2&5-3&5-4&5-5&\SetCell[r=3]{c,m}5-6\\
    6-1&6-2&6-3&6-4&6-5&   \\
    7-1&7-2&7-3&7-4&7-5&   \\
    \end{tblr}
\end{center}
\end{document}

image.png

写在前头

  • 该代码有种拼接感,下次请提供只反映需求的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

发布
问题