duplicated: https://gitee.com/xkwxdyy/exam-zh/issues/ID9HGT
Remark:
- 请正确使用markdown!!!
- 注意提问的题目要对整个问题有概括作用,而不只是粘贴报错信息(已修改)
duplicated: https://gitee.com/xkwxdyy/exam-zh/issues/ID9HGT
Remark:
修改「.bst」是很坏的做法...因为可能在编辑那里就无法编译。这里有大量的沟通成本。
求己不如求人:
IEEEtran.bst作者的邮件回复:https://tex.stackexchange.com/questions/67444/doi-in-ieeetran-bibliography#comment523986_67444如果使用这些patch过的IEEEtran.bst,可以在「本地」解决这个问题...

描述问题要详细,最好给预期效果:
\newcommand{\HYXSQS}{}存在的意义是?另外,我建议你不要在这里用titlesec...ctex原生提供了一套方法...
我到现在也不太明白何为「如何在居右的情况下,转行后“这”与“需”对齐」
\documentclass[fontset=fandol,openany]{ctexbook}
\usepackage[paperheight=15cm,showframe]{geometry}%
\usepackage{xcolor}
\usepackage{varwidth}
\newcommand{\HZSBH}{\sffamily\bfseries\color[cmyk]{1,1,0,0}\selectfont}
\newcommand\chaptertitleformat[1]{%
\begin{varwidth}[t]{.7\linewidth}#1\end{varwidth}}
\ctexset{
chapter/number = \arabic{chapter},
chapter/titleformat = \chaptertitleformat,
chapter/format+ = {\raggedleft\HZSBH},
}
\begin{document}
\chapter{这是一个很长的章节标题需要自动换行}
\chapter{这是一个很长的章节标题\\需要手动换行}
\end{document}
\documentclass[titlepage]{article}
\newcommand{\mycontent}{??????}
\usepackage{magicwatermark}%% v1.2B
\MagicWatermark{
setup = {
pages = {1-i},
content = {\mycontent},
style = {
shift = {(0,-.6\textheight)},
scale = 3,
text = cyan,
font = \ttfamily
}
}
}
\usepackage{tikz}
\usepackage{lipsum}
\makeatletter
% from Line 423~437 in article.cls
\renewenvironment{titlepage}
{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
% \setcounter{page}\@ne
\setcounter{page}{0}
}%
{\if@restonecol\twocolumn \else \newpage \fi
\if@twoside\else
\setcounter{page}\@ne
\fi
}
\makeatother
\begin{document}
\title{title}
\author{author}
\date{\today}
\maketitle
\section{Hello, Ben!}
\lipsum[1-10]
\section{Hello, Carl!}
\lipsum[1-20]
\section{Hello, David!}
\lipsum[1-15]
\end{document}
关于「LaTeXer」提到的「宏包说明」:
一个基于tkz-elements+tkz-euclide的方案如下:
% lualatex
\documentclass[tikz,border=5pt]{standalone}
\usepackage[mini]{tkz-euclide}
\usepackage{tkz-elements}
\usepackage{fouriernc}
\directlua{
init_elements()
z.O = point(0, 0)
z.F = point(1, 0)
z.m = point(-1, 1)
z.n = point(-1, -1)
L.mn = line(z.m, z.n)
CO.PA = conic(z.F, L.mn, 1)
PA.curve = CO.PA:points(-6, 6, 100)
slope = 1.1 -- you can modify the slope of Line.AB
z.Fp = z.F + point(1,slope)
L.AB = line(z.F, z.Fp)
z.B, z.A = intersection(CO.PA, L.AB)
z.Fpp = z.F:rotation( -math.pi / 2, z.Fp )
L.CD = line(z.F, z.Fpp)
z.C, z.D = intersection(CO.PA, L.CD)
}
\begin{document}
\begin{tikzpicture}
\tkzGetNodes
\tkzInit[xmin=-1,xmax=9,ymin=-6,ymax=4]
\tkzDrawX[noticks,thick]\tkzDrawY[noticks,thick]
\tkzDrawCoordinates[smooth,thick](PA.curve)
\tkzDrawSegments[thick](A,B C,D)
\tkzDrawPoints[blue](O,F,A,B,C,D)
\tkzLabelPoints[below left](O)
\tkzLabelPoints[below=3pt](A,D,F)
\tkzLabelPoints[right](B,C)
\end{tikzpicture}
\end{document}
一个显然的优点是方便控制「斜率参数」、「坐标轴长度」、「抛物线的焦点准线参数」等...
不过有点小瑕疵,如何使用一行命令控制全局的line width=1pt呢,不知为何\tkzSetUpLine并不能对图里的所有线都生效ε=( o`ω′)ノ
XeLaTeX下没有可以调整字体基线的方式,但是LuaLaTeX可以,详情可查阅luatex-ja的文档:
\documentclass{ctexart}
\setmainfont{Times New Roman}
% TeXpage:fandol-song + Time New Roman
\begin{document}
\bfseries
调整前:
1. 这是中文
1.1 这是中文
1.1.1 这是中文
\bigskip
调整后:
{
\ltjsetparameter{yjabaselineshift=-1pt}
2. 这是中文
2.1 这是中文
2.1.1 这是中文
}
\end{document}
请尽可能提供具体是如何解决的,否则这个页面的问题没有任何意义,对后来人无法提供任何帮助。
推荐阅读:https://lug.ustc.edu.cn/wiki/doc/smart-questions/#问题解决后加个简短的补充说明
具体是怎么不可更改,这与模板/主题的设置也有关系,请提供可以编译的完整代码。
零个人知道你具体遇到了什么问题...
或许试试这个...
\documentclass[fontset=fandol,12pt]{ctexart}
% \xeCJKsetup{Verb=true}
\usepackage{tabularray}
\usepackage{codehigh}%
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcblisting}{colback=red!5!white,colframe=red!75!black}
\xeCJKVerbAddon
\verb|boxrule=<长度>| \verb|boxrule=<length>|%
\begin{verbatim}
boxrule=<长度> boxrule=<length>
\end{verbatim}
\begin{tblr}{l}%
\fakeverb{boxrule=<长度>} \fakeverb{boxrule=<length>}%
\end{tblr}%
\fakeverb{boxrule=<长度>} \fakeverb{boxrule=<length>}%
\texttt{boxrule=<长度>} \texttt{boxrule=<length>}%
\texttt{boxrule=<}长度\texttt{>} \texttt{boxrule=<length>}%
\xeCJKOffVerbAddon
\end{tcblisting}
\end{document}
我没有细看文档,但似乎「\SetArgSty」可以修改这里的样式
\SetArgSty{<font>} sets the argument typography (by default: emph).\documentclass[fontset=fandol]{ctexart}
\usepackage{graphicx} % Required for inserting images
\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
\usepackage{amsmath,amsfonts}
\begin{document}
\SetArgSty{textup}%
\section{Introduction}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e}
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\end{algorithm}
\begin{algorithm}[htb]
\SetAlgoLined
\KwResult{每个时间步的参数$\theta$}
\For{第$1,2,\dots,n$个时间步}{
对上一步的态$|\psi(\theta_t) \rangle$作用时间演化算子$e^{-iH\Delta t}$,得参照态$e^{-iH\Delta t}|\psi(\theta_t) \rangle$ \;
初始化$\theta = \theta_t$ \;
求惩罚函数的梯度$\nabla_{\theta}C(\theta)$ \;
\While{$|\nabla_{\theta}C(\theta)| > \text{grad}_{\text{tol}}$ 且 $\text{count} < \text{count}_{\text{max}}$}{
根据梯度$\nabla_{\theta}C(\theta)$,利用ADAM优化器更新参数$\theta$ \;
$\text{count}$加1 \;
求惩罚函数的梯度$\nabla_{\theta}C(\theta)$ \;
}
}
\end{algorithm}
\end{document}嗯...因为我懒得读完全部文档...所以未必是好的实践...

注意到elegantbook.cls中对proof的定义,修改一下即可.
% Line 1192~1196
\newenvironment{proof}{
\par\noindent\textbf{\color{second}\proofname\;}
\color{black!90}\cfs}{
% \hfill$\Box$\quad
\par}其实手动指定硬编码数字「2」也是不够好的...
\documentclass[lang=cn]{elegantbook}
\usepackage{zhlipsum}%
\renewenvironment{proof}[1][]{%
\par\noindent\textbf{\color{second}\proofname\;#1\;}
\color{black!90}\cfs}{
% \hfill$\Box$\quad
\par}%
\begin{document}
\begin{proof}
显然。
\end{proof}
\begin{proof}[(2)]
显然。这是一个证明:\zhlipsum[2]
\end{proof}
\begin{proof}[「5」]
显然。这是另一个证明:\zhlipsum[2]
\end{proof}
\end{document}
补充一些信息...
需要注意到在elegantbook.cls中的definition环境的定义为:
% Line 1079
\ELEGANT@newtheorem{definition}{defstyle}% Line 902
\tcbset{
common/.style={
fontupper=\citshape,
lower separated=false,
% before upper={\setlength{\parindent}{\normalparindent}},
coltitle=white,
colback=gray!5,
boxrule=0.5pt,
fonttitle=\bfseries,
enhanced,
breakable,
top=8pt,
before skip=8pt,
attach boxed title to top left={
yshift=-0.11in,
xshift=0.15in},
boxed title style={
boxrule=0pt,
colframe=white,
arc=0pt,
outer arc=0pt},
separator sign={.},},
defstyle/.style={
common,
colframe=main,
colback=main!5,
colbacktitle=main,
overlay unbroken and last={
\node[anchor=south east, outer sep=0pt] at (\linewidth-width,0) {
\textcolor{main}{$\clubsuit$}};}},
...其中fontupper=\citshape使用的定义为:
\ifcsname kaishu\endcsname
\newcommand{\citshape}{\kaishu}
\else
\newcommand{\citshape}{\itshape}
\fi所以要想在定义环境里加粗,需要保证「楷体」有粗体的字重,或者使用伪粗体...
fontset=windows,将默认使用「中易楷体」(a.k.a. simkai.ttf),没有粗体字重fontset=fandol,默认使用「fandol-kai」同样没有粗体字重fontset=ubuntu使用的是思源字库(win下需要自行安装),其对应使用的楷体为「gkai00mp.ttf」(似乎是文鼎楷体),同样没有粗体的字重fontset=founder),其楷体字形是有粗体的,因此表现正常P.S.一个 不推荐 的方式是使用「伪粗体」,如下在windows的例子:
\documentclass[lang=cn]{elegantbook}
\setCJKfamilyfont{zhkai}[AutoFakeBold]{simkai.ttf}
\renewcommand*{\kaishu}{\CJKfamily{zhkai}}
\begin{document}
\begin{definition}
你好,我想要在这里\textbf{加粗}哈哈哈
我在windows下用的是「中易楷体」,没有粗体
\end{definition}
\end{document}
其实也可以改一下让定义环境里不使用楷体,而是使用常见的宋体.作为示例:
\documentclass[lang=cn]{elegantbook}
\tcbset{common/.append style={fontupper=\normalfont}}
\begin{document}
\begin{definition}
你好,我想要在这里\textbf{加粗}哈哈哈
我现在在windows下用的是「中易宋体」,没有粗体,所以改用「中易黑体」做为粗体
\end{definition}
\end{document}
或者使用fandol-song
\documentclass[lang=cn,fontset=fandol]{elegantbook}
\tcbset{common/.append style={fontupper=\normalfont}}
\begin{document}
\begin{definition}
你好,我想要在这里\textbf{加粗}哈哈哈
我现在在windows下用的是「fandol宋体」,他有粗体
\end{definition}
\end{document}
核心原因还是因为elegant-latex对common这个style使用了楷体,但是有粗字重的楷体太少了...
该问题的最小工作示例其实可以更短:
\documentclass[AutoFakeBold]{ctexart}
\setmainfont{Times New Roman}
\begin{document}
{\zihao{-2}\songti\bfseries%
1. 问题复现
1.1 问题描述
1.1.1 问题背景
2. 工作人员
2.1 工作人员
2.1.1 工作人员
}
\end{document}总结一下上面的测试结果:
simsum.ttc与Time New Roman的基线比较匹配STsong.ttf与Time New Roman的基线不匹配fandol-song.ttf与Time New Roman的基线不匹配至于怎么办嘛,看格式要求
如果格式要求就是: 宋体+TNR,最好使用中易宋体
否则可以考虑替换西文字体,并不是任意两个西文字体和中文字体都是那么匹配的...
2025年,可以不用cleveref而改用zref-clever:
\documentclass{beamer}
\usepackage{hyperref}
% \usepackage{cleveref}
% \crefformat{equation}{\mbox{Eq. #2(#1)#3}}
% \crefrangeformat{equation}{\mbox{Eqs. #3(#1)#4 to #5(#2)#6}}
% \crefmultiformat{equation}{\mbox{Eqs. #2(#1)#3}}{ and #2(#1)#3}{, #2(#1)#3}{ and #2(#1)#3}
% \crefrangemultiformat{equation}{\mbox{Eqs. #3(#1)#4 to #5(#2)#6}}{ and #3(#1)#4 to #5(#2)#6}{, #3(#1)#4 to #5(#2)#6}{ and #3(#1)#4 to #5(#2)#6}
\usepackage{zref-clever}
\zcRefTypeSetup{equation}{
name-sg={eq.},
name-pl={eqs.},
Name-sg={Eq.},
Name-pl={Eqs.},
}
\begin{document}
\begin{frame}{Title Here}
\begin{block}
\begin{align}
A &= B
\label{eq1}
\\
&= C
\label{eq2}
\\
&= D
\label{eq3}
\end{align}
\end{block}
\end{frame}
\begin{frame}{Title Here}
\begin{block}
\begin{align}
A &= B
\label{eq4}
\\
&= C
\label{eq5}
\\
&= D
\label{eq6}
\end{align}
\end{block}
\end{frame}
\begin{frame}{Title Here}
\begin{block}
\begin{align}
A &= B
\label{eq7}
\\
&= C
\label{eq8}
\\
&= D
\label{eq9}
\end{align}
\end{block}
\end{frame}
\begin{frame}
contents in between
\end{frame}
\begin{frame}
% \cref{eq1}
% \cref{eq1,,eq2}
% \cref{eq1,eq2,eq3}
% \cref{eq1,eq2,eq3,eq7,eq8,eq9}
% \cref{eq1,,eq2,,eq3,eq7,eq8,eq9}
% \cref{eq6,eq7,eq9}
% Eq. \ref{eq1}
\zcref[S]{eq1}
\zcref[S]{eq1,,eq2}
\zcref[S]{eq1,eq2,eq3}
\zcref[S]{eq1,eq2,eq3,eq7,eq8,eq9}
\zcref[S]{eq1,,eq2,,eq3,eq7,eq8,eq9} % I want "Eqs. (1),(2),(3) and (7) to (9)"
\zcref[S]{eq6,eq7,eq9}
Eq. \zref{eq1}
\end{frame}
\end{document}这样不会报任何警告,虽然「编号形式受到\seq_set_from_clist:Nn对clist的解析小问题」,但是很少会用到\cref{eq1,,eq2,,eq3,eq7,eq8,eq9}这样故意空格的需求...

问 使用exam-zh模板在windows下编译\subject命令出现字体警告?