sylvainhalle / textidote Goto Github PK
View Code? Open in Web Editor NEWSpelling, grammar and style checking on LaTeX documents
Home Page: https://sylvainhalle.github.io/textidote
License: GNU General Public License v3.0
Spelling, grammar and style checking on LaTeX documents
Home Page: https://sylvainhalle.github.io/textidote
License: GNU General Public License v3.0
Hi again
align should be treated as equation (such that there does not come unnecessary grammar suggestions)
\begin{align}
\end{align}
Similarly, new theorems and other should be handled like standard theorem, lemma etc.
I guess some kind of ignoring grammar on \begin{xxx} and \end{xxx} whenever there is
\begin{xxx}__\end{xxx} in the text... ?
Hello,
Seems like the commands from cleveref [1] are not properly detected, I get errors about unreferenced figures such as
* L364C12-L618C34 Figure fig:resampling_example is never referenced in the
text [sh:figref]
\label{fig:resampling_example}
^^^^^^^^^^^^^^^^^^^^^^^
but they are properly referenced by cleveref, producing a false positive. It's probably missing a quick filter for matching the cleveref equivalent of \ref.
$ java -jar ~/textidote.jar --read-all --check en main.tex
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
TeXtidote v0.4 - A linter for LaTeX documents
(C) 2018 Sylvain Hallé - All rights reserved
Exception in thread "main" java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at ca.uqac.lif.textidote.rules.CheckSubsections.evaluate(CheckSubsections.java:97)
at ca.uqac.lif.textidote.Linter.evaluateAll(Linter.java:126)
at ca.uqac.lif.textidote.Main.mainLoop(Main.java:318)
at ca.uqac.lif.textidote.Main.main(Main.java:93)
A simple repro :
\documentclass{article}
\begin{document}
\section{A}
\chapter{B}
\end{document}
Another:
\documentclass{article}
\begin{document}
\section{A}
\paragraph{B}
\end{document}
I just downloaded and tested TeXtidote v0.6
It seems to be exactly the tool I was looking for, but it seems I cannot use my own language tool version with ngrams support enabled.
It would be nice if the user could either point textidote to an external language tool jar file, or to a running language tool instance (and connect to it maybe via its server feature), or point the built in language tool to an existing ngrams directory.
Counter example:
2.1 Some heading
(No text here)
2.1.1 Some other heading
Hello,
I'm writing a report in a certain research field where the term intersection is more accepted than crossroads. However, the spellings check says that all words which contain 'intersection' should be changed to some form of crossroad.
This is not my intention and hence I have 100 times the same notice in the html report.
Could there maybe be a function to disable this message?
Maybe also by adding this to the dictionary?
In the works
I found a lot of mistakes on L1C1, when checking my text. Especially visible when using HTML output:
It seems that when you have inline math without symbols such as =
, the location of any problem is L1C1-L1C1
. The following is a minimal working example:
\documentclass[a4paper]{article}
\begin{document}
\section{Introduction}
This is a $MWE$. It demonstrates a bug when using inline math without math symbols and commands, like this: $a^b$.
\end{document}
Textidote's output when running textidote --check en mwe.tex
is
TeXtidote v0.6 - A linter for LaTeX documents and others
(C) 2018 Sylvain Hallé - All rights reserved
Found 3 warning(s)
Total analysis time: 2 second(s)
* L5C2-L5C9 This section is very short (about 21 words). You should consider
merging it with another section or make it longer. [sh:seclen]
\section{Introduction}
^^^^^^^^
* L1C1-L1C1 Possible spelling mistake found (23) [lt:en:MORFOLOGIK_RULE_EN_US]
This is a MWE. It demonstrates a bug when using in
^
* L1C1-L1C1 Possible spelling mistake found (116)
[lt:en:MORFOLOGIK_RULE_EN_US]
This is a MWE. It demonstrates a bug when using in
^
Hello, really helpful tool!
I noticed that when using "--check en" option, tooltips for "Possible spelling mistakes" are shown, but there are no suggestion on how to fix the mistakes.
The languagetool seems to provide those suggestions. Is it possible to include them in the tooltips? This would make error correction much simpler.
Textidote considers that \ldots is a spelling mistake and it does not seem possible to include it inside the dictionary
Like Aspell does
This class is somewhat buggy, see #50.
It could be rewritten in a simpler way, since there are a few features that complicate its implementation and that are not even used by TeXtidote. Namely:
Through a new command line switch. So, typing
textidote --ignore foo ...
will be such that environments \begin{foo}
...\end{foo}
will be taken out from the file before analyzing.
Related to comments first written in issue #31.
You should not manually force a space before a punctuation sign; if one is needed LaTeX takes care of this by itself.
I just discovered your tool through a link on researchgate.net and I do like it a lot. Great work!
I installed version 0.5.1 and tried to run a sample file
textidote --html --check de sample.tex >sample.html
In this case I get the following error message:
TeXtidote v0.5.1 - A linter for LaTeX documents
(C) 2018 Sylvain Hallé - All rights reserved
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.languagetool.language.German.getRelevantRules(German.java:168)
at org.languagetool.language.GermanyGerman.getRelevantRules(GermanyGerman.java:43)
at org.languagetool.JLanguageTool.getAllBuiltinRules(JLanguageTool.java:279)
at org.languagetool.JLanguageTool.<init>(JLanguageTool.java:186)
at org.languagetool.JLanguageTool.<init>(JLanguageTool.java:157)
at org.languagetool.MultiThreadedJLanguageTool.<init>(MultiThreadedJLanguageTool.java:76)
at org.languagetool.MultiThreadedJLanguageTool.<init>(MultiThreadedJLanguageTool.java:67)
at org.languagetool.MultiThreadedJLanguageTool.<init>(MultiThreadedJLanguageTool.java:51)
at ca.uqac.lif.textidote.rules.CheckLanguage.<init>(CheckLanguage.java:85)
at ca.uqac.lif.textidote.Main.mainLoop(Main.java:313)
at ca.uqac.lif.textidote.Main.main(Main.java:96)
Caused by: java.lang.IllegalArgumentException: 'de' is not a language code known to LanguageTool. Supported language codes are: ast-ES, be-BY, br-FR, ca-ES, ca-ES-valencia, da-DK, el-GR, en, en-AU, en-CA, en-GB, en-NZ, en-US, en-ZA, eo, es, fa, fr, gl-ES, it, ja-JP, nl, pl-PL, pt, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sl-SI, sr, sv, uk-UA, zh-CN. The list of languages is read from META-INF/org/languagetool/language-module.properties in the Java classpath. See http://wiki.languagetool.org/java-api for details.
at org.languagetool.Languages.getLanguageForShortCode(Languages.java:151)
at org.languagetool.rules.de.OldSpellingData.<init>(OldSpellingData.java:49)
at org.languagetool.rules.de.OldSpellingRule.<clinit>(OldSpellingRule.java:35)
... 11 more
I also tried the country codes de_AT
and de_CH
as specified on https://github.com/sylvainhalle/textidote, but they did not work either.
textidote works good with English tex files and language specification, i.e., --check en
. So there are no error messages triggered when English texts are processed.
When using a word ending in "-in" before \cite, rule sh:c:noin will trigger, even though the sentence is perfectly fine. This is based on latest Github release 0.6.
Bitcoin \cite{..}
Hello,
I was wondering whether British English will also be supported?
Right now American English seems to be the only way.
Showing version number
In other words, don't do \cite{foo} \cite{bar}
, but rather \cite{foo,bar}
Hello,
Sometimes the marker in the HTML page is set before the actual event.
Example: 'as we allows' get's the market between we and allows.
I get an error when I use the --check
argument
It happens not matter what I specify (en
, or en_UK
etc)
TeXtidote v0.5.1 - A linter for LaTeX documents
(C) 2018 Sylvain Hallé - All rights reserved
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/languagetool/JLanguageTool : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
at ca.uqac.lif.textidote.Main.mainLoop(Main.java:313)
at ca.uqac.lif.textidote.Main.main(Main.java:96)
Hi.
A small correction, the screenshot under your description for HTML report does not correspond to the command in the section.
Command: $ textidote --html example.tex > report.html
Screenshot: $ textidote --check en --html example.tex > report.html
The grammar check does not handle math correctly. I don't know if this will make unwanted other issues, but textidote gives grammar mistake when writing.
without math environment the grammar is correct (at least in my tests)
I wonder if it's because textidote couldn't find the languagetool
's jar.
You can also download the TeXtidote executable manually: this works on all operating systems. Simply make sure you have Java version 8 or later installed on your system. Then, download the latest release of TeXtidote; put the JAR in the folder of your choice.
Is there any instruction for where to put the languagetool
?
(Note that I'm doing manual download as I'm using a Mac, not Linux.)
Thank you.
When I run textidote.jar --html --check en my.tex
I get
TeXtidote v0.4 - A linter for LaTeX documents
(C) 2018 Sylvain Hallé - All rights reserved
Exception in thread "main" java.lang.NullPointerException
at ca.uqac.lif.textidote.rules.CheckLanguage.evaluate(CheckLanguage.java:160)
at ca.uqac.lif.textidote.Linter.evaluateAll(Linter.java:131)
at ca.uqac.lif.textidote.Main.mainLoop(Main.java:314)
at ca.uqac.lif.textidote.Main.main(Main.java:89)
It seems that this line is wrong:
Position.NOWHERE
, not null
Rather than specify all parameters through the command line, TeXtidote could automatically look for a default file (e.g. .textidote
or _textidote
) that contains the command line arguments. When started, TeXtidote would first look for such a file and parse the command line arguments there. If any arguments are specified at the "real" command line, they would overwrite the corresponding argument in the file.
In counterpart, a command-line switch should be added to force TeXtidote to ignore that file when asked.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Line -1 does not exist
at ca.uqac.lif.textidote.as.AnnotatedString.getLine(AnnotatedString.java:630)
at ca.uqac.lif.textidote.rules.RegexRule.evaluate(RegexRule.java:121)
at ca.uqac.lif.textidote.Linter.evaluateAll(Linter.java:125)
at ca.uqac.lif.textidote.Main.mainLoop(Main.java:269)
at ca.uqac.lif.textidote.Main.main(Main.java:85)
Hi again.
Another small 'bug'.
It makes spelling checks in \eqref{}
Counter example:
2.0.1 A sub-sub-section without a sub-section before
Hello,
Fr'{e}chet distance is detected as a misspelling of e}chet.
However, it does not allow me to add either e}chet or Fr'{e}chet to the dictionary to solve it.
Neither the plain text output of the HTML output works well with multiple files. The plain text output only lists the warnings without the file names, making it hard to find the location of the issue. The html output only displays the text from the last file listed and puts all the warnings on that text which makes the output unless for all files but the last.
--tex
vs. --md
--detex
option to --clean
Principle: someone verifies a text with the tool, sends you the PDF and some "ID" produced by TeXtidote. The recipient can verify the ID "fits" with the PDF that comes with it.
Goal: your students assure you they used TeXtidote on their text, but when you run TeXtidote on it by yourself, you find plenty of errors. Having them send you the ID would at least guarantee they ran it on the PDF they are sending you.
I would like to thank Sylvain for this very useful tool.
After producing the report.html I got the idea of trying the Grammarly and Ginger chrome extensions on the HTML file but didn't work. Even opening the file with Jupyterlab, the extensions failed. I did a test online and Grammarly homepage picked up some mistakes that went through me.
I would appreciate if the textidote HTML file could work with these chrome extensions.
Best Regards,
André
These are two incompatible citation styles.
LaTeX takes care of whitespace
Just remove the \begin
and \end
lines and keep what's in between
Hello,
When a dictionary includes names such as CONF'12 that correspond to acronyms of scientific conferences for example, textidote raises exceptions
textidote -read-all --check en_UK --dict d.txt t.txt
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_UK.UTF-8)
TeXtidote v0.5.1 - A linter for LaTeX documents
(C) 2018 Sylvain Hall? - All rights reserved
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 0, end 1, length 0
at java.lang.String.checkBoundsBeginEnd(java.base@9-internal/String.java:3119)
at java.lang.String.substring(java.base@9-internal/String.java:1907)
at org.languagetool.rules.spelling.SpellingCheckRule.lambda$updateIgnoredWordDictionary$0(SpellingCheckRule.java:108)
at java.util.stream.Collectors.lambda$groupingBy$49(java.base@9-internal/Collectors.java:1049)
at java.util.stream.ReduceOps$3ReducingSink.accept(java.base@9-internal/ReduceOps.java:169)
at java.util.HashMap$KeySpliterator.forEachRemaining(java.base@9-internal/HashMap.java:1600)
at java.util.stream.AbstractPipeline.copyInto(java.base@9-internal/AbstractPipeline.java:484)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@9-internal/AbstractPipeline.java:474)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(java.base@9-internal/ReduceOps.java:913)
at java.util.stream.AbstractPipeline.evaluate(java.base@9-internal/AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(java.base@9-internal/ReferencePipeline.java:511)
at org.languagetool.rules.spelling.SpellingCheckRule.updateIgnoredWordDictionary(SpellingCheckRule.java:108)
at org.languagetool.rules.spelling.SpellingCheckRule.addIgnoreTokens(SpellingCheckRule.java:100)
at ca.uqac.lif.textidote.rules.CheckLanguage.(CheckLanguage.java:94)
at ca.uqac.lif.textidote.Main.mainLoop(Main.java:313)
at ca.uqac.lif.textidote.Main.main(Main.java:96)
Simple text file 👍
simple test CONF'11 etc.
Simple dictionnary
CONF'11
CONF
abcde
Hi again. Hope my 'issues' are helps to improve texidote.
It would be nice if the line references are also visible on the HTML output
Cheers
Either by a command line argument or from an external text file. Each rule has a unique ID, so this should be easy.
I wanted to look into fixing my bug but I'm not an expert in Java, and simply running ant yields a lot of errors:
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
Buildfile: /home/jcelerier/perso/textidote/build.xml
ant-contrib:
[echo] ant-contrib is not installed. Downloading...
[mkdir] Created dir: /home/jcelerier/perso/textidote/lib
[get] Getting: http://sylvainhalle.github.io/AntRun/dependencies/ant-contrib-1.0b3-bin.zip
[get] To: /home/jcelerier/perso/textidote/lib/ant-contrib-1.0b3-bin.zip
[unzip] Expanding: /home/jcelerier/perso/textidote/lib/ant-contrib-1.0b3-bin.zip into /home/jcelerier/perso/textidote/lib
xmltask:
[get] Getting: http://sylvainhalle.github.io/AntRun/dependencies/xmltask.jar
[get] To: /home/jcelerier/perso/textidote/lib/xmltask.jar
init:
[echo] Your extension folder is /usr/java/packages/lib/ext
check-rt:
[echo] Local bootstrap JAR is not present
compile:
[mkdir] Created dir: /home/jcelerier/perso/textidote/Source/Core/bin
[javac] Compiling 30 source files to /home/jcelerier/perso/textidote/Source/Core/bin
[javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:51: error: cannot find symbol
[javac] import ca.uqac.lif.util.CliParser;
[javac] ^
[javac] symbol: class CliParser
[javac] location: package ca.uqac.lif.util
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:52: error: package ca.uqac.lif.util.CliParser does not exist
[javac] import ca.uqac.lif.util.CliParser.Argument;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:53: error: package ca.uqac.lif.util.CliParser does not exist
[javac] import ca.uqac.lif.util.CliParser.ArgumentMap;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:24: error: package org.languagetool does not exist
[javac] import org.languagetool.JLanguageTool;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:25: error: package org.languagetool does not exist
[javac] import org.languagetool.Language;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:26: error: package org.languagetool does not exist
[javac] import org.languagetool.MultiThreadedJLanguageTool;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:27: error: package org.languagetool.rules does not exist
[javac] import org.languagetool.rules.RuleMatch;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:28: error: package org.languagetool.rules.spelling does not exist
[javac] import org.languagetool.rules.spelling.SpellingCheckRule;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:47: error: cannot find symbol
[javac] /*@ non_null @*/ protected JLanguageTool m_languageTool;
[javac] ^
[javac] symbol: class JLanguageTool
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:77: error: cannot find symbol
[javac] public CheckLanguage(/*@ nullable @*/ Language lang, /*@ non_null @*/ List<String> dictionary) throws UnsupportedLanguageException
[javac] ^
[javac] symbol: class Language
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:105: error: cannot find symbol
[javac] public CheckLanguage(/*@ nullable @*/ Language lang) throws UnsupportedLanguageException
[javac] ^
[javac] symbol: class Language
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:20: error: package org.languagetool does not exist
[javac] import org.languagetool.Language;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:21: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.AmericanEnglish;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:22: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.AustrianGerman;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:23: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.BritishEnglish;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:24: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.CanadianEnglish;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:25: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.Dutch;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:26: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.French;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:27: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.GermanyGerman;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:28: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.Portuguese;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:29: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.Spanish;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:30: error: package org.languagetool.language does not exist
[javac] import org.languagetool.language.SwissGerman;
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:45: error: cannot find symbol
[javac] /*@ nullable @*/ public static Language getLanguageFromString(String s)
[javac] ^
[javac] symbol: class Language
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:104: error: cannot find symbol
[javac] CliParser cli_parser = new CliParser();
[javac] ^
[javac] symbol: class CliParser
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:104: error: cannot find symbol
[javac] CliParser cli_parser = new CliParser();
[javac] ^
[javac] symbol: class CliParser
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:105: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("html").withDescription("\tFormats the report as HTML"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:106: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("no-color").withDescription("Disables colors in ANSI printing"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:107: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("check").withArgument("lang").withDescription("Checks grammar in language lang"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:108: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("dict").withArgument("file").withDescription("Load dictionary from file"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:109: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("detex").withDescription("Detex input file"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:110: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("map").withArgument("file").withDescription("Output correspondence map to file"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:111: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("read-all").withDescription("Don't ignore lines before \\begin{document}"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:112: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("replace").withArgument("file").withDescription("Apply replacement patterns from file"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:113: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("quiet").withDescription("Don't print any message"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:114: error: cannot find symbol
[javac] cli_parser.addArgument(new Argument().withLongName("help").withDescription("\tShow command line usage"));
[javac] ^
[javac] symbol: class Argument
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/Main.java:115: error: cannot find symbol
[javac] ArgumentMap map = cli_parser.parse(args);
[javac] ^
[javac] symbol: class ArgumentMap
[javac] location: class Main
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:85: error: cannot find symbol
[javac] m_languageTool = new MultiThreadedJLanguageTool(lang);
[javac] ^
[javac] symbol: class MultiThreadedJLanguageTool
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:90: error: package org.languagetool.rules does not exist
[javac] for (org.languagetool.rules.Rule rule : m_languageTool.getAllActiveRules())
[javac] ^
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:92: error: cannot find symbol
[javac] if (rule instanceof SpellingCheckRule)
[javac] ^
[javac] symbol: class SpellingCheckRule
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:94: error: cannot find symbol
[javac] ((SpellingCheckRule) rule).addIgnoreTokens(dictionary);
[javac] ^
[javac] symbol: class SpellingCheckRule
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:115: error: cannot find symbol
[javac] List<RuleMatch> matches = null;
[javac] ^
[javac] symbol: class RuleMatch
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/CheckLanguage.java:129: error: cannot find symbol
[javac] for (RuleMatch rm : matches)
[javac] ^
[javac] symbol: class RuleMatch
[javac] location: class CheckLanguage
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:49: error: cannot find symbol
[javac] return new AmericanEnglish();
[javac] ^
[javac] symbol: class AmericanEnglish
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:53: error: cannot find symbol
[javac] return new CanadianEnglish();
[javac] ^
[javac] symbol: class CanadianEnglish
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:57: error: cannot find symbol
[javac] return new BritishEnglish();
[javac] ^
[javac] symbol: class BritishEnglish
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:61: error: cannot find symbol
[javac] return new French();
[javac] ^
[javac] symbol: class French
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:65: error: cannot find symbol
[javac] return new Spanish();
[javac] ^
[javac] symbol: class Spanish
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:69: error: cannot find symbol
[javac] return new GermanyGerman();
[javac] ^
[javac] symbol: class GermanyGerman
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:73: error: cannot find symbol
[javac] return new SwissGerman();
[javac] ^
[javac] symbol: class SwissGerman
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:77: error: cannot find symbol
[javac] return new AustrianGerman();
[javac] ^
[javac] symbol: class AustrianGerman
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:81: error: cannot find symbol
[javac] return new Dutch();
[javac] ^
[javac] symbol: class Dutch
[javac] location: class LanguageFactory
[javac] /home/jcelerier/perso/textidote/Source/Core/src/ca/uqac/lif/textidote/rules/LanguageFactory.java:85: error: cannot find symbol
[javac] return new Portuguese();
[javac] ^
[javac] symbol: class Portuguese
[javac] location: class LanguageFactory
[javac] 52 errors
[javac] 1 warning
BUILD FAILED
/home/jcelerier/perso/textidote/build.xml:188: Compile failed; see the compiler error output for details.
Hello
It would be useful if the code also processed included sub files via the \input
command
For example at the moment a master document such as
\documentclass[11pt]{article}
\begin{document}
\section{Introduction}
\input{Intro.tex}
\section{Conclusion}
\input{Conclusion.tex}
\end{document}
would only analyse section headers. The paragraphs etc which are contained in sub files Intro.tex
and Conclusion.tex
are ignored. At the moment textidote has to be run individually on each independent file which takes time. A feature enhancement would take sub files into account.
Many thanks
Many thanks for the great tool.
I am a Windows user. I tried to run it as described i.e. install example.tex and the textdote.jar in the same folder and try to run the command from Texmaker user command. It says "Error : could not start the command : $ java -jar textidote.jar --html example.tex > report.html"
Could you please support me?
Many thanks in advance
best regards
Feras
See the TODOs in the code for AnnotatedString.removeLine()
. Since TeXLint only creates single-line ranges, this is not very urgent.
The first pre-processing step should also remove environments that start with \begin{comment}
Just like textbf
and others
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.