Georg Baum [Mon, 23 Mar 2015 20:28:04 +0000 (21:28 +0100)]
Make InsetSpecialChar names more consistent
This is the rersult of a discussion on the list. Now all special characters
have meaningful names, and it is clear that the LyX file syntax is not LaTeX.
When closing a document with the cursor near an icon info inset, LyX
may crash on loading again the same document. This is most probably due
to the fact that compressed svg icons are first uncompressed to a
temporary file before being used. The temporary file is then deleted
but something still expects to find it in place. The exact circumstances
that lead to the crash are unknown, and maybe there is also a race entering
the picture here. However, a document that always leads to a crash can be
found attached here: http://article.gmane.org/gmane.editors.lyx.devel/154566
This commit does not fix the cause of the crash but rather avoids it.
As a bonus, the svg icons used by LyX are not uncompressed anymore before
being used, speeding up startup time. This is not a problem, because Qt
can deal with compressed svg images.
Kornel Benko [Sun, 22 Mar 2015 18:04:16 +0000 (19:04 +0100)]
Test for undo crash in math env.
According to fix #9432, Scott found a new crash
1. start a new LyX document, english GUI
2. alt+m f to create a fraction
3. alt+m r to insert a root
4. undo
Georg Baum [Sun, 22 Mar 2015 09:22:31 +0000 (10:22 +0100)]
Let imagemagick detect file format (bug #2332)
Imagemagick detects the inut file format based on contents. Therefore it does
not make sense that we prefix the to be converted file name with the extension
(assuming that the file extension matches the imagemagick format name). This
breaks formats where the extension used by LyX does not match the imagemagick
format name.
Math Panels: revise the miscellaneous set of svg icons
- Restore proportion between icons, such that, for example, \imath
is not confused with a lower case 'l' or \textdegree with \circ
- Use real \mathbb and \mathcal TeX icons
I'll revise also the other sets in the Math Panels toolbar along
these lines. It is important to see whether a symbol has ascendents
or descendents or what is their relative size.
Georg Baum [Thu, 19 Mar 2015 20:44:25 +0000 (21:44 +0100)]
Implement DocIterator::backwardInset()
I thought I would need it to fix bug #9418, but once backwardInset() worked
it turned out that it is not needed. However, since it took me some time to
figure out the correct implementation I do not want to throw the result away.
Georg Baum [Wed, 18 Mar 2015 21:06:59 +0000 (22:06 +0100)]
Replace outdated LASSERT
The concept of rows and cols is no longer unique to mathed.
Each inset decides itself whether it is grid like or not, so we should not
interfere with this in the cursor slice.
Scott Kostyshak [Fri, 20 Mar 2015 04:13:50 +0000 (00:13 -0400)]
Assert if successful export but no output file
If LyX thinks the export was successful but no output file was
produced for preview, then something is wrong (most likely LyX
did not detect an error that occurred during export).
Scott Kostyshak [Wed, 18 Mar 2015 20:51:12 +0000 (16:51 -0400)]
Export/view a PDF even if error
A PDF is often still produced after a LaTeX error.
If there was an error when exporting a PDF, we now give an error
and the PDF (if it exists), where before we gave the error and
not the PDF. The GUI and command line behaviors are consistent:
in the GUI an error is given and the PDF is viewed; on the
command line, a non-zero exit code is given and a PDF is created.
This also solves what was in my mind an inconsistency: if the user
"updated" a document and there was an error, the resulting
PDF would be shown; but if the user viewed a document and there
was an error, the document would not be shown.
Note that this applies to all output formats, not just PDF.
For discussion, see:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg186454.html
Scott Kostyshak [Sat, 21 Feb 2015 05:00:51 +0000 (00:00 -0500)]
Improve log scanner to correctly report error
When scanning the LaTeX log, previously we only looked ahead 10 lines
after a "!" line and if we did not find a line number we did not count
an error. This lead to the problem that templates/ACM-sigplan.lyx was
showing a successful export and the PDF was shown (it is still
created despite the error). Now that the exit code of the latex
command is checked (as of the previous commit), an error is correctly
given, but by parsing the log better with this commit, a more
informative error is given.
Increasing the look-ahead to 15 lines leads to correct parsing of
the ACM-sigplan log. The excerpt in the log file where there are more
than 10 lines in-between the "!" line and the line number is below:
! Undefined control sequence.
\@toappear ...ent http://dx.doi.org/10.1145/\@doi
<argument> ...n is removed.]\par \else \@toappear
\fi \if \@reprint
\noinden...
Scott Kostyshak [Fri, 20 Mar 2015 04:40:01 +0000 (00:40 -0400)]
Check exit code of LaTeX process in LaTeX::run
Systemcall::startscript returns the exit code of the LaTeX command
that is run, but the return value was not being checked by
LaTeX::run. Instead, we relied on parsing log files. However, this
parsing is not perfect.
The return value is now checked and if the exit code of the command
is non-zero, an enum value is added to the return and the user is
notified of the error.
At a higher level, if the LaTeX command returns a non-zero exit code,
in the GUI a message such as
"Error while exporting format: PDF (LuaTeX)" will be given instead of
"Successful preview of format: PDF (LuaTeX)".
When run on the commandline, lyx -e lualatex example.lyx
will give "Error: LaTeX failed" and a non-zero exit code
where before it gave a zero exit code.
A real example of the bug this commit fixes is LyX's (as of this commit)
ACM-sigplan.lyx template.
Before this commit:
$ lyx -e pdf2 ACM-sigplan.lyx
[...snip...]
support/Systemcall.cpp (288): Systemcall: 'pdflatex "ACM-sigplan.tex"'
finished with exit code 1
$ echo $?
0
Starting with this commit:
$ mylyx master -e pdf2 ACM-sigplan.lyx
support/Systemcall.cpp (288): Systemcall: 'pdflatex "ACM-sigplan.tex"'
finished with exit code 1
Error: LaTeX failed
----------------------------------------
LaTeX did not run successfully. The command that was run exited with
error.
$ echo $?
1
Scott Kostyshak [Fri, 20 Mar 2015 06:03:51 +0000 (02:03 -0400)]
Remove output file in temporary folder on error
This commit solves two issues:
(1) A PDF from a previous run could have been the result of a command
that exited with error (e.g. sometimes pdflatex still produces a PDF if
it exits with error). If the "View" button were clicked a second time
without changing the .lyx file, then the checksum of the .tex file would
not have changed so LyX would show the PDF (which was created from the
first run that exited with error), and this time LyX would not report
the error (because the parsing of the logs only happens when the .tex
file is compiled).
(2) A myfile.tex that results in no output does not yield a myfile.pdf.
Thus, Any myfile.pdf in the temporary directory will not be overwritten.
Before this commit, the following scenario was possible: LyX runs
pdflatex which processes myfile.tex and no error is given so LyX opens
myfile.pdf. However, it could have been the scenario that pdflatex did
not exit with error and did not create myfile.pdf, in which case
whichever myfile.pdf is being shown is not correct. To see this bug in
action, start a new document, type "abc", view the PDF, delete "abc",
view the PDF (this correctly gives an error that empty output was
created), view the PDF again (this does not give an error because the
checksum has not changed). The PDF shown will contain "abc".
Note that the above also applies to DVI files and that the fix is
general.
- Use paths, not fonts. Have a look at the sqrt icon in the image attached
here http://thread.gmane.org/gmane.editors.lyx.devel/154179/focus=154183
to see what may happen when a font is not present on a given system.
- Make uniform the height of the parentheses.
- Move a couple of icons to the oxygen subdir (I was not sure it was Ok
replacing them. If yes, they can be simply deleted).
The problem came from the fact that Qt associates Interlingua to locale C.
Now, we do not rely anymore on the Qt locale to set the language. I suspect that the problem will still exist if the system locale is ia_IA.
It is better to introduce a dummy blank dir in TEXINPUTS rather than
appending a blank at the end. Even if I have checked that this is not
a problem with MikTeX, some other engine (maybe texlive, but I cannot
check) could not ignore this space and take it as the name of a dir.
In this case, TEXINPUTS would not end with an empty element and the
standard search path would not be inserted there.
Restore some inadvertently overwritten oxygen icons.
I did not notice that all icons in math/ are shared and in a0895046 I have
overwritten some of them. I am restoring them in the proper subdir.
Two of them, namely font.svgz and frac.svgz, give warnings that should
be addressed. Anyway, I see that these icons use fonts. They are better
substitued with paths (a menu entry in inkscape) because if the fonts
are missing on a system, the icons look different and, in general, they
may look ugly.
Georg Baum [Fri, 13 Mar 2015 17:34:39 +0000 (18:34 +0100)]
Fix stmaryrd operators with limits (bug 9458)
LyX did not display the limits of the big math operators defined by
stmaryrd.sty correctly. The reason for this was a missing check in
InsetMathSymbol::metrics(), where it is hardcoded which symbols use display
style limits and which symbols use inline limits. In an ideal world this
information would be contained explicitly in lib/symbols.
If a mask is missing, the TempFile class appends it to the filename.
This may be a problem with applications relying on the extension,
so explicitly add a mask.
You have to manually delete the lib/images/svg directory as git
tracks only files.
There may be warnings on the terminal due to some faulty icons that have
to be found and corrected. Moreover, some of the icons are not rendered
too well at the default size. These ones should be properly tweaked.
Kudos to Jürgen for putting together such a large number of icons.
If a compressed svg icon is present, load it instead of a png one.
Also introduce two more sizes (huge and giant icons) that should be
useful when using hires displays, as svg icons automatically scale
to the desired size without loss of quality.
Georg Baum [Wed, 11 Mar 2015 21:20:44 +0000 (22:20 +0100)]
Fix tex2lyx script output
tex2lyx did not use the InsetLayout for the script insets, so it did not know
that it had to use Plain Layout. However, there is still a possible pitfall:
InsetScript uses a hard coded plain layout for the InsetText constructor, so
if anybody would remove ForcePlain 1 and MultiPar false from the InsetLayout
then LyX would still write script insets with plain layout, but tex2lyx would
output standard layout again.
José Matos [Wed, 11 Mar 2015 13:41:10 +0000 (13:41 +0000)]
First step to make po python files to support both python 2 and python 3 (3.3+)
Most of the changes are related with dictionaries returning iterators instead of
lists. (Iterators and not views as I wrote in the previous commit message)
xrange -> range (since xrange is gone in python 3)
José Matos [Wed, 11 Mar 2015 12:04:46 +0000 (12:04 +0000)]
First step to make lyx2lyx code support both python 2 and python 3 (3.3+)
Most of the changes are related with dictionaries returning views instead of
lists.
xrange -> range (since xrange is gone in python 3)
The code that is special to support both python 2 and 3 is enclosed in a comment
\# Provide support for both python 2 and 3
and
\# End of code to support for both python 2 and 3
And so later it can be removed safely when python 2 is no longer supported.