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

注册于 2年前

回答
99
文章
0
关注者
3

本弹性强迫症也来给一个briefly summary:
参考自tse上的另一个回答,大致有以下三种方案:

  • amsthm宏包
  • ntheorem宏包
  • thmtools宏包

方案一

\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{lipsum,zhlipsum}
\newtheoremstyle{no-bracket}
    {\topsep}
    {\topsep}
    {\normalfont\itshape}
    {0pt}
    {\bfseries}
    {} %{:}
    {\newline}
    %{\thmname{#1}~\thmnumber{#2}\thmnote{ \textlangle#3\textrangle}}
    {\thmname{#1}~\thmnumber{#2}\thmnote{ #3: }}
\theoremstyle{no-bracket}  
\newtheorem{theorem}{定理}[section]
\begin{document}
\noindent 使用\verb|amsthm|宏包的\verb|\newtheoremstyle|修改参数\verb|<CUSTOM-HEAD-SPEC>|实现

\section{这是一个章节}
\begin{theorem}[Fundamental Theorem of Algebra]
    \lipsum[2]
\end{theorem}
\begin{theorem}[代数学基本定理]
    Fundamental Theorem of Algebra
\end{theorem}
\begin{theorem}[代数学基本定理]
    \zhlipsum[1]
\end{theorem}
\end{document}

image.png

方案二

\documentclass[12pt]{ctexart}
\usepackage{amsmath}
\usepackage{lipsum,zhlipsum}
\usepackage{ntheorem}
\makeatletter
\newtheoremstyle{no-bracket}
  {
    \item[
        \rlap{\vbox{\hbox{\hskip\labelsep 
        \theorem@headerfont ##1\ ##2\theorem@separator}
        \hbox{\strut}}}
    ]
  }%
  {
    \item[
        \rlap{\vbox{\hbox{\hskip\labelsep 
        \theorem@headerfont ##1\ ##2\ ##3: \theorem@separator}\hbox{\strut}}}
        %冒号加在这里不会有空格
    ]
}
\makeatother
\theoremstyle{no-bracket}
%\theoremseparator{:} %出现空格
\newtheorem{theorem}{Theorem}

\begin{document}
\noindent 使用\verb|ntheorem|宏包的\verb|\newtheoremstyle|命令

\section{这是一个章节}
\begin{theorem}[Fundamental Theorem of Algebra]
    \lipsum[2]
\end{theorem}
\begin{theorem}[代数学基本定理]
    Fundamental Theorem of Algebra
\end{theorem}
\begin{theorem}[代数学基本定理]
    \zhlipsum[1]
\end{theorem}
\end{document}

image.png

方案三

\documentclass[10pt,a4paper]{ctexart}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{lipsum,zhlipsum}
\usepackage{thmtools} %
\declaretheoremstyle[
  spaceabove=\topsep, 
  spacebelow=\topsep,
  headfont=\normalfont\bfseries,
  notefont=\bfseries, 
  notebraces={}{},
  bodyfont=\normalfont\itshape,
  postheadspace=\newline,
  headpunct={:},
]{no-bracket}
\declaretheorem[style=no-bracket,name=Theorem]{theorem}

\begin{document}
\noindent 使用\verb|thmtools|宏包的\verb|\declaretheoremstyle|命令设置

\section{这是一个章节}
\begin{theorem}[Fundamental Theorem of Algebra]
    \lipsum[2]
\end{theorem}
\begin{theorem}[代数学基本定理]
    Fundamental Theorem of Algebra
\end{theorem}
\begin{theorem}[代数学基本定理]
    \zhlipsum[1]
\end{theorem}
\end{document}

image.png

我来自己提供一个tabularray的方法....

image.png

%\usepackage{xcolor}
%\usepackage{tabularray}
\begin{tblr}{
        hlines,
        vlines,
        colspec = {cQ[c,cyan7]Q[c,azure7]Q[c,blue7]},
        row{1} = {bg=cyan},
        hline{3} = {2-4}{red},
        hline{5} = {2-4}{cyan},
        hline{7} = {2-4}{violet},
        cell{2}{1} = {r=2,c=1}{c,orange!60},
        cell{4}{1} = {r=2,c=1}{c,orange!60},
        cell{6}{1} = {r=2,c=1}{c,orange!60},
    }
        $\beta$ & $50$ & $100$ & $150$ \\
        静态工作点& AAA & BBB & CCC \\
        & DDD & EEE & FFF \\
        动态工作点& AAA & BBB & CCC \\
        & DDD & EEE & FFF \\
        等离子态工作点& AAA & BBB & CCC \\
        & DDD & EEE & FFF \\
\end{tblr}

你好,请参考该回答提供MWE

https://ask.latexstudio.net/ask/question/17389.html

提问不规范,latex两行泪。

尝试看了下模板源代码,结果头昏目眩了...
记录下探索发现

P.S.如果问题涉及多个需求建议分点阐述

  1. 不同位数数字的对齐问题
  2. 如何自定义序号的起始值
  3. 解答题题干换行后,如何取消悬挂缩进
  4. "注"处多了一个空格的问题

有如下的发现:
关于问题4: 最软的柿子是 "注"...只是因为你在"注"字前多打了一个空格
关于问题3: MWE中采用的是enumerate环境,在普通的文档类中要想简单地取消其缩进可以考虑 https://tex.stackexchange.com/questions/241983/remove-indent-when-using-enumerate 中的做法(虽然这样会去掉enumerate自动缩进的层次感并不推荐)
然而exam-zh环境对\solution环境进行了高度的自定义,这种做法并不能生效....代码逻辑有点看不动了...坐等肉丝老师(搓手手)
image.png

关于问题2:请查看exam-zh-doc中关于index选项的说明
关于问题1:我觉得也是不太好处理的...要适配不同长度的index得改不少地方

对于不同宽度的序号的默认显示效果如下:

image.png

exam-zhquestion/label-align以及problem/label-align的默认对齐方式均为right,在exam-zh-question.sty中:

  • 504行左右的 \str_case:Vn \l__examzh_problem_label_align_tl控制了problem不同情况下item的缩进方式
  • 639行左右的 \str_case:Vn \l__examzh_question_label_align_tl控制了question下item的缩进方式

image.png

  • 760行左右的 \str_case:Vn \l__examzh_question_label_align_tl以及\str_case:Vn \l__examzh_problem_label_align_tl通过不同的弹性长度来调整标号的水平位置。

image.png

....嗯...但我没改出来呜呜

exam-zh-symbols.sty中提供了\__examzh_symbols_frac_calc_str_num:nn用于获取数位,结合不同分类情况也许可以实现...

听说 鱼香肉丝先生正是 exam-zh的 maintainer,那就交给他好了.

还有一个小问题,如果需要输入(12分),请使用选项[points=12]而不是直接输入。

公元2024年9月19号下午,华夏某LaTeX交流群出现了因建模比赛将近而GMCMthesis模板在overleaf上编译出现字体LiSu字体缺失的问题,引起激烈的讨论,下面就此问题进行记录(下面的问题将集中在隶书字体)。

首先介绍本地环境中在powershell终端使用fc-list命令可以获取本机当前为所有用户安装的字体列表,如下图所示(如果终端的字符编码不是utf-8还可能需要通过借助chcp 65001命令切换终端编码样式或者修改终端的字体来保证中文正常显示,我的设备还是会中文乱码,因此我也很苦恼...)

image.png

由于个人比较喜欢折腾,这里也贴出常见的几种fc-list命令的附加命令(特别感谢Osbert Wang)感兴趣的朋友可以试试他们的使用效果。

# 以完整格式输出中文字体并在终端输出
fc-list :lang=zh-cn
# 以完整格式输出英文字体并保存在当前路径下的enfonts.txt文件中
fc-list :lang=en > enfonts.txt
# 只输出字族,达到使用\setmainfont的使用需求
fc-list :lang=zh-cn family
# 使用--format选项格式化输出fc-list的结果
fc-list :lang=zh --format="%{family[0]}\n" | sort
fc-list :lang=zh --format="%{family[0]},%{family[1]}\n"
# 使用功能更强的终端如powershell可以实现去重/排序等功能
fc-list :lang=zh --format="%{family[0]},%{family[1]}\n" | Sort-Object | Get-Unique | Out-File zhfont.txt -Encoding default

在这里还必须提到,对于已经安装的字体,TeX引擎会通过其字体族(font family)的名称来调用;而对于只提供字体文件(.otf,.ttf)的字体,TeX会优先搜索当前工作路径下的字体文件并进行调用,这样的好处是避免操作系统安装的字体过多过于复杂(具体的例子可见下图,特别感谢Eureka大神提供的开源仓库 All about TeX 走过路过可以点一个star)。

image.png

P.S. 我本人对字体的使用问题完全可以说是七窍通了六窍,在LaTeX(尤其是模板)的使用中字体的配置问题由于各种系统的差异以及版权问题往往是令人头疼的,此处仅提供在不同平台下编译效果的实际测试与经验汇总。

作为后文介绍的前置知识,我们还应该知道GMCMthesis实际上调用的文档类是ctex宏包提供的ctexart文档类,其文档中对不同系统的字体调用情况说明如下图:
image.png
image.png
image.png

-------前面都是一些为了内容完整性的(废话)------这是一条分割线-----

本文将从使用四种测试环境,测试的代码使用从GMCMthesis-github拉取的example.tex文件为准。

  • 本地编译环境(windows11+TeXLive2024)

    • 在没有安装过LiSu字体的情况(比如一台刚刚装过windows11系统的干干净净的电脑)下,LiSu这一字体是一点点小问题的(见下图,但是警告不是错误,可以忽略),但不影响使用xelatex编译example.tex顺利通过。
    • 如果系统安装过LiSu字体,也即使用fc-list :lang=zh | findstr "LiSu"可以检索到隶书字体C:/Windows/fonts/SIMLI.TTF: LiSu,隶书:style=Regular时,使用xelatex编译example.tex模板是完美编译的。

image.png

  • 本地编译环境(windows10+TeXlive2022)
    使用xelatex编译example.tex文件的效果同windows11+TeXLive2024
  • 使用OverLeaf(其相当于在linux发行版ubuntu系统上运行的一个TeXLive环境,因此字体配置根据ctex文档有一定的差异,主要体现在默认使用Fandol字库)

example.tex文档首先说明如果需要在OverLeaf上编译,则需要选择相应的字库选项如下:

% \documentclass[bwprint]{gmcmthesis} 
\documentclass[bwprint,fontset=fandol]{gmcmthesis} % OverLeaf 等在线平台需要用这一行。

image.png

在如上图上传项目文档后,使用xelatex编译example.tex文件

image.png

首先需要指出的是,警告并不影响最终编译结果,在宏包heavenlyclouds的作用下,由于ubuntu系统不自带隶书,因此其策略自动选择用楷书代替并raise这个warning。
与此同时,比赛官方仅仅提供了一个word模板,并未有严格的格式规范,所以实际上并不一定非要使用隶书,建模比赛更重要的还是内容,分辨字体是否正确不是一个评审应该重点关注的事情,和本科生国赛一样,其实并没有格式要求,只需要排版整洁美观严谨就是一个好的文档样式。

既然鱼香肉丝老师发问了,这里记录下群里讨论出的解决方法:

感谢群友@u19850 可以在example.tex同层文件目录下上传LiSu.ttf文件,并且将.cls中的代码修改如下:

image.png

% 将gmcmthesis.cls的 316行左右 处修改如下,处理字体兼容
\ifmcm@fandol
      % \setCJKfamilyfont{zhli}{LiSu} % 需要隶书字体 最好更换其他相似字体
      \setCJKfamilyfont{zhli}{LiSu.ttf}
      \newcommand*\lishu{\CJKfamily{zhli}}
      % \providecommand{\lishu}{\kaishu}
      % \PackageWarning{heavenlyclouds}{用楷书代替隶书}
\fi

如此做,便可通过当前目录下字体.ttf文件的直接调用解决找不到字体的问题。

由于一些版权的原因,此处无法提供LiSu.ttf文件,请自行下载并上传到工作路径下。

  • 手贱写了四种,于是还得补一下新晋平台TeXpage

实际上TeXpage的编译表现和Overleaf完全相同

image.png

在上传LiSu.ttf并进行字体兼容后,在TeXpage使用xelatexTeXLive2024下也可正常编译.

image.png

这个问题问得非常好,也是LaTeX交流群中最常见的(入门必读)的一个问题!
感谢肉丝老师的馈赠~

  • LaTeX 最快的入门手册是lshort-zh-cn文档(强烈建议花至少111分钟熟悉该文档并亲自尝试(just get your hands dirty!))4
  • 如果对安装LaTeX有疑问的,请阅读OsbertWang精心编写(他真的我哭死,甚至在2024年9月又更新了一版)的install-latex-guide-zh-cn文档,所有的TeXLive安装问题都能在这里找到答案。
  • 如何正确的提问? 最重要的一点是请提供最小工作示例(MWE)(除非某些概念性的问题或及极其特殊的情况没有给MWE的必要或者无法给出MWE)
  • MWE的定义如下(务必理解下图加粗部分内容):

image.png

  • 在本论坛提问时,请务必先查看markdown代码块以及围栏代码块的语法,请务必使用一对“反引号”或者一对“三个反引号”将你的代码包围以便渲染出高亮样式。

反引号的输入可见下图(在英文状态下输入):
image.png

Happy TeXing!

OsbertWang指出,并不是所有字体的宏包均包含了对应的字体,有部分仅仅是提供了调用字体的接口。

因此 https://ask.latexstudio.net/ask/question/3298.html 中的做法是合理的。

另一方面,mathdesign宏包的文档还提到容易发生宏包冲突
image.png

做一个简单的总结,2024年9月测试,windows系统下如果要调用garamond数学字体,大致有以下三种可行的方案

  • 本地为所有用户安装garamond字体,并使用unicode-math提供的\setmainfont调用
\usepackage{unicode-math}
\setmathfont{Garamond-Math}
  • 调用newtxmath宏包提供的garamond选项
\usepackage[ebgaramond]{newtxmath}
  • 使用Garamond-Math宏包文档提供的方法
\usepackage[math-style=ISO, bold-style=ISO]{unicode-math}
\setmainfont{EB Garamond}%You should have installed the font
\setmathfont{Garamond-Math.otf}[StylisticSet={7,9}]

Welcome to LaTeX Studio!

上面的代码只需要使用xelatex引擎编译即可,同时可以尝试使用\documentclass{ctexart}替代article,而是直接调用ctex宏包提供的文档类,这样就不用显式写出对xeCJK的调用了。

我不是很懂MikTeX和TeXWorks,但是根据我配置vscode中compile recipes的理解,你的如图配置等价于:

image.png

每次使用名为xelatex+shell-escape的编译选项,将自动在命令行使用

texify.exe --pdf --engine=xetex --syntex=1 --clean --tex-option=--shell-escape <your filename>

按照我对命令行粗浅的理解,应该是 <program.exe> <options(通常以--或-开头)> <filename>的一般格式,我感觉你上面的--tex-option=--shell-escape不是很对... 或许可以试试--shell-escape,同时我也不太确定miktex是不是可以直接选用texify.exe命令...

在TeXLive2024下要使用xelatex -shell-escape可以如下配置,也许你可以参考一下试试

            "name": "xelatex-shell-escape",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-shell-escape",
                "%DOCFILE%"
            ]

上面的name,command,args理论上对应了你图中的选项...当然你也应该先探索在终端纯用命令行xelatex -shell-escape filename.tex能否编译exam-zh,再去尝试配置TeXWorks中的编译选项.

以上,希望对你有帮助。

如何说明不起作用?也许只是你没看出来区别

不指定任何字体:
image.png

你的MWE:
image.png

你的MWE不规范.....需要保证复制即可直接编译复现你的问题

使用nicematrix宏包可以优雅地解决

\documentclass{article}
\usepackage{amsmath}
\usepackage{nicematrix}
\begin{document}
\[
    balabala=
    \begin{pNiceMatrix}[first-row,last-col]
    n_1&n_2 &\cdots &n_s & \\
    A_{11} & A_{12} & \cdots & A_{1s} &m_1\\
    A_{21} & A_{22} & \cdots & A_{2s} &m_2\\
    \vdots & \vdots & \ddots & \vdots &\vdots\\
    A_{r1} & A_{r2} & \cdots & A_{rs} &m_r\\
    \end{pNiceMatrix}
\]
\end{document}

image.png

你对需求的描述不够清楚,最好结合图片说明你的具体需求

已经对原回答做了修改,实现效果和修改方式可见下面的两张图。

image.png

image.png

顺便给一个mwemmwe.zip

PS.你的MWE里面的正文部分还是存在一些和本问题无关的内容,下次请尽量删除以减少回答者的代码阅读量

PPS.不要再看CSDN的内容了,你上面的链接只能在他的那种情况下解决你的问题,当你位于你获得的这个模板的处理方式下,往往不奏效。也希望不要以碰运气搜一搜改对就万岁的思路来学习latex,多耐心看看文档。

image.png

如果不在文档类中的话,也许可以尝试用ifthen宏包提供的多条件判断功能

%\usepackage{ifthen}
\def\A{123}
\def\B{1234}
\def\C{1234}
\def\D{12}

\ifthenelse{\(\equal{5}{6}\) \or \(\equal{123}{\A} \and \equal{\D}{1234}\) }{Yes!}{No!}

image.png

你好,请提供最小(Minimal)工作示例。
image.png

上面的代码明显有较多无关代码,且包含.bib文件,并无法保证别人复制后直接可运行
同时,请使用markdown的围栏代码块语法;并善用预览功能,你的代码缺少转义符号\',另建议对于不方便透露的文字,请使用lipsumzhlipsum`宏包填充假文。

对STIX数学字体不太了解,但这个很有特色的小写z应该是来源于newtx的小写字母.我进行了如下测试

\usepackage{newtx}
$$
f(z) = \log z + \exp{(z^2-3z+2)}
$$

image.png

\usepackage{unicode-math}
%\setmathfont{XITS Math}%选其一
\setmathfont{STIX Math}
$$
f(z) = \log z + \exp{(z^2-3z+2)}
$$

image.png

最后另附上常用数学字体 from lshort
image.png

发布
问题