lervag / vimtex

VimTeX: A modern Vim and neovim filetype plugin for LaTeX files.
MIT License
5.29k stars 386 forks source link

Poor error output in bibliography issue #2953

Closed ThSGM closed 1 month ago

ThSGM commented 1 month ago

Description

So I've had a longstanding issue with poor error and warning representation (see here) compared to non-vim options. I think the only way to solve such issues is to report errors as they arise.

Here is a minimal file:

\documentclass{article}

\begin{document}
Hello world.

Goodbye.

Here is a reference to \cite{Harris2022}.

\bibliographystyle{plain}
\bibliography{test.bib}
\end{document}

Here is the bibliography file:

@article{Harris2022,
  title={Nonlinear time-domain wave-structure interaction: A parallel fast integral equation approach},
  author={Harris, J.C. and Dombre, E., and Benoit, M. and  Grilli, S.T. and Kuznetsov, K.I.},
  journal={Int. J. Numer. Meth. Fluids},
  volume={94},
  pages={188--222},
  year={2022},
  publisher={Wiley}
}

Here is the unhelpful vimtex output:

image

Here is the much more helpful Overleaf output:

image

So you can easily see the error is due to Name 2 in bibliography entry having a comma at the end.

The vimtex error reporting only:

Steps to reproduce

Described above.

Expected behavior

No response

Actual behavior

No response

Do you use a latexmkrc file?

No

VimtexInfo

System info:
  OS: DESKTOP-IKHCORQ (Microsoft Windows 11 Enterprise)
  Vim version: NVIM v0.9.5
  Has clientserver: true
  Servername: \\.\pipe\nvim.268520.0

VimTeX project: test
  base: test.tex
  root: C:\Users\myusername\temp
  tex: C:\Users\myusername\temp/test.tex
  main parser: current file verified
  document class: article
  compiler: latexmk
    engine: -pdf
    options:
      -verbose
      -file-line-error
      -synctex=1
      -interaction=nonstopmode
    callback: 1
    continuous: 1
    executable: latexmk
    job: 
      jobid: 17
      output: C:\Users\myusername\AppData\Local\Temp\nvim.0\OSWATw\0
      cmd: set max_print_line=2000 & latexmk -verbose -file-line-error -synctex=1 -interaction=nonstopmode  -pdf -pvc -pvctimeout- -view=none -e "$compiling_cmd = ($compiling_cmd ? $compiling_cmd . ' ^& ' : '') . 'echo vimtex_compiler_callback_compiling'" -e "$success_cmd = ($success_cmd ? $success_cmd . ' ^& ' : '') . 'echo vimtex_compiler_callback_success'" -e "$failure_cmd = ($failure_cmd ? $failure_cmd . ' ^& ' : '') . 'echo vimtex_compiler_callback_failure'" "test.tex"
      pid: 249308
  viewer: sioyek
    job: 
      pid: -
      cmd: sioyek.exe  --inverse-search "wsl nvim --headless -c \"VimtexInverseSearch %2 '%1'\"" --forward-search-file "C:\\Users\\myusername\\temp\\test.tex" --forward-search-line 6 "C:\\Users\\trinh\\temp/test.pdf"
    cmd_start: sioyek.exe  --inverse-search "wsl nvim --headless -c \"VimtexInverseSearch %2 '%1'\"" --forward-search-file "C:\\Users\\myusername\\temp\\test.tex" --forward-search-line 6 "C:\\Users\\trinh\\temp/test.pdf"
  qf method: LaTeX logfile
lervag commented 1 month ago

So I've had a longstanding issue with poor error and warning representation (see here) compared to non-vim options.

Notice, I did respond to that issue, but I didn't see any immediate ways to react to it to improve VimTeX. Sorry. I'm closing it as I think the current issue is a better way to address things.

I think the only way to solve such issues is to report errors as they arise.

Yes, I agree.

Here is the unhelpful vimtex output: …

Here is the much more helpful Overleaf output: …

Just to be clear: Overleaf is good. I agree. But Overleaf is software developed by a team of engineers that are being payed. VimTeX is developed by me in my spare time. I'll not be able to make VimTeX as good as Overleaf on things like this. Sorry.

Still, I will do my best and will attempt to improve things that seem doable without too much work.

The vimtex error reporting only: …

  • notes a very unhelpful reference to the bibliography style file. Can we modify the error reporting to note this issue?

  • I also want to remark how the Overleaf reporting has collated all the important errors to the top, and then stylised them in a very clear way (a red box). Obviously some of this might not be as relevant to vim users, but I think it is rather important.

Notice that VimTeX relies on the errorformat feature in Vim/Neovim and using that to parse the .log file(s). LaTeX log files are hard to parse, and in this case, the problem is actually only described in the additional bibtex log files - which has it's own weird syntax. VimTeX does parse these as well, but again, not at all perfectly.

With issue reports like this one, it is possible to improve things. So feel free to open more of them. That will help me make things better one thing at a time. ;)

ThSGM commented 1 month ago

Hi! Just to be clear because I think tone and intention can get lost, especially through the internet. I was of course not speaking in any critical tone about workload and contributions, but just rather puzzling over what makes one experience better or worse. So I’m trying to puzzle that out, I’m naturally comparing vimtex to other offerings.

That’s definitely not a criticism of “why can’t you do this or that!”

I think everybody recognised just how much unpaid work goes into these things. We definitely appreciate it and I did not mean my post in the way it might have been interpreted.

lervag commented 1 month ago

Thanks; yes, tone and intention does tend to get lost in written language. In your post, I think the wording "unhelpful" and in the title "poor error output" is somewhat offputting. It may be true, but I'm constantly trying to have VimTeX be helpful and not poor.

In any case, I didn't really interprate you as rude and I didn't think you had bad intentions. But I was somewhat triggered and felt a need to express that I'm doing my best, but that it is not always enough. ;)

Still, I think your issue has helped improve VimTeX. I hope you'll still post new issues, e.g. on the present topic of error parsing. I think it is one of the topics where it is clearly some possibilities of improving things. But it does rely on concrete and simple examples.