clerkma / ptex-ng

Asiatic pTeX
292 stars 32 forks source link

一个bug和一个建议 #50

Closed Wongboo closed 9 months ago

Wongboo commented 2 years ago

1.这是我运行的命令行结果部分显示

This is Asiatic pTeX, Version 3.141592653 (preloaded format=platex-ng)
entering extended mode
(c:/Users/90834/Desktop/PDE/PDE2/report

实际上我的文件名为report.tex,我的vscode的问题解析都无法指引至原tex文件,因为他总是尝试解析c:\Users\90834\Desktop\PDE\PDE2\report,实际上应该加上后缀.tex,推测命令行输出添加.tex可以使此项功能正常 2.为什么不考虑默认执行

\def\pgfsysdriver{pgfsys-dvipdfm.def}
stone-zeng commented 2 years ago
  1. 带或者不带 .tex 扩展名 TeX 引擎可以都接受,这里更多是 VS Code 的问题
  2. ptex-ng 也可以配合其他 driver 使用,未必得是 dvipdfm
Wongboo commented 2 years ago

第一个问题问题不大,但类似的一个路径问题不止一个,有在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可能也会引发某种路径错误

Wongboo commented 2 years ago

@stone-zeng 烦您说一下ptex-ng怎么配合其他driver,我这边没看到此类命令行参数

Wongboo commented 2 years ago

@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报错的准确度就下降了

Wongboo commented 2 years ago

我懂了,找到问题了,ptex-ng在Windows不会自动将路径分隔符\,替换为/,因此.\report.tex将会失败,此外由于latexmk内部默认行为会将/替换为\,于是,ptex-ng不加-cd-将会编译失败,但加入-cd-也只是治标不治本,因为synctex依旧会失效,正确的做法是让latexmk加入-MSWinBackSlash-,或者让ptex-ng中检测到Windows环境后自动将路径分隔符\,替换为/,建议完成这一Windows上的修正

Wongboo commented 2 years ago

至于为何有的时候会丢失.tex扩展名,我也不清楚

stone-zeng commented 2 years ago

烦您说一下ptex-ng怎么配合其他driver,我这边没看到此类命令行参数

就用别的驱动(dvipsdvisvgm 之类)去编译生成的 dvi 文件啊

我懂了,找到问题了,ptex-ng在Windows不会自动将路径分隔符\,替换为/,因此.\report.tex将会失败,此外由于latexmk内部默认行为会将/替换为\,于是,ptex-ng不加-cd-将会编译失败,但加入-cd-也只是治标不治本,因为synctex依旧会失效,正确的做法是让latexmk加入-MSWinBackSlash-,或者让ptex-ng中检测到Windows环境后自动将路径分隔符\,替换为/,建议完成这一Windows上的修正

你是不是应该区分一下 latexmk 的选项和 ptex-ng 的选项……

Wongboo commented 2 years ago

我的意思是应当在Windows上增加C:\a.tex此类路径的支持

Wongboo commented 2 years ago

另外,我这边测试了一下ptex-ng,有些测试用例(中文用例)ptex-ng用时xelatex两倍还多,你们需要测试一下吗

clerkma commented 2 years ago

比xelatex慢的,这就不好说是在哪出问题了。你可以整个最小文件贴到这来看看。

clerkma commented 2 years ago

slash那个,实际上不好说:

platex-ng -jobname=z "\documentclass{minimal}\begin{document}mini\end{document}"
Wongboo commented 2 years ago

@clerkma, 我拿lualatex/pdflatex/xelatex测试了一下,像.\a.tex的路径也不支持,但(在Windows下)像C:\happy\a.tex的路径是支持的

Wongboo commented 2 years ago

modeling_final_project.zip @clerkma ,最小例子不太好搞,我把我源文件做了一下混淆发过来了(混淆前用的常用字,编译情况也类似),可能问题与我强制其用dvipdfmx有关?但不用又没法得到graphicxtikz的正确图像

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
stone-zeng commented 2 years ago

呃,构造一个最小示例很困难吗?

\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
clerkma commented 2 years ago

pdftex和xetex和我的ptex-ng对于插图处理的逻辑大概不太一样。 这里面涉及到,图片是不是要解压和在压缩的问题。 本质上,把pdf模式关掉,这样,输出的速度就会快很多了。 现在的这个耗时,基本上可以分为两个部分:

  1. tex本身输出的dvi这个过程的时间
  2. dvi转换到pdf的时间(等价于使用dvipdfmx)

xetex那个比较特殊,是有管道调用的,所以时间上不是简单的做加法。

Wongboo commented 2 years ago

@stone-zeng 我用了那么多包,第一时间也分辨不出来是谁变慢了,我之前怀疑有graphicx,tikz-cd, pgfplots, dvipdfmx, 也不清楚他们有没有拖慢

Wongboo commented 2 years ago

@clerkma ,意思是xelatex在1,2是类似并行的吧,而且还有一个问题,就是latexmk时,xelatex前几次会用no-pdf这样就节约了几次2的调用,但现在有biblatexmk的话,其四种模式:latexxelatexpdflatexlualatex

Firestar-Reimu commented 1 year ago

windows上./1.tex1.tex不一样的问题在xelatex、lualatex等上都有发生,应该是powershell的问题

clerkma commented 1 year ago

感觉我可以实现一个raw string的东西