Sagittarius Rover
Sagittarius Rover
我要成为Typst糕手/(ㄒoㄒ)/~~

注册于 2年前

回答
195
文章
0
关注者
9

请提供你进行尝试的代码并说明具体是哪点的实现遇到了困难

可以参考这个链接

有的,考虑line cap=roundline join=round命令(可以texdoc tikz搜索)。

终于找到有人和我一样放大5000%倍pdf欣赏自己的TiKZpicture的了(握手)

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[scale=.5,line cap=round,line join=round]
  \draw[domain=0:8, smooth, variable=\x]  plot ({\x}, {1/16*pow(\x, 2)});   
  \draw[domain=0:8, smooth, variable=\x]  plot ({\x}, {-1/16*pow(\x, 2)});
  \draw (8,0) ellipse (.4cm and 4cm);
\end{tikzpicture}%但我感觉还是差点意思

%如果不是完全追求 精确的函数关系的话
%可以试试控制点(?)
\begin{tikzpicture}[scale=.5,line cap=round,line join=round]
    \draw (0,0) .. controls (4,-.3) and (6,-2.3) .. (7.958,-3.98);
    \draw (0,0) .. controls (4,.3) and (6,2.3) .. (7.958,3.98);
    \draw (8,0) ellipse (.4 and 4);
\end{tikzpicture}

%不过代码似乎也不够优雅...

\end{document}

如果是精确的两条直线分别连接了同一个点的话,前面的round命令可以自动让这一切保持圆滑,但题主的问题中幂函数椭圆方程在数学上似乎本身就是相交的,这也许是导致出现需要微调的原因(?)

图床/或者说文件床最近挂了...你的mwe我打不开....

尝试了一下:

\documentclass{ctexart}
\usepackage{xcolor}
\usepackage[b5paper,landscape,showframe]{geometry}
\usepackage{needspace}
\usepackage{zhlipsum}
\usepackage{circledtext}
\ExplSyntaxOn    
\clist_new:N \g_my_parnote_clist
\clist_new:N \g_my_parnotetxt_clist
\makeatletter
\newcounter{parnotecnt}
\NewDocumentCommand{\parnote}{O{red} m m}{%
    \refstepcounter{parnotecnt}
    \unskip\textcolor{#1}{#2}\hbox{\@textsuperscript{\normalfont\circledtext[charf=\small]{\arabic{parnotecnt}}}}\unskip
    \clist_gput_right:Nn \g_my_parnote_clist {#2}
    \clist_gput_right:Nn \g_my_parnotetxt_clist {#3}
}
\makeatother     
\NewDocumentEnvironment{myenv}{+b}{%
    \setcounter{parnotecnt}{0}%
    \clist_clear:N \g_my_parnote_clist
    \clist_clear:N \g_my_parnotetxt_clist
    \needspace{\baselineskip}{\bfseries~【原文】}\par
    {#1} \par%\vspace{5pt}
    % \clist_use:Nn \g_my_parnote_clist {,}
    \clist_if_empty:NF {\g_my_parnote_clist}{%
         \needspace{.8\baselineskip}{\bfseries~【注释】}\par
         \int_step_inline:nn {\clist_count:N \g_my_parnote_clist}{%
            \noindent{##1}.~\clist_item:Nn \g_my_parnote_clist {##1}:~\clist_item:Nn \g_my_parnotetxt_clist {##1}~\par
         }
    }\vspace{2cm}%
}{}
\ExplSyntaxOff
\begin{document}
\begin{myenv}%
    \zhlipsum[2]
    测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本
\end{myenv}
\begin{myenv}%
    \zhlipsum[2]
    测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本测试文本\parnote{红色注释}{注释内容}测试文本\parnote[cyan]{蓝色注释}{注释内容}测试文本
    \zhlipsum
\end{myenv}

\begin{myenv}
    如果文段中没有\texttt{parnote},则不会输出【注释】\par
    \zhlipsum[2]
\end{myenv}

\end{document}

image.png

不太确定还有没有什么bug...

只是好奇,如果既不显示序号,也不显示脚注,那么你输入\footnote{这是一个脚注,但不会显示序号和文字。}是想告诉LaTeX什么信息呢? 序号+1?

也许提供一些必要的使用场景会更好一点。


也许是这个意思?设置\hidefootnotefalse正常显示:

\documentclass{ctexbook}
\usepackage[b6paper,landscape]{geometry}
\newif\ifhidefootnote
\hidefootnotefalse

\ifhidefootnote
\renewcommand*{\footnote}[1]{}
\fi

\begin{document}

    这是一段示例文字,\footnote{这是一个脚注,但不会显示序号和文字}脚注序号和脚注内容均不显示\footnote{这是一个脚注,但不会显示序号和文字}。

\end{document}

设置\hidefootnotetrue则隐藏脚注:

\documentclass{ctexbook}
\usepackage[b6paper,landscape]{geometry}
\newif\ifhidefootnote
\hidefootnotetrue

\ifhidefootnote
\renewcommand*{\footnote}[1]{}
\fi

\begin{document}

    这是一段示例文字,\footnote{这是一个脚注,但不会显示序号和文字}脚注序号和脚注内容均不显示\footnote{这是一个脚注,但不会显示序号和文字}。

\end{document}

行内使用带反斜杠的命令时,请用单个反引号`包围,以防止吞反引号

建议按下面的内容阅读(不完全是线性的关系):

  • lshort-zh-cn的5.1节(链接昨天给了,这里不给)
  • Eureka老师的zlatex manual的文档关于字体配置的内容
  • 关于如何获取字体族名,请重点阅读xeCJK文档的获取字体族名一节
  • 关于西文字体,请阅读fontspec的官方文档(有点长,但你只要看前几页即可)
  • 如果对字体更感兴趣,可以进一步阅读fntguide
上面没有贴链接的文档都可以在终端输入texdoc <文档名>获取

总而言之,最简单的实践是:

设置字体有两种找到字体的方法:

  • 通过"右键为所有用户安装"字体的方法,保证windows安装到系统目录C:\Windows\Fonts
  • 在项目路径下使用.ttf/.otf文件直接访问字体(免安装)

西文字体可以通过:
\set<main/sans/mono>font设置
CJK(中日韩)字体可以通过:
\setCJK<main/sans/mono>font设置
数学字体可以使用unicode-math宏包后指定:
\setmathfont设置

请务必找到TeX能认识的字体族名/将.ttf/otf文件放在.tex同目录下,我不确定manim的字体体列表获取的是否是字体族名

请注意markdown的围栏代码块的样式应为三个反引号`!!!

可以将aligned替换为gathered,此外在嵌套环境的外层只需用equation即可。

由于你的纸似乎有点小,用\zihao{5}在数学模式下调整字体大小不合理。我下面的MWE修改了纸张大小为a3paper.

\documentclass[12pt]{ctexart}
\usepackage[a3paper,top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{amsmath}

\begin{document}
\begin{equation}
s.t.=\left\{
    \begin{gathered}
        \varDelta _k^{(p)} = \sum_{i=1}^{54} \sum_{j=1}^{2} c_{ijk}x_{ijk}^{(p)}\\
        \varPhi _k^{(p)} = \sum_{j=1}^{2} w_{jk}\min\left\{\sum_{i=1}^{64}u_{ijk}x_{ijk}^{(p)},S_{jk}\right\}\\
        \varTheta _k^{(p)} = \lambda \sum_{j=1}^{2} w_{jk}\max\left\{\sum_{i=1}^{54}u_{ijk}x_{ijk}^{(p)} - S_{jk}, 0\right\}\\
        x_{i2k}^{(p)}=0 \quad k=1,2,\cdots,16\\
        x_{ijk}^{(p)}x_{i2k}^{(p)} = 0 \quad k\in R\\
        x_{i2k}^{(p)} x_{i1k}^{(p+1)}=0 \quad k\in R\\
        x_{ijk}^{(p)}x_{ijk}^{(p+1)}=0 \quad k\in (G\cup \{k=16\})\\
        \sum_{k\in G}^{}x_{ijk}^{(p)}=0 \quad i\notin D\\
        x_{i1(16)}^{(p)}\left(\sum_{j=1}^{2}\sum_{k\in R}^{} x_{ijk}^{(p)}\right) = 0 \quad i\in L\\
        \sum_{k\in R/R_1}^{} x_{i1k}^{(p)} + \sum_{k\in R_1}^{} x_{i2k}^{(p)} = 0, \quad i\in L\\
        \sum_{k\in R/R_1}^{} x_{i1k}^{(p)} + \sum_{k\notin F}^{} x_{i2k}^{(p)} = 0, \quad i\in N\\
        \sum_{i\in N,k\in F}^{} x_{ijk}^{(p)} + \sum_{j=1}^{2}\sum_{i\notin N,k\in F}^{} x_{ijk}^{(p)} = 0\\
        \sum_{i\in L,k\in R/R_1}^{} x_{j1k}^{(p)} + \sum_{j=1}^{2} \sum_{i\notin L,k\in R/R_1}^{} x_{ijk}^{(p)} = 0\\
        \sum_{k\notin G}^{} x_{ijk}^{(p)} = 0 \quad i\in D;x_{i1(16)}^{(p)} = 0 \quad i\notin L\\
        x_{ijk}^{(p)} \ge \frac{1}{2}A_i\text{sgn}(x_{ijk}^{(p)})\\
        \sum_{t=0}^{2}\sum_{k\in M}^{} x_{ijk}^{(p+t)} >0\\
        \sum_{k\in R/R_1}^{} \text{sgn}(x_{i2k}^{(p)}) \leq 1 \quad i\in L\\
        \sum_{k=1}^{n} x_{ijk}^{(p)} \leq A_i;\sum_{k}^{} \text{sgn}(x_{ijk}^{(p)}) \leq 1, \quad i\in D\\
        x_{ijk}^{(p)} \ge 0; \quad x_{ijk}^{(p)}=0,i\in Z,k\in R/R_1\\
        M = \{k| k=1,2,\cdots,5,17,18,19\}\\
        D = \{i| i=1,2,\cdots,26\};L = \{i| i=27,28,\cdots,34\}\\
        N = \{i| i=35,36,\cdots,50\};G = \{k| k=1,2,\cdots,15\}\\
        R_1=R/\{k=35,36,37\};Z = \{i| i=51,52,\cdots,54\}\\
        R = \{k| k=17,18,\cdots,37\};F = \{k| k=38,39,40,41\}\\
    \end{gathered}
\right.
\end{equation}
\end{document}

image.png

参考阅读(lshort-zh-cn链接):

  • 4.4节内容

image.png

  • 4.7节内容

image.png

这是一个经常踩的坑,在tabulararay中使用booktabs时应该使用Tblr调用外部库的方式,才可以被Tblr识别到:
image.png

第五章中常见的booktabs,siunitx,diagbox等宏包均需使用\UseTblrLibrary

总之,在导言区加上\UseTblrLibrary{booktabs}即可:

image.png

另外,你的MWE做得很好,markdown格式也很正确,可以texdoc tabularray多看看文档~

Happy LaTeXing!

查看exam-zh.cls中有关fullwidth-stop的内容可知:

\AtEndOfPackageFile* { xeCJK }
  {
    \msg_redirect_name:nnn { xeCJK } { CJKfamily-redef } { none }
    \defaultCJKfontfeatures
      {
        Script  = CJK,
        % Mapping = fullwidth-stop ,
      }
  }

进一步逆向检索xeCJK的文档又可知:
image.png

于是一个最小工作示例如下:

\documentclass{ctexart}
\setCJKmainfont[Mapping=fullwidth-stop]{SimSun}
\begin{document}
.....

。。。。。。

你好,世界。

Hello, world.
 
\end{document}

image.png

附:若参考张晨南老师的博客内容,可以更进一步自定义字符映射

另外对于你自答中的newunicodechar宏包的使用是否在ctex文档类以及不同编译引擎(PDFLaTeX,XeLaTeX,LuaLaTeX)中均生效,To Be Continued.... 有关的讨论也可以见这个问题中雾月老师的回答

如果我们用的是同一个"华文楷体"的话,楷体是没有粗体的。

image.png

如果一定要对楷体加粗,一个不那么好的办法是使用伪粗体

image.png

\documentclass{article}
\usepackage{ctex}
\setCJKfamilyfont{KaiTi}[AutoFakeBold,AutoFakeSlant]{华文楷体.TTF}
\newcommand{\KaiTi}{\CJKfamily{KaiTi}}
\begin{document}
\section{Introduction}

{\KaiTi 水电费} <-这是楷体

\textbf{水电费} <-这是粗体

{\KaiTi \textbf{水电费}} <-这是(伪)加粗的楷体

{\KaiTi \bfseries 水电费} <-这也是(伪)加粗的楷体

{\KaiTi \textit{水电费}} <-这也是(伪)倾斜的楷体

{\KaiTi \itshape 水电费} <-这也是(伪)倾斜的楷体

{\KaiTi \itshape \bfseries 水电费} <-这也是(伪)倾斜与(伪)加粗的楷体

\end{document}

image.png

另外,下次提问最好补充提供华文楷体.TTF文件(在没有版权问题的前提下)。

考古偶有所得


补充评论中的内容,来测试下(并非)开源的天珩字库

除了天珩标准字库外,还提供了以下的字体。

image.png

安装字体后,使用xeCJK文档中提到的方法,在powershell中输入:

image.png

fc-list -f "%{family}\n" :lang=zh > zhfont.txt

或者(需要安装typst,感觉字体族名管理比fc-list好)

typst fonts

可以得到有关的字体名如下:

TH-Feon
TH-Hak
TH-Joeng-H
TH-Joeng-J
TH-Khaai-PP0
TH-Khaai-PP2
TH-Khaai-TP0
TH-Khaai-TP16
TH-Khaai-TP2
TH-Ming-HP0
TH-Ming-JP0
TH-Ming-P2
TH-Sung-KP0
TH-Sung-KP2
TH-Sung-PP0
TH-Sung-PP2
TH-Sung-TP0
TH-Sung-TP2
TH-Sy-P0
TH-Sy-P16
TH-Sy-P2
TH-Times
TH-Times_cyrl
TH-Times_grek
TH-Times_telex
TH-Tshyn-P0
TH-Tshyn-P1
TH-Tshyn-P16
TH-Tshyn-P2

下面测试基于"楷体"和"黑体"字形测试

  • 天珩字库-正楷(TH-Khaai-T;最新版4.0.0)——TH-Khaai-T
  • 天珩字库-黑体(TH-Hak;最新版4.0.0)——TH-Hak

对于天珩正楷

  • TH-Khaai-TP0支持扩展H区字体"𱠧"
  • TH-Khaai-TP2支持扩展B区字体"𤝽"
\documentclass{ctexbook}
\xeCJKsetup{AutoFallBack=true}
\xeCJKDeclareCharClass{CJK}{"2EBF0->"2EE5F, "31350->"323AF} 
\setCJKmainfont{KaiTi}
\setCJKfallbackfamilyfont{\CJKrmdefault}{%
  {[AutoFakeBold,AutoFakeSlant]{TH-Khaai-TP2}},
  {[AutoFakeBold,AutoFakeSlant]{TH-Khaai-TP0}},
}
\begin{document}

扩展B区: “𤝽”.

扩展H区: “𱠧”.

\end{document}

image.png

对于天珩正黑TH-Hak

目前似乎仍然不支持“黑体”的扩展H区字符"𱠧"

\documentclass{ctexbook}
\xeCJKsetup{AutoFallBack=true}
\xeCJKDeclareCharClass{CJK}{"2EBF0->"2EE5F, "31350->"323AF} 
\setCJKmainfont{SimHei}
\setCJKfallbackfamilyfont{\CJKrmdefault}{%
  {[AutoFakeBold,AutoFakeSlant]{TH-Hak}},
}
\begin{document}

扩展B区: “𤝽”.

扩展H区: “𱠧”.

\end{document}

image.png

还需另寻他法,但是缺的也只是支持的字体,而不是xeCJK调用的方法(逃)。


20250206补充,尝试黑体开源方案遍黑体,同时测试MiSans L3字体

\documentclass{ctexbook}
\xeCJKsetup{AutoFallBack=true}
\xeCJKDeclareCharClass{CJK}{"2EBF0->"2EE5F, "31350->"323AF} % Ext-I, Ext-H
\setCJKmainfont{MiSans-Regular.ttf}
\setCJKfallbackfamilyfont{\CJKrmdefault}{
    {[AutoFakeBold,AutoFakeSlant]{PlangothicP1-Regular.otf}},
    {[AutoFakeBold,AutoFakeSlant]{PlangothicP2-Regular.otf}},
    {[AutoFakeBold,AutoFakeSlant]{MiSans L3.ttf}},
}
\parindent=0pt
\begin{document}

Hello, World! 你好,世界!

\Huge 

扩展B区: “𠳹”、“𤠠”、“𬬺”、“𤝽”

扩展H区: “𱠧”

𰻞、昶、辵、疋、玍

\end{document}

image.png

上面的字体来自:

image.png

也许可以试试这样...抛砖引玉吧, 但是要在parbox内部使用footnote需要使用footnotemarkmorefootnotetext, 但这种做法不是很优雅, 同时个人觉得这样的效果并不好看...是否有什么书籍的诗句排版实现了这样的两端对齐(justify)让你一定要这么做呢?

\documentclass[b5paper,twoside,openany,UTF8]{ctexbook}
\usepackage[left=2.54cm, right=2.54cm, top=2.54cm, bottom=2.54cm]{geometry} %页边距设置
\newenvironment{shi}{\begin{center}\kaishu\vskip -5pt}{\end{center}\vskip -5pt} % 总是建议不要用拼音命名...
\NewDocumentEnvironment{mypoem}{ O{\linewidth} +b}{%
    % #1: \parbox宽度 #2 环境内容
    \vskip -5pt%
    \begin{center}\parbox[s]{#1}{%
        \setlength\parfillskip{0pt}%
        \kaishu\noindent #2
        }
    \end{center}\vskip -5pt
}{}

% https://tex.stackexchange.com/questions/349929/two-footnotemarks-in-a-tcolorbox-yield-footnotes-with-the-same-label/349938#349938
\usepackage{xassoccnt}
\usepackage{refcount}
\newcounter{totalfootnotes}
\newcounter{totalfootnotetexts}
\DeclareAssociatedCounters{footnote}{totalfootnotes}% Count all footnotes
\usepackage{xpatch}
\xpatchcmd{\footnotemark}{\stepcounter}{\refstepcounter}{}{}
\xapptocmd{\footnotemark}{\label{fnmark-\number\value{totalfootnotes}}}{}{}
\xpretocmd{\footnote}{\stepcounter{totalfootnotetexts}}{}{}% Explicitly step!
\NewDocumentCommand{\morefootnotetext}{o+m}{%
  \IfValueTF{#1}{%
    \footnotetext[#1]{#2}%
  }{%
    \stepcounter{totalfootnotetexts}%
    \footnotetext[\getrefnumber{fnmark-\number\value{totalfootnotetexts}}]{#2}
  }%
}

\begin{document}
    \begin{shi}%
        山中狐兔潜踪迹,涧内獐猿惊且慌。\\
        卞庄\footnote{卞庄——即卞庄子,春秋时鲁国大夫。有勇力,尝刺双虎。}见后魂魄散,存孝\footnote{存孝——即李存孝,五代后唐名将,原名安敬思,后为李克用义子,赐李姓,猿臂善射。元杂剧有《存孝打虎》剧目。}遇时心胆亡。\\
        清河壮士\footnote{注释}酒未醒,忽在岗头偶相迎。\\
        上下寻人虎饥渴,撞著狰狞\footnote{注释}来扑人。\\
        虎来扑人似山倒,人去迎虎如岩倾。\\
    \end{shi}

    \begin{center}\vskip -5pt
    \parbox[s]{20\ccwd}{%
        \setlength\parfillskip{0pt}%
        \kaishu\noindent
        虎来扑人似山倒,人去迎虎如岩倾。\linebreak
        上下寻人虎饥渴,撞著狰狞\footnotemark 来扑人。\linebreak
        上下寻人\footnotemark 虎饥渴,上下寻人\footnotemark 虎饥渴。\linebreak
        上下\footnotemark 寻人\footnotemark 虎饥渴,上下寻人虎饥渴。

        上\footnotemark 下寻人\footnotemark 虎饥\footnotemark 渴,上下\footnotemark 寻人\footnotemark 虎饥渴。%永远不要在文本中用‘\\’
    }\vskip -5pt
    \end{center}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}

    \begin{mypoem}[20\ccwd]%
        虎来扑人似山倒,人去迎虎如岩倾。

        上下寻人虎饥渴,撞著狰狞\footnotemark 来扑人。

        上下寻人\footnotemark 虎饥渴,上下寻人\footnotemark 虎饥渴。

        上下\footnotemark 寻人\footnotemark 虎饥渴,上下寻人虎饥渴。

        上\footnotemark 下\footnotemark 寻人虎饥\footnotemark 渴,上下\footnotemark 寻人\footnotemark 虎饥渴。
    \end{mypoem}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
    \morefootnotetext{注释}
\end{document}

image.png

你的代码并不完整\sanhao,\sihao\timesnewroman在标准文档类book以及ctex中并没有定义。我无法复现你所说的:

其中sectionsubsection里面的beforeskipafterskip,无论调成多少都没有产生变化

有可能是你文档中其他的设置影响了这一弹性长度,因此你需要提供最小工作示例

\documentclass{book}
\RequirePackage[heading=true]{ctex}
% \setcounter{secnumdepth}{3}
\ctexset{
    % chapter={
    %     % format={\centering\sanhao\heiti\timesnewroman},
    %     aftername=\hspace{\ccwd},
    %     beforeskip={26bp},
    %     afterskip={18bp},
    %     name={第, 章},
    %     fixskip = true, % 添加配置
    %     number=\arabic{chapter},
    %     indent=0bp
    % },
    section={
        % format={\raggedright\heiti\sihao\timesnewroman},
        aftername=\hspace{\ccwd},
        beforeskip={24bp},
        afterskip={60bp},
        fixskip=true,
        number={\thechapter.\arabic{section}}
    },
    subsection={
        % format={\raggedright\banxiaosi\heiti\timesnewroman},
        aftername=\hspace{\ccwd},
        beforeskip={12bp},
        afterskip={60bp},
        fixskip = true,
        number = {\thechapter.\arabic{section}.\arabic{subsection}}
    }
}
\usepackage{zhlipsum}
\begin{document}
    \chapter{00}
    \section{sec000}
        我能吞下玻璃而不伤身体。我能吞下玻璃而不伤身体。
        \subsection{subsec000}
        我能吞下玻璃而不伤身体。我能吞下玻璃而不伤身体。
\end{document}

image.png

请你提供最小工作示例(使用"补充问题"功能修改你的问题),同时建议再次仔细研究ctex宏包的文档.

image.png

image.png

非常感谢@u101077 老师在交流群提供的建议和帮助。

参考链接1:雾月老师的回答,其中提供了一些开源的生僻字方案。

参考链接2:xeCJK的文档中关于FallBack的介绍

参考链接3:关于windows电脑中微软提供的宋体SimSun以及其拓展字形SimSun-ExtB的说明

image.png

总的来说,在宋体字形下,本问题的一个实践也许是:

\documentclass{ctexbook}
%\usepackage{xeCJK} %在ctexbook文档类内部已经调用了xeCJK宏包
\xeCJKsetup{AutoFallBack=true}
\setCJKmainfont[FallBack=SimSun-ExtB]{SimSun}
\parindent=0pt
\begin{document}
一个比较简单的方法是使用SimSun-ExtB作为FallBack字体.

如:“𠳹”、“𤠠”、“𬬺”。
\end{document}

image.png

另外关于下面的开源方案:

能否实现该需求,希望有人接着探索(星星眼)。

此外,你的工作示例中仍然有一些与本问题无关的宏包,同时请区分好:

  • 一个反引号对应的是行内代码块例如ctex 不可换行!!!
  • 三个反引号对应的是行间代码块例如下面这些都是mwe中无关的内容
\xeCJKsetup{CheckSingle=true}
\usepackage[left=2.54cm, right=2.54cm, top=2.54cm, bottom=2.54cm]{geometry} %页边距设置
\usepackage[colorlinks,linkcolor=black]{hyperref}
\usepackage{subfig,epsfig,graphicx}
\usepackage{color,xcolor}
\usepackage{titlesec}

请善用“补充问题”和“预览”功能。

BTW. 本问题也许可以更好地被拓展为:

ctex下,输入“宋体”,“黑体”,“楷体”等字体的生僻字的推荐做法和推荐字体。

你应该提供你的完整代码(最小工作示例)。

image.png

如果仅仅只是想“使ctexart类型的“参考文献”四个字居左对齐”的话...你可以试试这个。

thebibliographyarticle.cls的定义为:

\newenvironment{thebibliography}[1]
     {\section*{\refname}%
      \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
      \endlist}

可见所谓的"参考文献"实际上就是\section*{},其理应与\section保持相同的样式。

下面的例子会同步修改section的样式左对齐。

\documentclass{ctexart}
\ctexset{section/format+=\raggedright}
\usepackage{tocbibind}
\begin{document}

\tableofcontents\clearpage

\section{章节}
\section{章节}
\section{章节}
\section{章节}

这是一个简单的引用示例1234546\cite{article-minimal}。

\bibliographystyle{plain} % 设置参考文献样式
\bibliography{xampl} % 引用参考文献数据库

\end{document}

image.png

我又微调了一下:

  • \footnoterule调整水平线的位置,长度等信息
  • \@makefnmark调整在正文中上标的脚注样式,其中\@thefnmark为脚注数字(也许查一下latex.ltx可以找到原始定义,我也不是非常熟悉...)
  • \@makefntext#1调整在脚注位置的编号距离等信息,其中#1为脚注命令\foornote{}吞下的token内容
  • 下面的部分内容可能需要你texdoc circledtext查看文档

(泪目,我从你昨天的代码里借鉴了一些内容...,可惜,下面这小段对我来说还是有障碍,我只大概知道它设置了一些dim,下文的注释有我微调的四处距离,因此这段如果有问题可不要怪我(bushi))

% latex2e老大难啊
\@setpar{\@@par\@tempdima \hsize\advance\@tempdima-\@footindent
        \parshape \@ne \@footindent \@tempdima}\par
\documentclass[11pt,b5paper,twoside,UTF8]{ctexbook}
% \usepackage{inputenc} 
% \usepackage[T1]{fontenc}
% 使用xelatex好像不需要这些 encoding 相关的(?)
\usepackage[left=2.54cm, right=2.54cm, top=2.54cm, bottom=2.54cm]{geometry}
% \usepackage{CJKnumb} % 这个包我不认识...感觉是个obselete的
\AtBeginDocument{\linespread{1.5}}
\usepackage[colorlinks,linkcolor=black]{hyperref}
\usepackage{circledtext} % 为了字符压缩,使用了cirlcedtext宏包
% \usepackage{tikz}
% \newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[circle, draw, inner sep=0pt, minimum size = 1.25em] (char) {\scriptsize{#1}};}}

\makeatletter
\renewcommand\footnoterule{\kern-3\p@ \hrule width 0.4\columnwidth \kern 2.6\p@\vskip2ex}% 微调第一处..\vskip2ex调整\footnoterule与脚注的垂直间距
\def\@makefnmark{\hspace{.2em}\hbox{\@textsuperscript{\normalfont\circledtext[charf=\tiny]{\@thefnmark}}}}
%微调第二处,增加了`\hspace{.2em}`微调距离,并使用\circledtext的charf=\tiny选项调整25%大小(?)
\newskip\@footindent
\@footindent=4em %微调第三处`\@footindent`
\long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize\advance\@tempdima-\@footindent
        \parshape \@ne \@footindent \@tempdima}\par
    \noindent \hbox to \z@{\hss\normalfont\circledtext[charf=\footnotesize]{\@thefnmark}\hspace{1.5em}}#1}%微调第四处,设置charf=\footnotesize以实现下方脚注的字体一样大
\makeatother

\begin{document}

\ExplSyntaxOn
\int_step_inline:nn {15}{
    脚注大小测试\footnote{如何使得脚注序号与脚注文字一样大、高度平齐}\par
}
\ExplSyntaxOff
    
\end{document}

image.png


补充关于CJKnumbzhnumber宏包的信息

image.png


关于补充评论的对比图...(我也不知道有没有效)
上一个图点快了...抱歉...

image.png

发布
问题