Skip to content

LTeX+ silently quits when LaTeX file contains ``$!$'' #36

Description

@skloibi

Hi there,
we've run into the following issue when running LTeX+ via the CLI on LaTeX files:

Describe the bug
When executing LTeX+ (CLI) locally on files that include the string ``$!$'', no output is shown.
We observed this behaviour in both small and large TeX files but could come up with the following minimal reproducer.

Steps to reproduce

For Linux x64 with LTeX+ v18.5.1:

  1. Download LTeX+ from here and unzip it.
  2. Download/create the below provided file reproducer_flawed.tex.
  3. Download/create the below provided config file minimal_config.json.
  4. Run LTeX+ on the file with the following command and arguments: ./ltex-cli-plus --client-configuration=minimal_config.json --verbose reproducer_flawed.tex
  5. LTeX+ should not print anything (after analysis has started) despite there being obvious grammar issues and report result code 0.

Here are more detailed instructions:

We used the following command on the files provided below:

./ltex-cli-plus --client-configuration=minimal_config.json --verbose reproducer_flawed.tex

With reproducer_flawed.tex we get no output (and result code 0) but when executing the same with reproducer_working.tex, LTeX+ correctly reports spelling issues (and result code 3).

Here's a complete script that downloads the corresponding LTeX+ version and showcases the issue with the config (minimal_config.json) and input files (reproducer_flawed.tex, reproducer_working.tex) from below:

Details
LTEX_VERSION="18.5.1"
PLATFORM="linux-x64"
LTEX_FULL_VERSION="${LTEX_VERSION}-${PLATFORM}"
LTEX_CLI_BINARY="ltex-ls-plus-${LTEX_VERSION}/bin/ltex-cli-plus"

wget "https://github.com/ltex-plus/ltex-ls-plus/releases/download/${LTEX_VERSION}/ltex-ls-plus-${LTEX_FULL_VERSION}.tar.gz"
tar xzf "ltex-ls-plus-${LTEX_FULL_VERSION}.tar.gz"

echo "LTeX+ VERSION: ${LTEX_VERSION}"
echo "PLATFORM: ${PLATFORM}"
echo "JAVA VERSION: $(java --version)"
echo "---"

echo "==========> NOT WORKING <=========="
echo "----------> NOT WORKING: TEX FILE <----------"
cat reproducer_flawed.tex
echo "----------> NOT WORKING: LTEX OUTPUT <----------"
$LTEX_CLI_BINARY --client-configuration=minimal_config.json --verbose reproducer_flawed.tex
RESULT="$?"
echo "======= RESULT CODE = $RESULT"
echo "==================================="

echo "==========> WORKING <=========="
echo "----------> WORKING: TEX FILE <----------"
cat reproducer_working.tex
echo "----------> WORKING: LTEX OUTPUT <----------"
$LTEX_CLI_BINARY --client-configuration=minimal_config.json --verbose reproducer_working.tex
RESULT="$?"
echo "======= RESULT CODE = $RESULT"
echo "==============================="

Expected behavior
The following is the expected output in the document (provided below: reproducer_working.tex) without the string:

reproducer_working.tex:3:5: info: 'is': Möglicher Tippfehler gefunden. [AUSTRIAN_GERMAN_SPELLER_RULE]
Das is falcsh
    Use 'ist'
    Use 'IS'
    Use 'die'
    Use 'in'
    Use 'im'
reproducer_working.tex:3:8: info: 'falcsh': Möglicher Tippfehler gefunden. [AUSTRIAN_GERMAN_SPELLER_RULE]
Das is falcsh
       Use 'falsch'
       Use 'falls'
       Use 'falsche'
       Use 'flach'
       Use 'Falsch'
===============================

Sample documents

reproducer_flawed.tex:

Details
\documentclass{article}
\begin{document}
Das is falcsh``$!$''
\end{document}

reproducer_working.tex:

Details
\documentclass{article}
\begin{document}
Das is falcsh
\end{document}

LTeX configuration

Details

minimal_config.json:

{
  "ltex.language": "de-AT",
  "ltex.trace.server": "verbose",
  "ltex.ltex-ls.logLevel": "finest"
}

LTeX LS log

log of reproducer_flawed.tex:

Details
Jun 18, 2025 4:40:40 PM org.bsplines.lspcli.client.LspCliLanguageClient$Companion startLanguageServerProcess
INFO: Starting language server with command line '/home/skloibi/ltex-issue-debugging/reproducer/ltex-ls-plus-18.5.1/bin/./ltex-ls-plus' in directory '/home/skloibi/ltex-issue-debugging/reproducer/ltex-ls-plus-18.5.1/bin'...
Jun 18, 2025 4:40:40 PM org.bsplines.lspcli.client.LspCliLanguageClient initializeLanguageServer
INFO: Initializing language server...
Jun 18, 2025 4:40:47 PM org.bsplines.lspcli.client.Checker checkFile
INFO: Checking 'reproducer_flawed.tex'...
Jun 18, 2025 4:40:47 PM org.bsplines.lspcli.client.Checker checkFile
INFO: Waiting for diagnostics for file 'reproducer_flawed.tex'...

log of reproducer_working.tex:

Details
Jun 18, 2025 4:40:50 PM org.bsplines.lspcli.client.LspCliLanguageClient$Companion startLanguageServerProcess
INFO: Starting language server with command line '/home/skloibi/ltex-issue-debugging/reproducer/ltex-ls-plus-18.5.1/bin/./ltex-ls-plus' in directory '/home/skloibi/ltex-issue-debugging/reproducer/ltex-ls-plus-18.5.1/bin'...
Jun 18, 2025 4:40:50 PM org.bsplines.lspcli.client.LspCliLanguageClient initializeLanguageServer
INFO: Initializing language server...
Jun 18, 2025 4:41:00 PM org.bsplines.lspcli.client.Checker checkFile
INFO: Checking 'reproducer_working.tex'...
Jun 18, 2025 4:41:00 PM org.bsplines.lspcli.client.Checker checkFile
INFO: Waiting for diagnostics for file 'reproducer_working.tex'...
reproducer_working.tex:3:5: info: 'is': Möglicher Tippfehler gefunden. [AUSTRIAN_GERMAN_SPELLER_RULE]
Das is falcsh
    Use 'ist'
    Use 'IS'
    Use 'die'
    Use 'in'
    Use 'im'
reproducer_working.tex:3:8: info: 'falcsh': Möglicher Tippfehler gefunden. [AUSTRIAN_GERMAN_SPELLER_RULE]
Das is falcsh
       Use 'falsch'
       Use 'falls'
       Use 'falsche'
       Use 'flach'
       Use 'Falsch'

Version information

  • Operating system: Linux x64 (Fedora 41)
  • ltex-ls: 18.5.1
  • Java: openjdk 23.0.1

But we also observed the same with WSL on Windows 11 with Java version openjdk 21.0.6 as well as with the 18.6.0 nightly build of LTeX+.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions