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

注册于 3年前

回答
325
文章
0
关注者
14

始终无法点中正确区域

点击位置不够「精确」,请睁大眼睛,准确点击「待点击对象」的「正中心」。

建议不要用「让代码就像文字一样,从当前页继续,但如果当前页空间不足时自动换页」这种表述,而是用「breakable listings」

太困了,只给例子,个人觉得tcb是比较好的实践了...

你要综合看tcolorboxlistings的文档

几个关键的option为:

  • listing remove caption=false
  • caption={Rust is Genshin Impact of coding}
  • captionpos=t(这是默认值,可调)
  • label={mycode}
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{hyperref}
\tcbuselibrary{listings}
\newtcbinputlisting{\mylisting}[2][]{%
    enhanced jigsaw,sharp corners,title={example~code},empty,left=1cm,breakable,%
    listing file={#2},listing only,listing remove caption=false,
    listing options={numbers=left,breaklines,basicstyle=\ttfamily,caption={Rust is Genshin Impact of coding},captionpos=t,label={mycode}},#1%
}
\begin{filecontents*}[overwrite]{temp.rs}
    use std::sync::{mpsc, Arc, Mutex};
    use std::thread;
    use std::time::Duration;
    
    struct ThreadPool {
        workers: Vec<Worker>,
        sender: mpsc::Sender<Message>,
    }
    
    impl ThreadPool {
        fn new(size: usize) -> Result<ThreadPool, PoolCreationError> {
            if size == 0 {
                return Err(PoolCreationError::InvalidSize);
            }
    
            let (sender, receiver) = mpsc::channel();
            let receiver = Arc::new(Mutex::new(receiver));
    
            let mut workers = Vec::with_capacity(size);
            for id in 0..size {
                workers.push(Worker::new(id, Arc::clone(&receiver)));
            }
    
            Ok(ThreadPool { workers, sender })
        }
    
        fn execute<F>(&self, f: F)
        where
            F: FnOnce() + Send + 'static,
        {
            let job = Box::new(f);
            self.sender.send(Message::NewJob(job)).unwrap();
        }
    }
    
    struct Worker {
        id: usize,
        thread: Option<thread::JoinHandle<()>>,
    }
    
    impl Worker {
        fn new(id: usize, receiver: Arc<Mutex<mpsc::Receiver<Message>>>) -> Worker {
            let thread = thread::spawn(move || loop {
                let message = receiver.lock().unwrap().recv().unwrap();
                match message {
                    Message::NewJob(job) => {
                        job();
                    }
                    Message::Terminate => break,
                }
            });
    
            Worker {
                id,
                thread: Some(thread),
            }
        }
    }
    
    enum Message {
        NewJob(Box<dyn FnOnce() + Send + 'static>),
        Terminate,
    }
    
    #[derive(Debug)]
    enum PoolCreationError {
        InvalidSize,
    }
    
    fn is_prime(n: u64) -> bool {
        if n <= 1 {
            return false;
        }
        for i in 2..=(n as f64).sqrt() as u64 {
            if n % i == 0 {
                return false;
            }
        }
        true
    }
    
    fn main() {
        
    }    
\end{filecontents*}
\begin{document}
I want to ref code \ref{mycode} here.
\lipsum[1]
\mylisting{temp.rs}
\lipsum[2]
\end{document}

image.png

算是经典问题吧。

这个代码高亮是LaTeX-Workshop提供的,所以类似的issues等是应该被关心的。


VSCode 目前存在问题, 对于识别类似left{ xxxxright.这样的代码有问题, 不认为是成对的, 导致总是无法正常显示成对的括号。我依稀记得很久以前是没有这个问题的, 不知道是从哪个版本开始变成这样了。一直没有很好的解决方法

先问是不是,再问怎么办。

如果只安装LaTeX workshop的话....

在我这里表现良好,可能你要检查一下版本,以及关注vscode-latex-basics相关的issues,如测试还有漏网之鱼,应该向这里报告。

image.png


注意到你还提到你安装了「HyperScopes、LaTeX Acronyms、LaTeX language support」

我都没装(我也不想装)...

  • 这些插件真的都是你 确实 需要的吗?到处乱装一大堆插件他们的互相作用可能是很复杂的...
  • 如果你探索出某个插件和「LaTeX workshop」 确实 有冲突,同样也最好是向上面的链接报告
  • 关于「LaTeX language support」...他已经很久不维护了...

image.png

无法复现。请提供更多的详细信息(例如OS,系统版本,宏包版本,确保关闭其他应用程序)。

使用WPS是治标不治本的行为。

TeXLive2025
windows11
一切正常

image.png

那个ishort感觉有些已经不够了 所以去哪里找比较好的学习资源呢

首先是L-short不是I-short.

你的这个问题是源自于"自定义表格的需求"

lshort里大致介绍了:

  • tabular环境的用法
  • tabularx控制列宽
  • \multicolumn以及\multirow控制合并单元格
  • 事实上上个问题关于booktabs也做了详细的入门讲解,关键是你没注意到红圈那里的细节...

image.png

那个ishort感觉有些已经不够了

我觉得不是不够,而是你目前阅读的不是太仔细,90%的入门问题都可以通过lshort-zh-cn解决

所以去哪里找比较好的学习资源呢 我现在很多都不知道 都不知道某一个用法对应的宏包 很迷茫

读完入门教程之后,个人觉得合适的路径是结合自己的需求,找针对性的文档去看,例如下面:

image.png

当你需要排版斜线表头,你总可以在互联网上获知diagbox这个包,使用texdoc diagbox你就可以看到详细用法,学习文档并用到你的代码中

当你需要跨页表格,你可能会搜索到longtable。同样的,使用texdoc longtable呼出文档

你可能还会有更细致的表格排版要求,你还会听到“tabularray优雅永不过时”这样的说法,这时你可以去了解下texdoc tabularray看看其效果....例如下面比较fancy的表格效果...

image.png

用好帮助文档这一"第一手资料",用好texdoc命令,多看文档是进一步学习LaTeX的必由之路吧...

image.png

image.png

我也是在lshort-zh-cn中找到你这个case里的合适方法的

\documentclass[12pt]{ctexart}
% \usepackage[showframe]{geometry}
\usepackage{tabularx}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
    \begin{table}[!htbp]
    \centering
    \begin{tabularx}{\textwidth}{*{3}{>{\centering\arraybackslash}X}}
        \toprule[1.5pt]
        符号 & 说明 & 单位\\
        \midrule[1pt]
        5 & 269.8 & 0.04089\\
        10 & 421.0 & 0.04089\\
        20 & 640.2  & 0.04089\\
        \bottomrule[1.5pt]
    \end{tabularx}
    \label{tab:001}
    \end{table}
\end{document}

image.png

提问很规范了,值得表扬。最好牢记markdown语法的围栏代码块。

编译查看报错信息:

! Undefined control sequence.
<inserted text> {Xcc} \toprule
                               [1.5pt] 符号 & 说明 & 单位\\ \midrule [...
l.15     \end{tabularx}

意思是,未定义的控制序列\toprule

为什么LaTeX不认识\toprule,因为需要booktabs宏包

还有,不需要显式写出粗细[1.5pt]等;编译中文需要ctex宏包

\documentclass[12pt]{ctexart}
\usepackage{tabularx} % 需导入宏包
\usepackage{amsmath}
\usepackage{booktabs}
\begin{document}
    \begin{table}[!htbp]
    \centering
    \caption{这是一个三线表}
    \begin{tabularx}{\textwidth}{Xcc}
        \toprule
        符号 & 说明 & 单位\\
        \midrule
        5 & 269.8 & 0.04089\\
        10 & 421.0 & 0.04089\\
        20 & 640.2  & 0.04089\\
        \bottomrule
    \end{tabularx}\label{tab:001}
    \end{table}
    我要索引 表\ref{tab:001} 啊哈啊.
\end{document}

image.png

不知道你是不是在找「section」如何设置pagebreak的惩罚(?)

我尝试找了下:

$ article.cls, line302
\newcommand\section{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                                   {\normalfont\Large\bfseries}}

以及:

% latex.ltx, line 15606:
\def\@startsection#1#2#3#4#5#6{%
  \if@noskipsec \leavevmode \fi
  \par
  \@tempskipa #4\relax
  \@afterindenttrue
  \ifdim \@tempskipa <\z@
    \@tempskipa -\@tempskipa \@afterindentfalse
  \fi
  \if@nobreak
    \everypar{}%
  \else
    \addpenalty\@secpenalty\addvspace\@tempskipa
  \fi
  \@ifstar
    {\@ssect{#3}{#4}{#5}{#6}}%
    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}

其中

\if@nobreak
    \everypar{}%
\else
    \addpenalty\@secpenalty\addvspace\@tempskipa
\fi

似乎 设置了\section后的惩罚。可惜,我不懂TeX....

请正确使用markdown语法。

请仔细阅读文档,检查自己的编译命令。

image.png

image.png

可能有关:https://github.com/CTeX-org/ctex-kit/issues/434#issuecomment-493402258

注:「source-han」和「noto-serif-CJK-SC(实际上就是fontset=ubuntu调用的)」均为「思源字体」,只是分发的公司不同而已。


那么这些汉字支持是怎么实现的?

感觉问的有点泛了...我不懂字体....

也许有关: https://liam.page/2016/12/11/LaTeX-traditional-font-scheme/

是不是依靠...\texlive\2024\texmf-dist\tex\generic\ctex\zhmap下的ctex-zhmap-founder.tex文件实现的?

是。在sec4.3中,zhmap=true时默认行为调用了zhmetrics读取ctex-zhmap- #4 .tex中的配置:

image.png

源码可参见ctex文档的sec14.3.2:ctex-engine-pdftex.def:

% \ctex_load_zhmap:nnnn 
% 载入 zhmetrics 的字体映射文件,同时设置 \CJKrmdefault 等。
512 \cs_new_protected:Npn \ctex_load_zhmap:nnnn #1#2#3#4
513 {
514 \tl_set:Nn \CJKrmdefault {#1}
515 \tl_set:Nn \CJKsfdefault {#2}
516 \tl_set:Nn \CJKttdefault {#3}
517 \ctex_set_zhmap:n { \ctex_file_input:n { ctex-zhmap- #4 .tex } }
518 }
519 \@onlypreamble \ctex_load_zhmap:nnnn
520 }

附:
在v2.5的changlog中提到:

General: ubuntu 改用思源(Noto CJK)和文鼎字库,不再支持使用 pdfLATEX 编译。

这个修改的代码内容可见这个链接,也许研究下修改之前的配置可以部分回答你的原问题. 粗看上面的修改,之前的fontset=ubuntu是因为使用的是「文泉驿」字体(支持pdftex),修改为「Noto」之后不支持了。

related:

后者似乎是texhigh用的方式:

% texhigh.prelude.ths Line101
\@ifpackageloaded{tikz}{\@texhighload@tikztrue}{}
\newbox\texhigh@picturebox 
\if@texhighload@tikz
  \RequirePackage{tikz}
  \usetikzlibrary{shadings}
  \usetikzlibrary{fill.image}
  \protected\def\texhigh@shadetext#1#2{%
    \setbox\texhigh@picturebox=\hbox{{\texhigh@pdfliteral{7 Tr }#2}}%
    \tikz[baseline=0,line width=0pt]\path\pgfextra{\rlap{\copy\texhigh@picturebox}}
      [#1] (0,-\dp\texhigh@picturebox) rectangle (\wd\texhigh@picturebox,\ht\texhigh@picturebox);}

  \tikzset{texhigh/.is family,
    texhigh/gradient primitive/.style={left color=blue,right color=cyan},
    texhigh/gradient ?/.style={left color=red,right color=blue},
    texhigh/gradient-style/.style={texhigh/gradient #1}}
  \THSaveStyle{tikz.gradient}{%
    \THSetClassCS{latex}{\texhigh@underline{\THcolor{purple}\bfseries#1#2}}
    \THSetClassCS{primitive}
      {\texhigh@shadetext{texhigh/gradient-style=primitive}{\bfseries #1#2}}%
    \THSetClassCS{?}{\texhigh@shadetext{texhigh/gradient-style=?}{#1#2}}%
  }

看上去是浮点误差所致(?)

\documentclass{standalone}
\usepackage{tikz}
% \usepackage{xfp}%
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
    \def\a{0.1}
    \def\t{65}
    \def\l{0.2}
    \def\w{1.4}
    \def\ws{0.8}
    \foreach \i in{1,2,...,7}
    {
        \pgfmathparse{\i*0.20+13.35}
        \let\s=\pgfmathresult
        \node[anchor=north,inner sep=2pt] at (0,\i) {$\s$ and $\fpeval{\i*0.20+13.35}$};
    }
\end{tikzpicture}
\end{document}

image.png

是最小工作示例代码...

并非最小。

只有使用xe编译才会出现『无法加粗』的现象,啸行的回答老师才是更好的正解。

如果非用xelatex不可

learnt from here

Claim: 对字体编码做修改,是否严格符合ieeetrans的投稿需求,或者换言之,这是不是最佳实践,我不清楚。

% main.tex
% https://tex.stackexchange.com/a/495519/322482

\renewcommand{\encodingdefault}{OT1}
\documentclass[journal]{IEEEtran}
\begin{document}

\section{Introduction}

For peer review papers

\textbf{creates the second title.}

{\bfseries aaaaa}

\end{document}

image.png

附件一直上传不上来,就只好贴链接了

论坛传输文件有大小限制。实际上,当你触及这一限制时,说明你并没有做MWE,而是把调试大段代码的任务直接甩手交给别人...

模板编译报错,不知道具体原因

当你遇到报错,务必贴报错信息。


注意项目的文件结构和上述信息判断:

找不到./font/下的字体呗...

image.png

1.方法一,『为所有人安装』上述路径下的字体后刷新缓存
2.方法二,注意到:

% cumcmthesis.cls % Line 128
\RequirePackage{fontspec}
\newfontfamily\yaheiconsola{YaHei.Consolas.1.11b.ttf}
\newfontfamily\monaco{MONACO.TTF}
\setmonofont[
    Contextuals={Alternate},ItalicFont = Fira Code Retina Nerd Font Complete.otf     % to avoid font warning
]{YaHei.Consolas.1.11b.ttf}

使用Path选项指定路径。

\RequirePackage{fontspec}
\newfontfamily\yaheiconsola[Path = ./font/,]{YaHei.Consolas.1.11b.ttf}
\newfontfamily\monaco[Path = ./font/]{MONACO.TTF}
\setmonofont[
    Path = ./font/,
    Contextuals={Alternate},
    ItalicFont = Fira Code Retina Nerd Font Complete.otf% to avoid font warning
]{YaHei.Consolas.1.11b.ttf}

之后编译又报错

! LaTeX Error: Unknown option `classicReIm' for package `kpfonts-otf'.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.80

我不懂字体,参考这个

%五一模板.tex %Line9
\usepackage[classicReIm]{kpfonts}

替换为xe友好的

\usepackage[fancyReIm]{kpfonts-otf}

如发现其他问题,请⌈补充问题⌋,并具体指明效果差异。并尽可能给更短的MWE,过长的代码0人想看。

请提供你的操作系统(是否是windows?)

同时你需要提供你所说的『ctex做的tex文件』的.tex文件内容,或者测试如下的最简代码:

\documentclass{ctexart}
\begin{document}
你好 \LaTeX\ 世界!
\end{document}

看看问题是否存在。有可能是安装时提前关闭了安装界面,进而没有做好字体配置所致(?)

发布
问题