拿了橘子跑啊
拿了橘子跑啊
这家伙很懒,什么也没写!

注册于 4年前

回答
87
文章
0
关注者
3

\label 要放在有效的可以打标签的对象后,你自己那个 {\bf Lemma} 并不是有效的可打标签的对象,这里之前最近的有效对象就是\section{},所有当然就是用的节序号。用amsthm 定义的定理类环境就可以了。

@的命令是内部命令,需要在 \makeatletter\makeatother之间使用,即临时改变 @ 的类别码。但是即使这样,你直接用 \@title 也是不行的,因为在 \maketitle 的定义里,最后将 \@title\@author 甚至是 \maketitle 本身都清空了(你可以试试随便在正文中再 \maketitle 一下看看有没有用处)。所以要在 \maketitle 之前把他们的定义给到其他的cs,就像上面的答案里 \let\runtitle\@title

另一种治标的解决方案,用 minipage 包起来。

\documentclass{ctexart}
\usepackage{tabularray,graphicx}
\begin{document}
    \begin{center}
        \begin{tblr}{%
            hlines,
            vlines,
            % colspec={*3cQ[cmd={\raggedright},m]},
            cells={m,c}
            }
            标题 & 情况一 & 情况二 & 情况三\\
            {这是\\图像} &\begin{minipage}{0.13\paperwidth}\includegraphics[width=0.13\paperwidth]{example-image-a}\end{minipage}&\begin{minipage}{0.13\paperwidth}\includegraphics[width=0.13\paperwidth]{example-image-b}\end{minipage}&\begin{minipage}{0.13\paperwidth}\includegraphics[width=0.13\paperwidth]{example-image-c}\end{minipage}\\
            测试 & 测试 & 测试 &测试\\
        \end{tblr}
    \end{center}
\end{document}

image.png

这是个什么需求呢?为什么编译完不想看新的结果非要看原来的结果?那你把原来的结果复制一个副本好了啊。

tblr 的环境还是很复杂的,不建议这么嵌套,如果非要嵌套用,不如先做个盒子\tabbox,然后\usebox{\tabbox}

\documentclass[a4paper,12pt]{article}
\usepackage{ctex}
\usepackage{tabularray}
\newsavebox\tabbox
\sbox\tabbox{
\begin{tblr}[T]{|c|c|}
  \hline
  1 & 2 \\
  \hline
  3 & 4 \\
  \hline
\end{tblr}
}
\begin{document}
    \begin{tblr}{
        colspec={|X[l,m]|X[l,m]|X[l,m]|X[l,m]||X[l,m]|}, 
        rowspec={X[c,m,25.5pt]X[c,m,200pt]},
    }
         \hline 
         \SetCell[c=5]{l}{ 检测细胞: \quad  }&&&& \\ 
         \hline
         \SetCell[c=2]{l,h}{ 检测细胞: \quad  }&&\SetCell[c=3]{l,h}{\usebox{\tabbox}}&& \\
         \hline 
     \end{tblr}
 \end{document}

效果传不上了,你编译一下试试吧。


btw:你究竟是想表达什么,为什么要表格套表格呢?

  1. 手动指定各列宽度;
  2. 用类似 tabularx 的 X 列模式,但这需要用到 ltxtable 包;
  3. 改用 tabularray 包。

三种方法任选其一。

只要思想不滑坡,办法总比问题多。

\documentclass{article}
\usepackage{tabularray}
\begin{document}
  \begin{tblr}{
    colspec={cr@{}l},hlines,vlines,hline{2,3}=0pt,vline{3}=0pt
  }
  \SetCell[r=3]{m,c}  
  a &                     & Bisharp      \\
    &                     & 1223@qq.com  \\
    & hello:\ \mbox{}     & 136110110110 \\
  c & \SetCell[c=2]{m,c}d &              \\
  \end{tblr}
\end{document}

image.png

runin 本来就是接在标题后面直接排出来的啊。
而且我看到了你用 4 号宋体字,应该是用 ctex 包吧,那么文档类选项用 sub3sectionsub4section 就能让这两种样式的段落都改排在不同段了。当然,你对 paragraph/runinsubparagraph/runin 分别设置成 false 也可以实现,没必要用 titlesec 去改吧。

设置详细说明请查看 ctex 包的文档,第 7.3 节

texdoc ctex

直立体的 pi 可以用 upgreek 包实现,可能你还会觉得那个直立体也不是那么直立

\documentcalss{article}
\usepackage{upgreek}
\begin{document}
\[ \uppi = 3.1415926535897932384626\dots \]
\end{document}

pdfpages 的手册没有好好读啊,\includepdf 的选项里有 pagecommand={xxx} 这一项,默认是:pagecommand={\thispagestyle{empty}} 所以你知道怎么办了吧?

\includepdf[pagecommand={\thispagestyle{fancy}}]{xxx.pdf}

不就行了?

picins.sty 可以去 CTAN 上下一个,放在编译文件所在目录就可以。不过这种古老的模板估计是要用 CTEX 套装。用 TeXLive 的话,不好说,说不定有很多过时的命令用不了。

texdoc xeCJK
可以看一下 xeCJK 的 [Mapping] 选项。你可以自己做一个映射文件。
要不看看这里

可以换一个思路,用 csvsimple 结合 tabularray 来完成这个任务。本来你这种长表格就不会自己手动敲入内容,更多是从文件读取,不妨在 csv 文件里加一列指定相应颜色。代码示例如下:

\documentclass{ctexart}
\begin{filecontents*}{temp.csv}
cellcolor,city,country,property
azure9,华盛顿,美国,首都
azure9,洛杉矶,美国,大城市
white,东京,日本,首都
azure9,莫斯科,俄罗斯,首都
\end{filecontents*}
\usepackage{tabularray}
\usepackage{csvsimple-l3}
\usepackage{xcolor}
\begin{document}
\begin{table}
  \caption{测试表}\label{tab:temp}
  \csvreader[
    head to column names,
    tabularray={
      colspec = {X[1,l,h]  X[1,l,h]  X[3,l,h]},
      hline{1,Z}=1.2pt,
      hline{2}=0.8pt,
      cell{2}{2}={r=2}{m,l}
    },
    table head={\textbf{城市} & \textbf{国家} & \textbf{性质}\\}
  ]{temp.csv}{}{
    \SetRow{\cellcolor} 
    \city & \country & \property
  }
\end{table}
\end{document}

效果:
dbbc2314684e14c9926ea0b1bd581ef7.png

如果颜色那一列你想操作得简单一点,那么就用个简单字符,然后用 csvsimple 做判断,具体要看csvsimple 的手册。

我细看了你的例子,就这个例子而言,还需要用些权宜之计,主要问题在于:

  1. csvsimple 没有给 longtblr[<option>] 参数的接口,表格标题要自己处理。
  2. 单元格中含 , 字符,标准的 csv 是将单元格字符串用 "" 包裹,但 csvsimple 不支持,可能会导致列错误,因此要用其他不包含的字符作为分隔符,比如 |,但这样的 csv 在 Microsoft Excel 中修改处理就比较麻烦了。
  3. tipa 的音标字符通过 csvsimple 处理会出错,这里用了\newsavebox \sbox\usebox 处理(没去深究,权宜之计)。

这一段的代码如下:

\documentclass{ctexart}
\usepackage{tabularray}
\usepackage{csvsimple-l3}
\usepackage{xcolor}
\usepackage{tipa}
%%% 因为你这里用到了 comma 作为标点符号,如果是严格的 csv 将用 "" 包裹含 comma 的字符串
%%% 但 csvsimple 并不支持这样的用法,所以这里文件用 | 作为分隔符 
%%% 不过这样 Microsoft Excel 就不支持了。这些细节上的困难要自己去克服。 
\begin{filecontents*}{PfN.csv}
ccolor|Meaning|Prefixes|Example
azure9|{a half \\ $\frac{1}{2}$} |semi- |{semilunar valve 半月瓣\\  (lun/o: moon; -ar: pertaining to)}
azure9|                          |hemi- |{hemisphere \\ hemiplegia 半瘫\\  (-plegia/\usebox{\plegia}/: paralysis)}
white |{one,single \\ 1}         |mono- |{monocyte 单核细胞}
white |                          |uni-  |{unicellular 单细胞的}
azure9|{two \\ 2}                |bi-   |{bicuspid 二尖瓣的 \\  (cusp/i: point)}
azure9|                          |di-   |{dioxide 二氧化物 \\ diplegia 双侧瘫痪}
white |double                    |dipl/o|{diploid n.【生】二倍体;(结晶)偏方24面体 adj.二倍体的(含有两套染色体)}
azure9|{three \\ 3}              |tri-  |{triplet \\ triceps 三头肌 \\  (-ceps: head)}
white |{four \\ 4}               |quadr-|quadrant
white |                          |tetra-|tetracycline/\usebox{\tetracycline}/ 四环素
azure9|many                      |multi-|{multipara /\usebox{\multipara}/ 经产妇 \\  (-para: to bring forth to, bear)}
azure9|                          |poly- |polycystic kidney 多囊肾
\end{filecontents*}
%%% 有几个 tipa 字符好像没法通过 csvsimple 中处理,这里用了权宜之计
\newsavebox\plegia
\sbox\plegia{\textipa{"pli:\textdyoghlig I@}}
\newsavebox\multipara
\sbox\multipara{\textipa{m2l"tIp@r@}}
\newsavebox\tetracycline
\sbox\tetracycline{\textipa{""tetr@"saIklm}}

\begin{document}
%%% 由于 csvsimple 没有给 longtblr 的 option 参数的接口
%%% 长表格的标题要用这种黑科技处理一下,用完好像要恢复成 normal
\DefTblrTemplate{caption-text}{empty}{Prefixes for Numbers}
\SetTblrTemplate{caption-text}{empty}
%%% 下面使用 csvsimple
\csvreader[
  head to column names,
  separator=pipe,
  long tabularray={
    colspec = {X[1,l,h]  X[1,l,h]  X[3,l,h]},
    rowhead = 1, rowfoot = 0,
    column{2}={font=\bfseries},
    hline{1,Z}=1.2pt,
    hline{2}=0.8pt,
    cell{2,4,6,10,12}{1,1,1,1,1}={r=2}{m,l}
  },
  table head={\textbf{Meaning} & \textbf{Prefixes} & \textbf{Example}\\}
]{PfN.csv}{}{
  \SetRow{\ccolor} 
  {\Meaning} & \Prefixes & {\Example}
}
%%% 恢复
\SetTblrTemplate{caption-text}{normal}
\end{document}

效果:
image.png

瞄了一眼这个所谓的模板,模板水平烂出天际了。用 table* 来排标题、摘要是非常奇葩的做法。如果非要用这个模板投稿,就像它那个bak 文件里写的一样,table* 的环境里控制好写满一页,然后用 \clearpage 新开一页再写正文吧。

实在无力吐槽了,这是在用LaTeX 以 Word 的蠢方法来 cosplay Word,Word 其实有很聪明的用法,但是这个模板的作者显然也不知道,他偏偏要挑最蠢的方法。

发布
问题