终端是kitty,打算用nvim+vimtex写latex,但是在编译中文过程中出了一些问题
1.安装texlive和中文支持
$ sudo pacman -S texlive-most texlive-lang texlive-langchinese texlive-langextra texlive-bibtexextra texlive-fontsextra biber
2.之后就是安装vimtex插件,配置的话我是基本就抄了github上默认的示例
filetype plugin indent on
syntax enable
let g:vimtex_view_method = 'zathura'
let g:vimtex_compiler_method = 'latexmk'
3.测试tex样例
示例:
\documentclass[UTF8]{ctexart}
\begin{document}
你好
\end{document}
编译结果(报错):
/usr/share/texmf-dist/tex/latex/ctex/fontset/ctex-fontset-fandol.def|103 error| Critical Package ctex Error: CTeX fontset `fandol' is unavailable in current mode.
$ mkdir ~/.fonts/TTF
$ ln -s /usr/share/texmf-dist/fonts/opentype/public/fandol ~/.fonts/TTF
$ fc-cache -vf ~/.fonts
Fontconfig error: Cannot load default config file
/home/edward/.fonts: caching, new cache contents: 0 fonts, 2 dirs
/home/edward/.fonts/TTF: caching, new cache contents: 0 fonts, 1 dirs
/home/edward/.fonts/TTF/fandol: caching, new cache contents: 8 fonts, 0 dirs
/home/edward/.fonts/r: caching, new cache contents: 12 fonts, 0 dirs
/build/anaconda/pkg/anaconda/opt/anaconda/var/cache/fontconfig: not cleaning non-existent cache directory
/home/edward/.cache/fontconfig: cleaning cache directory
fc-cache: succeeded
$ mkfontscale ~/.fonts/TTF
$ mkfontdir ~/.fonts/TTF
然后又去编译了一下,还是老问题,没有解决,请各位大佬教教我,第一次在linux上装latex,搞了一天了还是不知道怎么办
最近编辑记录 Edsater (2022-08-09 11:50:35)
离线
一直用texstudio,没遇到过问题,集成性的编辑器还是方便的多.
离线
一直用texstudio,没遇到过问题,集成性的编辑器还是方便的多.
可能过阵子用不顺手了也会换到texstudio,但目前这个问题报错让我很难受,我不知道问题处在哪,就单纯想去处理掉这个报错
离线
试试指定字体,
\documentclass[UTF8,fontset=ubuntu]{ctexart}
fontset 有这些可以选
fontset = ⟨adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|none|...⟩
离线
试试指定字体,
\documentclass[UTF8,fontset=ubuntu]{ctexart}
fontset 有这些可以选
fontset = ⟨adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|none|...⟩
谢谢大哥,可以了!
目前我的示例代码、编译过程和编译结果如下:
1.示例代码
$ cat a.tex
\PassOptionsToPackage{quiet}{fontspec}\documentclass[UTF8,fontset=fandol]{ctexart}
\title{My First Document}
\author{Edward}
\date{\today}
%正文区
\begin{document}
\maketitle
latex实例
\end{document}
2.编译过程
$ xelatex a.tex
This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022/Arch Linux) (preloaded format=xelatex)
restricted \write18 enabled.
entering extended mode
(./a.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-04-10>
(/usr/share/texmf-dist/tex/latex/ctex/ctexart.cls
(/usr/share/texmf-dist/tex/latex/ctex/config/ctexbackend.cfg)
(/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-xetex.def))
Document Class: ctexart 2021/12/12 v2.5.8 Chinese adapter for class article (CT
EX)
(/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty)
(/usr/share/texmf-dist/tex/latex/ctex/ctexhook.sty)
(/usr/share/texmf-dist/tex/latex/ctex/ctexpatch.sty)
(/usr/share/texmf-dist/tex/latex/base/fix-cm.sty
(/usr/share/texmf-dist/tex/latex/base/ts1enc.def))
(/usr/share/texmf-dist/tex/latex/ctex/config/ctexopts.cfg)
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texmf-dist/tex/latex/ctex/engine/ctex-engine-xetex.def
(/usr/share/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
(/usr/share/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty)
(/usr/share/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/share/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
(/usr/share/texmf-dist/tex/latex/base/fontenc.sty)
(/usr/share/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
(/usr/share/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg)))
(/usr/share/texmf-dist/tex/latex/zhnumber/zhnumber.sty
(/usr/share/texmf-dist/tex/latex/zhnumber/zhnumber-utf8.cfg))
(/usr/share/texmf-dist/tex/latex/ctex/scheme/ctex-scheme-chinese-article.def
(/usr/share/texmf-dist/tex/latex/ctex/config/ctex-name-utf8.cfg))
(/usr/share/texmf-dist/tex/latex/ctex/ctex-c5size.clo)
(/usr/share/texmf-dist/tex/latex/ctex/fontset/ctex-fontset-fandol.def))
(/usr/share/texmf-dist/tex/latex/ctex/config/ctex.cfg) (./a.aux) [1] (./a.aux)
)
Output written on a.pdf (1 page).
Transcript written on a.log.
3.最后结果
$ zathura a.pdf
fontset=ubuntu我运行的时候报错了,试了几个换成fandol最后可以编译了
文件开头加\PassOptionsToPackage{quiet}{fontspec}是因为一开始还是会报错Package fontspec Warning: Font "FandolSong-Regular" does not contain requested Script "CJK".,我看了这篇知乎上的评论加了这段然后也成功消除了这个报错项。
离线
看样子来晚了,问题解决了。
btw,我偷了 windows 的几个字体,然后 fontset=windows 的,因为 fandol 因为缺字有 warning...
以及本 vimmer 吐槽:这明明是编译错误,换 texstudio 应该是解决不了问题的。
贴一个自己的 ~/.latexmkrc (也可以用 vim 的模板功能,每个项目都留一个)
# latexmk config
# 详情请 texdoc latexmk
# $bibtex = 'bibtex %O %S';
# $pdf_mode = 1; # tex -> pdf
# $pdf_mode = 2; # tex -> ps -> pdf
# 如果设为 4 使用 lualatex。
# 如果设为 5 使用 xelatex。
# 每个项目都应有一个 .latexmk,用 vim-template 创建再修改,debug 用 magic comment 比如 %!TEX program=xelatex ;也可用命令行参数切换不同的引擎,比如 latexmk -xelatex
$pdf_mode = 5;
# 部分 option 已经放入 .vimrc
# -halt-on-error 使编译遇到错误时立即停止;
$pdflatex = "pdflatex -halt-on-error -shell-escape %O %S";
# xelatex 的 -no-pdf 参数使编译时只生成 xdv 文件,最后才用 xdvipdfmx 生成 pdf, 这样可以节省嵌入图片耗费的时间(需要 TeX Live 2017 以上)
#The result is that $latex = ’latex %O %S’, and similarly for $pdflatex, $lualatex, and $xelatex.
# (The option -no-pdf needed for $xelatex is provided automatically, given that %O appears in the definition.) 所以不用添加 -no-pdf 了
$xelatex = "xelatex -halt-on-error -shell-escape %O %S";
$lualatex = "lualatex -halt-on-error -shell-escape %O %S";
$xdvipdfmx = "xdvipdfmx -E -o %D %O %S";
# $bibtex_use = 2; 等同于 -bibtex 选项。
# $bibtex_use = 0; 等同于 -bibtex- 选项。表示: Never run bibtex or biber.
# 通常 bbl 文件是由 BibTeX 编译 bib 文件生成的,在清理辅助文件时可以删掉; 但是有时并没由提供 bib 文件,只有 bbl(比如 arxiv 上的 TeX 源码),$bibtex_use = 1.5 可以自动检测根据条件清理 bbl 文件(需要 TeX Live 2018 以上)。
# 注意:$bibtex_use = 1.5 导致 biblatex 失败!!!
$bibtex_use = 1.5;
# 编译时将所有生成文件(包括辅助文件)写到 latex.out 目录下。注意这个配置虽然可以使目录更加整洁,但是可能导致一些软件的功能受影响,建议谨慎选择。
# 如使用 minted 宏包,需要添加 \usepackage[outputdir=latex.out]{minted}
# 参见 https://github.com/gpoore/minted/issues/159
# .latexmkrc 的优先级比 .vimrc 的配置 更高
$out_dir = "latex.out";
# 如果你希望编译完成后清理无关的中间文件,则注意把清理模式 $cleanup_mode 打开
# $cleanup_mode = 1;
$clean_ext = "hd nav snm synctex.gz xdv";
# $preview_mode = 0; # 编译完成后自动打开 pdf;
# $preview_mode = 1; # 这个似乎和 “$preview_continuous_mode = 1” 冲突
# $preview_continuous_mode = 0; # 已经在 vimrc 里面设置了
@default_files = ('main.tex');
# $pdf_previewer = 'okular'; # linux 会根据 xdg-open 自动选择(大概
# vim: set ft=perl:
离线
ln -s /usr/share/texmf-dist/fonts/opentype/public/fandol ~/.fonts/TTF
这个对于解决问题没有帮助。并且如果没有用到 texlive 中字体的场景,没必要创建链接,这还会导致 wps 选择字体的时候卡。
离线
ln -s /usr/share/texmf-dist/fonts/opentype/public/fandol ~/.fonts/TTF
这个对于解决问题没有帮助。并且如果没有用到 texlive 中字体的场景,没必要创建链接,这还会导致 wps 选择字体的时候卡。
但是我最开始的时候这样报错,不这样操作fandol能用吗,我不是很懂唉
/usr/share/texmf-dist/tex/latex/ctex/fontset/ctex-fontset-fandol.def|103 error| Critical Package ctex Error: CTeX fontset `fandol' is unavailable in current mode.
离线
不这样操作fandol能用吗,我不是很懂唉
这个操作能让其他程序也能用 texlive 所带的字体。
离线
见wiki
默认情况下不自动提供给Fontconfig随各种Tex Live包提供的字体。
离线
见wiki
默认情况下不自动提供给Fontconfig随各种Tex Live包提供的字体。
哦哦,那我到时候去改回来
离线
看样子来晚了,问题解决了。
btw,我偷了 windows 的几个字体,然后 fontset=windows 的,因为 fandol 因为缺字有 warning...
大哥,你这个fontset=windows字体是咋整的
离线
`fandol' is unavailable in current mode.
我觉得问题出在,
in current mode
离线
Edsater 说:`fandol' is unavailable in current mode.
我觉得问题出在,
in current mode
不是很理解这个current mode是啥
离线
大哥,你这个fontset=windows字体是咋整的
把 windows 机器上的字体拷贝过来装上呗,虽然实际上只要 ctex 代码里用到的字体就行了,全拷贝过来只要配置好 fontconfig 也不会出问题。
离线