Closed Wongboo closed 9 months ago
.tex
扩展名 TeX 引擎可以都接受,这里更多是 VS Code 的问题ptex-ng
也可以配合其他 driver 使用,未必得是 dvipdfm
第一个问题问题不大,但类似的一个路径问题不止一个,有在Windows下
platex-ng a.tex
能运行
platex-ng .\a.tex
不能,但实际上后者是PowerShell下的自动补全,可以与其他*latex使用,另外在Windows下,用latexmk调用ptex-ng,如果不加-cd-
也似乎会遇到各种错误,使我现在latexmk的参数异常繁琐,形如
"-e",
"$pdflatex = 'platex-ng --shell-escape';$bibtex = 'pbibtex'; $dvipdf = 'dvipdfmx %O -o %D %S'; $do_cd = 1; $recorder = 0",
"-output-format=pdf",
"%DOC%"
推测默认的-cd
可能也会引发某种路径错误
@stone-zeng 烦您说一下ptex-ng
怎么配合其他driver,我这边没看到此类命令行参数
@stone-zeng ,另外-cd
后(也就是cd到文档目录后),对应输出将会正确
This is Asiatic pTeX, Version 3.141592653 (preloaded format=platex-ng)
entering extended mode
(report.tex
再说,不加扩展名,很可能有report.cpp,report.bbl,report.*(只是一种假设,确实可能发生)诸如此类文件共存,于是自然vscode报错的准确度就下降了
我懂了,找到问题了,ptex-ng
在Windows不会自动将路径分隔符\
,替换为/
,因此.\report.tex
将会失败,此外由于latexmk内部默认行为会将/
替换为\
,于是,ptex-ng
不加-cd-
将会编译失败,但加入-cd-
也只是治标不治本,因为synctex依旧会失效,正确的做法是让latexmk
加入-MSWinBackSlash-
,或者让ptex-ng
中检测到Windows环境后自动将路径分隔符\
,替换为/
,建议完成这一Windows上的修正
至于为何有的时候会丢失.tex
扩展名,我也不清楚
烦您说一下
ptex-ng
怎么配合其他driver,我这边没看到此类命令行参数
就用别的驱动(dvips
、dvisvgm
之类)去编译生成的 dvi 文件啊
我懂了,找到问题了,
ptex-ng
在Windows不会自动将路径分隔符\
,替换为/
,因此.\report.tex
将会失败,此外由于latexmk内部默认行为会将/
替换为\
,于是,ptex-ng
不加-cd-
将会编译失败,但加入-cd-
也只是治标不治本,因为synctex依旧会失效,正确的做法是让latexmk
加入-MSWinBackSlash-
,或者让ptex-ng
中检测到Windows环境后自动将路径分隔符\
,替换为/
,建议完成这一Windows上的修正
你是不是应该区分一下 latexmk
的选项和 ptex-ng
的选项……
我的意思是应当在Windows上增加C:\a.tex
此类路径的支持
另外,我这边测试了一下ptex-ng
,有些测试用例(中文用例)ptex-ng
用时xelatex
两倍还多,你们需要测试一下吗
比xelatex慢的,这就不好说是在哪出问题了。你可以整个最小文件贴到这来看看。
slash那个,实际上不好说:
platex-ng -jobname=z "\documentclass{minimal}\begin{document}mini\end{document}"
@clerkma, 我拿lualatex/pdflatex/xelatex
测试了一下,像.\a.tex
的路径也不支持,但(在Windows下)像C:\happy\a.tex
的路径是支持的
modeling_final_project.zip
@clerkma ,最小例子不太好搞,我把我源文件做了一下混淆发过来了(混淆前用的常用字,编译情况也类似),可能问题与我强制其用dvipdfmx
有关?但不用又没法得到graphicx
和tikz
的正确图像
Measure-Command {xelatex FakeReport.tex -synctex=1 -shell-escape}
Days : 0
Hours : 0
Minutes : 0
Seconds : 20
Milliseconds : 147
Ticks : 201478997
TotalDays : 0.000233193283564815
TotalHours : 0.00559663880555556
TotalMinutes : 0.335798328333333
TotalSeconds : 20.1478997
TotalMilliseconds : 20147.8997
Measure-Command {platex-ng FakeReport.tex -synctex=1 -shell-escape}
Days : 0
Hours : 0
Minutes : 0
Seconds : 42
Milliseconds : 950
Ticks : 429500672
TotalDays : 0.000497107259259259
TotalHours : 0.0119305742222222
TotalMinutes : 0.715834453333333
TotalSeconds : 42.9500672
TotalMilliseconds : 42950.0672
呃,构造一个最小示例很困难吗?
\RequirePackage{iftex}
\ifptex
\PassOptionsToPackage{dvipdfmx}{graphicx}
\fi
\ifptexng
\PassOptionsToPackage{dvipdfmx}{graphicx}
\fi
\documentclass{article}
% \documentclass[draft]{article}
\usepackage{graphicx}
\def\TEST#1{\includegraphics[width=0.24\textwidth]{#1}}
\begin{document}
\noindent
\TEST{TOPSIS_0.png}
\TEST{TOPSIS_1_2.png}
\TEST{TOPSIS_1_4.png}
\TEST{TOPSIS_2_2.png}
\TEST{TOPSIS_2_4.png}
\TEST{TOPSIS_3_2.png}
\TEST{TOPSIS_3_4.png}
\TEST{TOPSIS_4_2.png}
\TEST{TOPSIS_4_4.png}
\end{document}
一些结果:
pdflatex -shell-escape FakeReport.tex 0.90s user 0.10s system 78% cpu 1.272 total
xelatex -shell-escape FakeReport.tex 1.36s user 0.21s system 78% cpu 1.983 total
platex -shell-escape FakeReport.tex 1.65s user 0.22s system 87% cpu 2.149 total
platex-ng -shell-escape FakeReport.tex 3.40s user 0.28s system 87% cpu 4.213 total
# draft mode
pdflatex -shell-escape FakeReport.tex 0.54s user 0.09s system 66% cpu 0.941 total
xelatex -shell-escape FakeReport.tex 0.84s user 0.19s system 72% cpu 1.421 total
platex -shell-escape FakeReport.tex 1.89s user 0.23s system 81% cpu 2.586 total
platex-ng -shell-escape FakeReport.tex 2.12s user 0.25s system 83% cpu 2.818 total
pdftex和xetex和我的ptex-ng对于插图处理的逻辑大概不太一样。 这里面涉及到,图片是不是要解压和在压缩的问题。 本质上,把pdf模式关掉,这样,输出的速度就会快很多了。 现在的这个耗时,基本上可以分为两个部分:
xetex那个比较特殊,是有管道调用的,所以时间上不是简单的做加法。
@stone-zeng 我用了那么多包,第一时间也分辨不出来是谁变慢了,我之前怀疑有graphicx,tikz-cd, pgfplots, dvipdfmx, 也不清楚他们有没有拖慢
@clerkma ,意思是xelatex在1,2是类似并行的吧,而且还有一个问题,就是latexmk
时,xelatex
前几次会用no-pdf
这样就节约了几次2的调用,但现在有bib
用latexmk
的话,其四种模式:latex
,xelatex
, pdflatex
, lualatex
xelatex
, lualatex
配合不了latex
会显示dvi
和pdf
有差异,不让我继续pdflatex
得用
"-e",
"$pdflatex = 'platex-ng --shell-escape';$bibtex = 'pbibtex'; $dvipdf = 'dvipdfmx %O -o %D %S'; $do_cd = 1; $recorder = 0",
"-output-format=pdf",
"%DOC%"
会造成多次2的调用浪费时间,于是此例中若想解决bib的编译,我这边的时间对比将更加悬殊
windows上./1.tex
和1.tex
不一样的问题在xelatex、lualatex等上都有发生,应该是powershell的问题
感觉我可以实现一个raw string的东西
1.这是我运行的命令行结果部分显示
实际上我的文件名为report.tex,我的vscode的问题解析都无法指引至原tex文件,因为他总是尝试解析
c:\Users\90834\Desktop\PDE\PDE2\report
,实际上应该加上后缀.tex,推测命令行输出添加.tex可以使此项功能正常 2.为什么不考虑默认执行