Sagittarius Rover
Sagittarius Rover
这家伙很懒,什么也没写!

注册于 3年前

回答
442
文章
0
关注者
15

just curious: 这个链接究竟问了几个问题(?)


texhigh 环境中,怎样不打印「显式空格」?我希望能使用「不可见空格」
%\THSetCharReplacement{\ }{\ }%%\textvisiblespace 手册写道:texhigh已设置。这是什么意思?
texhigh使用打字机族时,是否支持两端对齐?

问题一:

对于你的mwe,直接使用latexmk -pdf --shell-escape编译即可得到不可见空格

\documentclass{article} 
\usepackage{texhigh} 
\begin{document}
\begin{texhigh}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\end{texhigh}
\end{document}

image.png

而若根据文档3.3节中的内容加上char-replacements={\ =\textvisiblespace},可以局部设置texhigh环境显示visable space

\documentclass{article} 
\usepackage{texhigh} 
\begin{document}
\begin{texhigh}[char-replacements={\ =\textvisiblespace}]
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\end{texhigh}
\end{document}

清除所有辅助文件后编译可以得到:

image.png


问题二:

你似乎没有指出具体是在文档的哪个部分(?)例如(?):

image.png


问题三:

也许有关:https://ask.latexstudio.net/ask/question/17271.html

P.S.你上面的提问内容意味着让「每一位潜在的回答者」都要花20积分下载,这会大大打击回答的热情,你显然应该上传文件。(帮你做了...)

注意,由于latexmk会同时进行多个操作,并不利于定位问题debug和简化问题,同时压缩包中包含的.latexmkrc命令默认的配置为pdflatex,这与模板不契合,且在这里恶行累累,做测试的时候务必不要使用这个.latexmkrc配置.(到底是哪里在流传这份.latemkrc配置...)

请说明你的两种情况下的编译命令,如有报错信息,也应该提供。由于链接中还包含了latexmkrc配置,使用latexmkxelatex编译在这个例子里是大不相同的.

  • 使用TL21编译成功
  • 使用新版本(具体是哪个版本),编译命令是?

Edited:

texpage平台使用xelatex测试的编译结果为:

TL21正常
TL22不正常
TL23不正常
TL24不正常
TL25不正常(不interrupt编译过程,但是编译效果也是不正确的)

Re-Edited:

Description

首先一个主要的观点是,conbine模块和combinet宏包已经和现在的latex2e内核格格不入,cfr在这里提到:

don't use combine with current latex.

combineCTAN主页上,这个包已经有十几年没有根据新的内核做适配和更新了...

This Package seems not to be maintaned anymore. It is not working with current distributions (since at least November 2020). See for instance the following comments on github: https://tex.stackexchange.com/questions/591145/extra-endgroup-error-when-using-the-combine-document-class

累累罪状

1.本问题OP遇到的\contentsline参数问题:

直接使用TL22及以上编译会得到如下错误:

LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.4 \contentsline
                  {coltocauthor}{\numberline {}钱学森 \hskip 1em\relax 乌家培}{8}
Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.

可以看一下编译生成的main.toc文件:

% main.toc
\contentsline {coltoctitle}{\numberline {}组织管理的技术——系统工程}{1}
\contentsline {coltocauthor}{\numberline {}钱学森 \hskip 1em\relax 许国志 \hskip 1em\relax 王寿云}{1}
\contentsline {coltoctitle}{\numberline {}组织管理社会主义建设的技术——社会工程}{2}
\contentsline {coltocauthor}{\numberline {}钱学森 \hskip 1em\relax 乌家培}{2}
\contentsline {coltoctitle}{\numberline {}军事系统工程}{3}
\contentsline {coltocauthor}{\numberline {}钱学森 \hskip 1em\relax 王寿云 \hskip 1em\relax 柴本良}{3}

注意到这里的\contentsline只吞下3个参数:

  • {coltocauthor}
  • {\numberline {}钱学森 \hskip 1em\relax 乌家培}
  • {8}

而在source2e.pdf中提到,在2021-11以后,为了兼容hypperref\contentsline现在已经修改为四参数形式。这也正是在TL21之后不能正确编译的原因。

image.png

要想暂时patch这个问题也很简单,重新声明一个默认使用三参数(置第四个为空)的即可。

实现留做习题,读者自行实现不难🐶。

2.不能直接使用,需要对\begingroup做patch

这也正是上述模板中main.tex的Line20-22使用的patch:

\makeatletter
\let\document\c@ladocument\begingroup%
\makeatother

3.与fancyhdr的兼容性不好

参考链接:https://tex.stackexchange.com/a/348189/322482

\begin{papers}
\makeatletter\let\@makecol\latex@makecol\makeatother
\import{sub}
\end{papers}

4.与tikz/newtx/xcolor的兼容性同样不好

使用TL22及以上编译会得到:

! Undefined control sequence.
\set@color ...\@pdfcolorstack push{\current@color 
                                                  }\aftergroup \reset@color 
l.6 \end{document}

参考链接:https://tex.stackexchange.com/q/723346/322482


..

还有多少兼容性问题,需要多少patch呢?

一定非用这个combine不可吗?完全有很多方案实现类似的多个\maketitle的效果(^_^)建议不要再用这个模板,不要再用这个很久无人维护的文档类。

@u7867 我来补充点信息吧..

MWE中的问题

首先你的mwe.tex中:

% line 13

\begin{table}[htb]
    \caption{Title} \label{tab24022314}
    \begin{threeparttable}%[htb]
        \setlength{\tabcolsep}{1pt}
        \begin{tabular}{|c|c|}}%<-多了一个「}」
        \hline
        a & b  \\ 
        c & d  \\ 
        \hline
    \end{tabular}
    \begin{tablenotes}
        \item The conditions 
    \end{tablenotes}
\end{threeparttable}
\end{table}

作为用户应该做的

我猜测你是在这里下载到的模板,在提问时,对于可公开获取的内容,理应贴出来下载链接,这样更方便保证来源的官方性.

从上述的页面可以下载到:

作为用户,在使用之前务必熟读user-manual!!!同时熟悉模板给的示例问题,并结合手册逐段做理解...

我假定你也不想去读Osvert Wang说的源码sn-jnl.cls文件...

编译你的代码可以得到如下错误:

! Package threeparttable Error: Illegal nested threeparttable environments.

See the threeparttable package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.12            \setlength
                 {\tabcolsep}{1pt}
?

什么是nested threeparttable environments呢?

你这里是table内嵌threeparttable再内嵌tabular.

事实上此时tablethreeparttable都提供了浮动环境来让tabular浮动...

作为用户,应该始终熟读「User Manual」再使用!!!

其中的7.3节告诉了正确的使用方式,和啸行老师提到的一致:

image.png

再在上面的示例中找对应的用法,此时已经自动实现了三线表:

image.png

作为用户,如果仔细阅读过「User Manual」和「示例代码」,其实是不会做出手动调用threeparttable并作神必嵌套这件事的...

你没看 sn-jnl.cls 文件,1324行已经有 \usepackage{threeparttable} 了,从1332行开始又重新定义了 table 环境,重定义里用了 threeparttable

找到那一段重定义的源码:

% sn-jnl.cls Line 1323~1350
\usepackage[figuresright]{rotating}%
\usepackage{threeparttable}

\let\tableorg\table%
\let\endtableorg\endtable%

\let\sidewaystableorg\sidewaystable%
\let\endsidewaystableorg\endsidewaystable%

\renewenvironment{table}[1][]%
{\begin{tableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{tableorg}}

\renewenvironment{sidewaystable}[1][]%
{\begin{sidewaystableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{sidewaystableorg}}

所以"什么是nested threeparttable environments呢?"

因为此时的table内部已经是一个threeparttable,所以你在table内部用threeparttable就是在嵌套threeparttable环境...

我也来贡献一个答案,如果我来画这个图的「精确形式」的话,我会先搜答案:

image.png

答案给了我们一个新的条件:「AB/AD=7/4」

至此我们其实已经可以唯一确定这个图形了

  • 绘制AB=7,作直角三角形ABD,其中AD=4
  • 根据勾股定理计算出BD=√4²+7²=√65
  • 由于BD/CD=3/4,因此CD=4√65/3
  • 更进一步可以得到AC=AD+DC=4+4√65/3
  • 最后计算BC的长度为√AB²+AC²

图形的唯一确定是不太难的,此时45°的条件已经和现有的比例条件是可以互推的。但是画图的难点在于,如何让线段BC保持水平,我下面的代码利用了三角函数的方法来确定A/B/C的精确坐标。

\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[scale=.5]
  \def\c{7}
  \def\b{\fpeval{4+4*sqrt(65)/3}}
  \def\a{\fpeval{sqrt(\c^2+\b^2)}}
  \def\myangle{\fpeval{atan(\b/\c)}}% radians
  \tkzDefPoint(0,0){B}
  \tkzDefPoint(\c*cos(\myangle),\c*sin(\myangle)){A}
  \tkzDefPoint(\a,0){C}
  \tkzDrawPolygon[thick](A,B,C)
  % 取点「D」,满足「AD」=「4/7AB」= 4
  \tkzDefPointWith[linear normed,K=4](A,C) \tkzGetPoint{D}
  % ref: https://ask.latexstudio.net/ask/question/17889.html
  \tkzDrawSegment[thick](B,D)
   % 取点「D」,满足「AD」=「DE」= 4
  \tkzDefPointWith[linear normed,K=4](D,B) \tkzGetPoint{E}
  \tkzDrawSegment[thick](E,C)
    \tkzMarkRightAngle[semithick,size=.6](B,A,C)
    \tkzMarkAngle[semithick,size=.6](C,E,D)
    \tkzLabelAngle[pos=1.25](C,E,D){$45^\circ$}
    \tkzLabelPoint[above](A){$A$}
    \tkzLabelPoint[left](B){$B$}
    \tkzLabelPoint[right](C){$C$}
    \tkzLabelPoint[above right=-2pt](D){$D$}
    \tkzLabelPoint[below](E){$E$}
\end{tikzpicture}
\end{document}

image.png

  • 给出三条边长度的表达式
  • 利用边AB与AC的长度求倾斜角∠ABC的三角函数值
  • 利用三角函数关系给出A、B、C三个点的坐标
  • 利用AD=4/7AB以及DE=AD的关系,取点,连接

从画图的角度来看,个人觉得预先做一些计算会更容易画一些...

另外这题是真难啊,得积累积累做题经验...

off-topic: 在typst中这不是很困难...

Hello, world. #box(baseline: 100%-.75em)[
    + aaaa
    + bbbb
    + cccc
    + dddd
    + eeeee Hello, world. #box(baseline: 100%-.75em)[
            + aaaa
            + bbbb
            + cccc ahahah hahhaha aaaaa #box(baseline: 100%-.75em)[
              + aaaa
              + bbbb
              + cccc
          ] 
  ] 
]

image.png

等@雾月 老师做介绍吧

贴个省流版,前几天已经更新了极其友好的中文文档,我个人觉得这个问题可能会得到RTFM的回答...

https://github.com/Sophanatprime/texhigh-rs/blob/main/README-zh_CN.md

https://github.com/Sophanatprime/texhigh/blob/main/texhigh-zh_CN.pdf

image.png

另一个方案是基于luadraw(需要自行安装并用lualatex编译)

\documentclass[12pt]{standalone}
\usepackage[svgnames]{xcolor}
\usepackage[3d]{luadraw}
\usepackage{fouriernc}
\begin{document}

\begin{luadraw}{name=project_line_3D}
    local g = graph3d:new{
        window3d={-1,3,-2,3,-2,2},
        window={-3,3,-3,2},
        viewdir={30,60},
        size={10,10},
        border=true
    }
    g:Linejoin("round")
    g:Linewidth(4)
    Hiddenlines = true
    Hiddenlinestyle = "dashed"
    local A,B,C = M(0,1,0), M(3,2,0), M(2.5,0,1)
    local D = dproj3d(C,{B,A-B}) -- 返回C在直线d:{B,A-B}的投影
    g:Ddots3d({A,B,C,D})
    g:Dscene3d(
        g:addAxes(Origin, {arrows=1,arrowscale=0.75,color="blue"})
    )
    g:Dpolyline3d({{A,B,C,A}, {C,D}})
    g:Dangle3d(C,D,A,0.2)
    g:Dlabel3d(
        "$A$",A,{pos="N"},
        "$B$",B,{pos="S"},
        "$C$",C,{pos="N"},
        "$D$",D,{pos="E"}
    )
    g:Show()
\end{luadraw}
\end{document} 

image.png

更建议从源头上解决问题。

在记笔记时发现有些SQL语言的关键字并未能被 minted 环境识别出来,被当成普通字符处理,输出为黑色。但强迫症让我想去手动修改未被上色的关键字以保证笔记效果。例如DATABASE关键字无法被SQL正确识别为高亮。

注意到minted是基于pygments的,因此所有支持的语言和关键字应该查看这里

我没有仔细搜索,但是

  • DATABASES 不是 SQL的关键字
  • DATABASESMySQL的关键字

所以可以考虑治本...

\documentclass[fontset=fandol]{ctexart}
\usepackage[margin=1cm]{geometry}
\usepackage[svgnames]{xcolor}
\usepackage{minted}
\begin{document}

\begin{minted}[
    bgcolor = gray!10,
    breaklines = true
]{MySQL}
    DATABASES Explorer
    -- 按产品类别和季度统计销售数据
    SELECT
    product_category,  -- 产品类别
    quarter,           -- 季度(1-4)
    total_sales,       -- 总销售额
    order_count,       -- 订单数量
    avg_order_value    -- 平均客单价(总销售额/订单数)
    FROM (
    -- 子查询:计算每个订单的销售额,并提取年份和季度
    SELECT
        product_category,
        -- 提取订单日期的年份和季度(兼容 MySQL、PostgreSQL、SQL Server)
        DATE_FORMAT(order_date, '%Y') AS year,
        QUARTER(order_date) AS quarter,
        order_id,
        SUM(unit_price * quantity) AS order_sales  -- 单订单销售额 = 单价×数量
    FROM
        sales
    WHERE
        order_date >= '2023-01-01'  -- 筛选2023年数据
        AND order_date < '2024-01-01'
        AND unit_price > 0  -- 排除异常数据(单价为0的订单)
    GROUP BY
        product_category, year, quarter, order_id  -- 按订单粒度聚合
    ) AS order_details
    -- 外层聚合:按类别和季度统计
    GROUP BY
    product_category, quarter
    -- 按类别升序、季度升序排序
    ORDER BY
    product_category ASC,
    quarter ASC;
\end{minted}

\end{document}

image.png

至于如何「自定义minted的关键字」,按照这里的说法,这似乎不是一个LaTeX的问题,而是一个Python层面的问题....

有空可以研究一下补上,挖坑😀

与TL的版本无关。

此事在此亦有记载。

comment宏包的文档中我们可以看到:

image.png

这要求在被comment的环境内不能有任何前方的空格和后方的内容。

image.png

上图中\begin{solution}前有8个空格...

注意LaTeX不是一门可以随意空行、空格的语言,每一个字符,甚至是注释符号%是否存在、是否用在正确的位置都可能影响结果。

下面的代码去掉前导空格之后即可以正确工作...

\documentclass{ctexart}
\usepackage{zhlipsum}

\newenvironment{solution}{\par
    \textbf{答案}\quad
}{\par}

\usepackage{comment}
\excludecomment{solution}  % 添加这两句话将注释掉所有的`solution`环境

\begin{document}
    
    \begin{enumerate}
        \item 第一题
\begin{solution}
    \zhlipsum[1]
\end{solution}
        \item 第二题
\begin{solution}
    \zhlipsum[2]
\end{solution}
    \end{enumerate}
    
\end{document}

image.png

当有多个问题时,请分点描述。

如何选择合适的 LaTeX 编辑器?

Install-Guide-zh-cn的5.6节

image.png

TeXStudio样子不够美观,对我来说是在用,但估计很多的技巧我都不会;请问下大佬们有没有这方面使用的资料可以引导我一下。

不要为了学技巧而学技巧。你可以具体提问是否有一些很麻烦的操作,并询问在某个编辑器中是否有高效的办法。非要技巧的话...当然是官方文档,介绍了TXS的所有功能。

BTW,关于配置也只需要下面这段在Install-Guide的附录B.4的配置即可.

image.png
image.png

作为新手,直接copy即可。对于这种详细配置的方法,没有、也不应该期待有详细的中文介绍如何配置的文章,所有的配置都在LaTeXWorkshop的wiki中,要想真正得其法,只能读文档。

我一直也想像知乎上面那些大佬们设置片段,但不得其法。

要想设置代码片段「a.k.a. "snippets"」,这是vscode作为编辑器提供的功能。可以参见这里的官方介绍。另外你也可以考虑借助大语言模型尝试给你正确的snippets配置到相关的例如latex.json文件中。同样的,也有一些网站专门帮助生成snippets片段。

image.png

另外,在texstudio中,Ctrl+B,会把文字加上加粗的标记,在 VS Code 有这样的操作方法么?

所有快捷键和效果可见这个链接里的cheatsheet

但很遗憾,LaTeXWorkShop没有重载这个快捷键,但你可以通过修改keybindings.json自行配置。

image.png

BTW, LaTeXworkshop插件提供了用来加粗的方式:

image.png

需要先按「Ctrl+I」再按「Ctrl+B」....当然你都可以自己改,但要注意和现有的快捷键有冲突要处理....

另外 VS Code 编辑 TeX,有没有学习的资料

...ummm

可以在这里写一篇...


Table of Contents

  • 如何在vscode中用命令行编译
  • 如何用vscode编辑代码
  • 如何利用「LaTeXWorkshop」的功能快速编译

在vscode中用命令行编译:

首先要认识到的是,无论使用什么工具,本质上都是用命令行编译。

  • 右键「在终端中打开」后输入pdflatex也好
  • 在vscode中用终端编译也好
  • 在texstudio中点击绿色三角也好

本质都是自动或手动在命令行输入对应的编译命令

  • 首先新建一个.tex文件,输入比如说"你好世界"
  • 按快捷键「Ctrl+(反引号)」呼出终端,选择"终端"
  • 输入编译命令例如「latexmk -pdfxe mwe.tex」回车即可,同时终端会显示编译的日志

image.png

在vscode中编辑...其实也没啥可说的

就是给你一个页面可以往里面输入代码。

需要注意的的是,只有当你新建了.tex文件,左侧才会出现对应的"TEX"图标。

image.png

利用LW的功能(绿色三角)编译

image.png

  • 左侧的编译方式列表为你在settings.json里配置的recipe键的值,应该根据代码选择合适的编译方式
  • 左侧还有快捷输入某些符号的功能,点击即可插入
  • 右上角的「放大镜图标」可以预览PDF(且不会像WPS一样占用,这点好评)
  • 右上角的「绿色三角」默认情况下意味着你的第一个recipe的编译方法

点击绿色三角,编译就会按照对应的方式(注意,这跟前面在命令行输入代码实际上是完全相同的)自动进行,可在左下角查看状态,在下方的「Problems」面板查看报错信息。

image.png

0.精通lshort-zh-cn,没有基础和一定的debug能力很难做开发

1.找几个同类的「论文模板」作为参照

2.分析其大致需要哪些模块的功能,使用了哪些宏包

3.精读这些宏包的文档并进一步看懂这些模板的源码

4.根据贵校的论文格式规范做修改,完善模板

notes:不用过多涉及plain-tex,是否需要latex3要看个人选择.

It seemly consists two questions:

  • define a custom counter for Exercises that is tied to the current chapter
  • create a separate List of Exercises (similar to a Table of Contents)

Noted that, one post should just focused on just one core point. BTW, you'd better provide an MWE, which make it convenient for users on the site to test and start with.


For the first one, you may have a look at chngcntr package(which has been in the 2e-kernel)

For the second one, maybe you can give a glance on tocbasic package in koma-script bundle.


补充:

此处用tocbasic似乎不是非常合适,因为这需要exercise成为浮动体。

最好是模仿\section里的\@starttoc功能做类似的实现。

先给一个workaround:

\documentclass{beamer}
\usepackage{lipsum}
\usepackage{setspace}
\newenvironment{myframe}[2][1.5]
   {%
        \begin{frame}[#2]
        \setstretch{#1}
   }%
   {%
        \end{frame}
   }%
\begin{document}
    \begin{frame}
        \lipsum[1][1-5]
    \end{frame}

    \begin{myframe}[3]{t}
        \lipsum[1][1-5]
    \end{myframe}

   \begin{myframe}[2]{c}
       \lipsum[1][1-5]
   \end{myframe}

    \begin{frame}
           \lipsum[1][1-5]
    \end{frame}
\end{document}

image.png


同时它要接受一些参数,并将其传递给frame环境,考虑到frame环境是一个脆弱的环境,我的尝试总是失败。

当提到「总是失败」时,最好贴一下报错信息,这样更容易让这个问题被别人搜索到,也更完整。下面看我的几个探索。

探索一:

你的问题和参数有关吗?并不是。下面的例子中,frame没问题;但myframe有问题。

\documentclass{beamer}
\usepackage{lipsum}
\usepackage{setspace}
\newenvironment{myframe}
   {%
        \begin{frame}
        \begin{spacing}{2}
   }%
   {%
        \end{spacing}
        \end{frame}
   }%
\begin{document}
    \begin{frame}
        \begin{spacing}{2}
        \lipsum[1][1-5]
        \end{spacing}
    \end{frame}

    \begin{myframe}
        \lipsum[1][1-5]
    \end{myframe}
\end{document}

报错信息:

! File ended while scanning use of \beamer@collect@@body.
<inserted text>
                \par
<*> mwe

?

探索二:

这个问题和beamer提供的frame环境有关吗?换成minipage看看(?)

\documentclass{beamer}
\usepackage{lipsum}
\usepackage{setspace}
\newenvironment{myframe}
   {%
        \begin{minipage}{\textwidth}
        \begin{spacing}{2}
   }%
   {%
        \end{spacing}
        \end{minipage}
   }%
\begin{document}
    \begin{minipage}{\textwidth}
        \begin{spacing}{2}
        \lipsum[1][1-5]
        \end{spacing}
    \end{minipage}

    \begin{myframe}
        \lipsum[1][1-5]
    \end{myframe}
\end{document}

image.png

并没有报错,所以这是"非常独特的",当且仅当同时使用frame内嵌spacing才会触发错误。

最后从这个链接来看,用\setstretch可以规避这一问题,所以有了workaround...

最后的最后,不要忘记问题并没有真正解决...


翻到一个神奇的结论:

由于beamer实在是太坏了。egreg说:

Moral of the story
Don't use setspace with beamer😀.

感谢@u101077 老师提供的方案,调整\multirow的行数即可。

\documentclass[fontset=fandol]{ctexart}
\usepackage{array}
\usepackage{multirow}
\usepackage{amsmath,amsfonts}
\usepackage{makecell}

\begin{document}
\begin{tabular}{|c|c|c|}
\hline
\textbf{条件} & \textbf{方程} & \textbf{说明} \\ \hline
\multirow{2}{*}{圆心在原点} & $x^2+y^2=r^2$ & $a=b=0$ \\ \cline{2-3}
 & $x^2+y^2+F=0$ & $D=E=0$ \\ \hline
\multirow{2}{*}{圆过原点} & $(x-a)^2+(y-b)^2=a^2+b^2$ & $a^2+b^2=r^2$ \\ \cline{2-3}
 & $x^2+y^2+Dx+Ey=0$ & $F=0$ \\ \hline
\multirow{2}{*}{圆心在$x$轴上} & $(x-a)^2+y^2=r^2$ & $b=0$ \\ \cline{2-3}
 & $x^2+y^2+Dx+F=0$ & $E=0$ \\ \hline
\multirow{2}{*}{圆心在$y$轴上} & $x^2+(y-b)^2=r^2$ & $a=0$ \\ \cline{2-3}
 & $x^2+y^2+Ey+F=0$ & $D=0$ \\ \hline
\multirow{3}{*}{圆与$x$轴相切} & $(x-a)^2+(y-b)^2=b^2$ & $|b|=r$ \\ \cline{2-3}
 & \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(E\neq 0,D^2-4F=0)$} & $E\neq 0,D^2-4F=0$ \\ \hline
\multirow{3}{*}{圆与$y$轴相切} & $(x-a)^2+(y-b)^2=a^2$ & $|a|=r$ \\ \cline{2-3}
 & \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(D\neq 0,E^2-4F=0)$} & $D\neq 0,E^2-4F=0$ \\ \hline
 \multirow{2}{*}{圆心在$x$轴上且圆过原点} & $(x-a)^2+y^2=a^2$ & $|a|=r,b=0$ \\ \cline{2-3}
 & $x^2+y^2+Dx=0$ & $E=F=0,D\neq 0$ \\ \hline
\multirow{2}{*}{圆心在$y$轴上且圆过原点} & $x^2+(y-b)^2=b^2$ & $a=0,|b|=r$ \\ \cline{2-3}
 & $x^2+y^2+Ey=0$ & $D=F=0,E\neq 0$ \\ \hline
\multirow{3}{*}{圆与$x,y$轴都相切} & \makecell{$(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq 0)$} & $|a|=|b|=r$ \\ \cline{2-3}
 & \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=4F$ \\ \hline
\end{tabular}

\end{document}

image.png

不过我不确定若右侧内容中存在\dfrac,或者插入图片等「高度不是行数的整数倍」的情况是否都具有良好的可拓展性...是不是总是能找到这个合适的\multirow{<nrow>}...

\documentclass[fontset=fandol]{ctexart}
\usepackage{array}
\usepackage{multirow}
\usepackage{amsmath,amsfonts}
\usepackage{makecell}
\usepackage{graphicx}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
\textbf{条件} & \textbf{方程} & \textbf{说明} \\ \hline
\multirow{2}{*}{圆心在原点} & $x^2+y^2=r^2$ & $a=b=0$ \\ \cline{2-3}
 & $x^2+y^2+F=0$ & $D=E=0$ \\ \hline
\multirow{3}{*}{圆与$x,y$轴都相切} & \makecell{$(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq 0)$} & $|a|=|b|=r$ \\ \cline{2-3}
 & \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=4F$ \\ \hline
\multirow{3}{*}{圆与$x,y$轴都相切} & \makecell{$\dfrac{1}{2}(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq \dfrac{1}{2})$} & $|a|=|b|=r$ \\ \cline{2-3}
 & \makecell{$x^2+y^2+\dfrac{4}{5}Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=F$ \\ \hline
\multirow{7}{*}{圆与$x,y$轴都相切} & \makecell{$\dfrac{1}{2}(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq \dfrac{1}{2})$} & $|a|=|b|=r$ \\ \cline{2-3}
 & \makecell{$x^2+y^2+\dfrac{4}{5}Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} &\includegraphics[width=4cm]{example-image}\\\hline
\end{tabular}
\end{document}

image.png

直观上一种可行的办法也许是把多余的行一分为二...

image.png

但这样的坏处也是显然的:

  • 无法吃到cell{even}{1} = {r=2}{m}这样的糖的福利
  • 其他位置要多写好几个cell合并...

为了吃上mode=math的红利,而放弃了其他代码的简洁性,这也是我不太能接受的...

发布
问题