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

注册于 3年前

回答
8
文章
0
关注者
1

省流:

  1. 修改后三列的对齐方式
  2. 因第1步修改,需单独对表头做居中对齐的处理;
  3. \adjustbox命令中valign的值改为m.

修改后三列的列对齐方式

首先,最后一列的对齐方式需要改为p型。原因未知。

然后:

在文字文本框内部的文字水平左对齐,且不缩进

既然如此,中间两列没必要再使用预设的C型(因为它用了\centering),而直接用m型即可。


需单独对表头做居中对齐处理

从效果图来看,表头内容是居中对齐的。由于改用了m型,故对表头所在行单独做居中对齐处理:

\textbf{序号} & \centering\textbf{实验内容} & \centering\textbf{按键操作} & \makebox[5.2cm][c]{\textbf{截屏显示}}

其中,最后一列在改用了p型的情况下用\centering会报错,所以改用盒子把它“撑开”。


\adjustbox命令中valign的值改为m.

我翻了adjustbox宏包的手册,发现valign键的值只有T,M,B;t,t,m,b,但用c好像也没报错...我不懂看漏了什么,但还是顺便改成m了。
image.png

另外,valign的各值的效果图:
image.png
它的参考系有点诡异,可能与所在列不能用m型对齐的情况有关,但我看了很久没弄明白,交给有缘人了...


MWE

\documentclass{ctexart}
\usepackage[margin=1in,landscape]{geometry}
\usepackage{longtable}  
\usepackage{array}
\usepackage{cellspace}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
% \usepackage{tabularray}
% 全局定义表格列类型(兼容 longtable)
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}} 
% 左对齐+垂直居中(必须指定宽度)
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}   
\begin{document}
    
\section{我是一个章节章节章节}

\begin{longtable}{|C{1cm}|m{4cm}|m{5cm}|p{5.2cm}|}
    \caption{画随点运动实时生成的正弦曲线} \label{tab:image_table}  \\ 
    \hline
    % 表头设置(四列)
    \textbf{序号} & \centering\textbf{实验内容} & \centering\textbf{按键操作} & \makebox[5.2cm][c]{\textbf{截屏显示}} \\
    \hline
    \endfirsthead
    % 续表头设置
    \multicolumn{4}{c}%
    {\tablename\ \thetable{} -- 续上页表格} \\
    \hline
    \textbf{序号} & \centering\textbf{实验内容} & \centering\textbf{按键操作} & \makebox[5.2cm][c]{\textbf{截屏显示}} \\
    \hline
    \endhead
    1 & 暂停动画并擦除几何跟踪痕迹&隐藏不需要展示的对象,播放动画,隐藏不需要展示的对象,播放动画,
    &\adjustbox{valign=m, margin=3pt 5pt}{\includegraphics[width=5cm,height=3.5cm]{example-image}}\\
    \hline
    2&测量点$M$ 的坐标 &隐藏不需要展示的对象,播放动画,
    得到点$M$的横、纵坐标,隐藏不需要展示的对象,播放动画,
    &\adjustbox{valign=m, margin=3pt 5pt}{\includegraphics[width=5cm,height=3.5cm]{example-image}}\\
    \hline
    3&保存点$M$ 的横坐标 &    选择点$M$ 的横坐标,依次点击命名为$x_m$  ,或者 鼠标右键
    &\adjustbox{valign=m, margin=3pt 5pt}{\includegraphics[width=5cm,height=3.5cm]{example-image}}\\
    \hline
    4 & 绘制随点 $M$变化生成的正弦曲线 &隐藏不需要展示的对象,播放动画输入相应的表达式
    &\adjustbox{valign=m, margin=3pt 5pt}{\includegraphics[width=5cm,height=3.5cm]{example-image}} \\
    \hline
\end{longtable}
    
\end{document}

效果:
image.png

详情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

发布
问题