Instead of annoying the user with an automatically created note in the output
document which she needs to delete manually, determine the document language
automatically for documents that use CJK. This is done using a heuristic which
roughly counts the number of characters in each language and sets the one that
is used most often. This is not perfect, but it works for the two major use
cases: A document with only some CJK parts (in this case the babel language is
used), and a document which is mainly written in one CJK language. It is only
a minor problem if the heuristic is wrong, since the TeX export is still
correct, and there is no spell checking support for CJK anyway.
Now all regression tests do pass except for some relative path issues
depending on the location of the build directory.
The previous output was read correctly by LyX as well, but the new version is
more similar to the files written by LyX. Also update TODO with recent file
format changes.
Commit 7cfac95 got rid of empty lines that were created by removing \usepackage
statements. However, it added an additional newline in case the \usepackage
was not at the end of the line. This is now fixed.
The old fix was incomplete (\verb~\~ was translated to \verb~~ in roundtrip).
The real cause for this bug (and also the mistranslation of \href{...}{\}})
was the misbehaviour of Token::character() (see comment in Parser.h): This
method even returns a character if the category is catEscape, and this is not
wanted in most (all?) cases.
If this option is given, included files will be copied to the output directory.
Also -roundtrip is now allowed with given output file.
-copyfiles is useful if you want to ensure that no file (not even an included
one) is overwritten by a subsequent export from LyX. Both changes are needed
for unit tests that do not write to the source directory.
The input and output file names of tex2lyx may be relative. In this case,
getMasterFilePath() and getParentFilePath() return relative paths as well.
Now the file name translation logic for all kinds of included files can
cope with that.
If there was an encoding set by the inputenc package, it must not be ignored.
Now all tex2lyx test cases can be exported to .tex again by LyX (although
there are still some differences in the .lyx output).
It is invoked by 'make check' (automake only, it would be nice if someone
could add it to cmake as well), or by calling
python src/tex2lyx/test/runtests.py <path to tex2lyx binary>
by hand. Currently, it does not compare the output (this comes later).
The added .lyx files are from tex2lyx around mid of april, so that you
can see the regressions of the current version if you run the test
yourself (simply run git diff afterwards).
The home made test runner is quite stupid, but better than nothing.
Feel free to improve it or replace it with something better, as long
as running it stays as simple as now.
- tex2lyx/text.cpp:
- fix bug that swallowed valid braces
- the encoding is "Bg5" not "BIG5"
- add and update comments
- CJK.tex: add an example for the Bg5 encoding
- Preamble.cpp/:
- move list definition out of anon namespace
- declare lists and a function in the class
- text.cpp: remove the now already defined list
- Parser.cpp: \verb can have any character as delimiter (except of ASCII letters) not only '+', therefore partly revert [3943b887/lyxgit] and fix it for all cases
Preamble.cpp:
- support the font scaling
- improve coding style
text.cpp: - improve logic/coding style
XeTeX-polyglossia.tex:
- add scaling
- change document so that it is compilable using the Libertine font
Instead of adding the extra '\n' to tex2lyx, we should remove it from
BufferParams.cpp because it was introduced there unintendedly in d7eaaba9
(Juergen Spitzmueller; "support for CJK font argument"; Jun 5 2008).
This partly reverts commit c2810f922665c591a7c32d4c679e58e55132505a.
Fix commit [aa9fed93/lyxgit]: it is never a good idea to call substr(4) on a string without checking its length. Moreover, it is even better in this case to check that the first letters are "text" as the reminder of the code assumes...
- tex2lyx/Preamble.cpp/h: not all new header definitions since fileformat 413 have yet been added to texl2yx, so do it now; also change some new default values
- bugfix for the parsing of polyglossia's paragraph environments
- new support for polyglossia's language change commands \textxxx
- XeTeX-polyglossia.tex: add more testcases and add a missing \end
objects. The problem that led to the leak is that these objects can be held in
memory long after the Buffer that created them is gone, mostly due to their
use in the CutStack. So they were previously held in a storage facility, the
DocumentClassBundle. Unfortunately, they were now being created too often,
especially by cloning. It's not really a leak, because they're accessible, but
we weren't ever destroying them.
This new approach uses a shared_ptr instead.
Thanks to Vincent for pointing out const_pointer_cast.
While cppcheck did not turn out any suspicious error messages, using
the "performance" flag highlighted several nitpicks in three categories
* do not use it++ for iterators, ++it is better
* do not use size() to test for emptyness, empty() is here
* do not use "const T" as a function parameter, "const & T" is better
I doubt that any of these is a real performance problem, but the code is cleaner anyway.
This is a part of bug #8081: Translate cells in
\begin{sideways}...\end{sideways} to native syntax. The turn environment
comes in a later commit, since this one os suitable for backporting.
This is not needed, since LyX supports comments in math. Data loss with math
comments containing a backslash in LyX has been fixed as well.
The test case was found in bug #8104.
I introduced this bug in r40091 where support for empty dates was added.
I also noticed that the title_layout_found flag was not properly passed down
to all variants of parse_text*. Since this is rather a global variable I
placed it into the preamble class.
The test case of bug #8104 shows other problems as well, but those are no
regressions and will be fixed separately.
OK for branch?
It is broken since the latest file format update (neither did Uwe run a test
after updating the file format, nor did I after undoing my accidental change).
The reason it was broken: the bool version of write_attribute() is chosen
for "0" instead of the string version, so each table used rotate="true".
Math commands need it as well as text commands. At the same time, this
further unifies the checking for termination and fixes cases of wrong
output (e.g. for 0x2005).
If \hline is entered, do not create an unknown inset, but increase the number
of hlines of the current row if that is allowed. The same idea is applied to
copy-paste (not part of the bug report).
This is also a test for committing via git.
Setting up .gitignore or .git/info/excludes is something that should
be done. Not doing it makes it a lot harder to see actual new files
that should be added.
Signed-off-by: Lars Gullik Bjønnes <larsbj@gullik.org>
- Parser.cpp: - new function to parse verbatim environments
- test/test-structure.tex: updated example
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40850 a592a061-630c-0410-9148-cb99ea01b6c8
The type of citation engine is determined by the citation package
being used and, in the case of natbib, its options.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40593 a592a061-630c-0410-9148-cb99ea01b6c8
tex2lyx does not need a -p command since it detects partial files automatically.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40591 a592a061-630c-0410-9148-cb99ea01b6c8
from the citation package being used or from a \bibliographystyle
command in the preamble, if any>
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40499 a592a061-630c-0410-9148-cb99ea01b6c8
now) and move more packages to the new exclude mechanism.
The remaining ones are not so easy.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40442 a592a061-630c-0410-9148-cb99ea01b6c8
A complete fix is currently impossible because LyX assumes that all longtable
captions are in the first head.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40361 a592a061-630c-0410-9148-cb99ea01b6c8
registration mechanism, so that they are only swallowed if LyX will load them.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40315 a592a061-630c-0410-9148-cb99ea01b6c8
If we want to look at the token after the next token, it may be needed
to call tokenize_one() twice and not only once as done in good().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40234 a592a061-630c-0410-9148-cb99ea01b6c8
replace home made keyval parsing with the more robust process_keyval_opt().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40185 a592a061-630c-0410-9148-cb99ea01b6c8
to occur in pairs.
If you change something in tex2lyx please don't commit without running the
tests and ensuring that no warnings or errors are written on stderr.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40177 a592a061-630c-0410-9148-cb99ea01b6c8
- support for \makebox
- fix import of boxes without an inner box (the on-screen display was broken because of wrong default width setting)
- fix parsing of \framebox{content}, which LyX does not support yet - we have to use ERT
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40150 a592a061-630c-0410-9148-cb99ea01b6c8
Of course this will only work if output_changes was true when creating the
.tex file.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40139 a592a061-630c-0410-9148-cb99ea01b6c8
Also a warning "\end{foo} does not match \begin{bar}" is gone.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40133 a592a061-630c-0410-9148-cb99ea01b6c8
the complete document whether LyX will load them or not.
Use the mechanism for the color package (fixes the color part of bug #7845).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40095 a592a061-630c-0410-9148-cb99ea01b6c8
but the title commands in the preamble are still not recognized.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40093 a592a061-630c-0410-9148-cb99ea01b6c8
- update preamble to the features used in the file
- add some floats
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40024 a592a061-630c-0410-9148-cb99ea01b6c8
(info I missed in r39965: beraserif.sty does not exist on CTAN, Bera's sansserif is named "berasans" and is already supported by tex2lyx)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39968 a592a061-630c-0410-9148-cb99ea01b6c8
(the tex2lyx support in branch for \printnomenclature is currently broken so this must be backported to branch for 2.0.2, OK Richard?)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39960 a592a061-630c-0410-9148-cb99ea01b6c8
- support for box background color, document fontcolor and background color (note_fontcolor was already supported)
- add colors and a nested box to the testfile
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39949 a592a061-630c-0410-9148-cb99ea01b6c8
406: Convert noweb layouts to new syntax (untested, see bug #7838)
407: Nothing to do (empty lyx2lyx conversion)
408: Activated the already existing script inset code
409: Nothing to do (tex2lyx does not support XeTeX)
410: Nothing to do (the old code already used the new layouts)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39923 a592a061-630c-0410-9148-cb99ea01b6c8
402: Nothing to do (tex2lyx does not support bibtotoc)
403: Nothing to do (the old code already used the new layouts, bug #7780)
404: Nothing to do (write new prettyref syntax)
405: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39920 a592a061-630c-0410-9148-cb99ea01b6c8
400: Convert \lyxline to new InsetLine syntax
401: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39919 a592a061-630c-0410-9148-cb99ea01b6c8
394: Added use_makebox parameter to InsetBox
395: Nothing to do (empty lyx2lyx conversion)
396: Nothing to do (empty lyx2lyx conversion)
397: Nothing to do (tex2lyx does not support nameref)
398: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39916 a592a061-630c-0410-9148-cb99ea01b6c8
379: Nothing to do (html output changes)
380: Nothing to do (empty lyx2lyx conversion)
381: Nothing to do (empty lyx2lyx conversion)
382: Activated already prepared notefontcolor code
383: Nothing to do (empty lyx2lyx conversion)
384: Nothing to do (empty lyx2lyx conversion)
385: Nothing to do (empty lyx2lyx conversion)
386: Nothing to do (empty lyx2lyx conversion)
387: Nothing to do (empty lyx2lyx conversion)
388: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39912 a592a061-630c-0410-9148-cb99ea01b6c8
369: Nothing to do (empty lyx2lyx conversion)
370: Nothing to do (empty lyx2lyx conversion)
371: Added \use_mhchem parameter
372: Nothing to do (empty lyx2lyx conversion)
373: Nothing to do (the old version was wrong since it used the new g-brief
layout files with the old file format)
374: Nothing to do (html output changes)
375: Nothing to do (empty lyx2lyx conversion)
376: Nothing to do (empty lyx2lyx conversion)
377: Nothing to do (empty lyx2lyx conversion)
378: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39911 a592a061-630c-0410-9148-cb99ea01b6c8
357: Added comment about \underbar and \ulem
358: Nothing to do (empty lyx2lyx conversion)
359: Nothing to do (empty lyx2lyx conversion)
360: Nothing to do (empty lyx2lyx conversion)
361: Nothing to do (empty lyx2lyx conversion)
362: Nothing to do (empty lyx2lyx conversion)
363: Nothing to do (empty lyx2lyx conversion)
364: Nothing to do (empty lyx2lyx conversion)
365: Nothing to do (empty lyx2lyx conversion)
366: Nothing to do (empty lyx2lyx conversion)
367: Nothing to do (empty lyx2lyx conversion)
368: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39910 a592a061-630c-0410-9148-cb99ea01b6c8
352: New syntax for InsetIndex and printindex command inset
353: Nothing to do (empty lyx2lyx conversion)
354: Nothing to do (empty lyx2lyx conversion)
355: Nothing to do (empty lyx2lyx conversion)
356: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39897 a592a061-630c-0410-9148-cb99ea01b6c8
346: Nothing to do (swiss german is not supported by babel/polyglossia)
347: Nothing to do (empty lyx2lyx conversion)
348: Nothing to do (empty lyx2lyx conversion)
349: Nothing to do (empty lyx2lyx conversion)
350: Nothing to do (empty lyx2lyx conversion)
351: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39896 a592a061-630c-0410-9148-cb99ea01b6c8
List environments (as the one in the bug report) can't
be handled correctly in tex2lyx as long as LyX does not allow contents
after the environment start but before the first \item.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39871 a592a061-630c-0410-9148-cb99ea01b6c8
The init_package before easyParse is necessary to initiate the default
values for userdir and sysdir, which are now part of the help message.
This step would be necessary anyway if we ever internationalize tex2lyx.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39799 a592a061-630c-0410-9148-cb99ea01b6c8
Read the comment of odocstream in src/support/docstream.h if you want to
know why this fix is correct.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38335 a592a061-630c-0410-9148-cb99ea01b6c8
through the rc setting \icon_set. Preferences dialog will follow shortly.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38038 a592a061-630c-0410-9148-cb99ea01b6c8
counting when exporting to latex. This is done for the code comprised
between \begin{document} and \end{document}, while the preamble code
still needs manual calls to TexRow::newline() for registering new lines.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37584 a592a061-630c-0410-9148-cb99ea01b6c8
If an optional argument can be followed by another one, we need to use
getFullOpt(). Otherwise it would not be possible to parse \foo[][bar].
Remove getOptContent to avoid confusion (it does exactly the same as
getArg('[', ']') which is used in most places.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37354 a592a061-630c-0410-9148-cb99ea01b6c8
Try to recognize modules.
Again, this is needed because the complete LyX preamble is ignored.
It is not possible to recognize a module in all cases, but at least the simple
ones are handled now. As a prerequisite I also had to revive the filling of
known_environments. This has been removed (probably by accident) some time ago.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37306 a592a061-630c-0410-9148-cb99ea01b6c8
- translate the arguments of \texorpdfstring, so that the floating footnote
code gets enabled
- honor the ForcePlainLayout flag of insets like the Index inset
- remove hardcoded \url support, this is handled by the general Flex inset code
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37297 a592a061-630c-0410-9148-cb99ea01b6c8
parser discards all needed packages like calc.sty or framed.sty, so the
resulting document would be uncompilable with those boxes as ERT.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37287 a592a061-630c-0410-9148-cb99ea01b6c8
accumulate for each round trip, since LyX writes \protect if needed)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37214 a592a061-630c-0410-9148-cb99ea01b6c8
LyX would output the parsed stuff unconditionally, so we must not translate
it in LyX document settings.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37191 a592a061-630c-0410-9148-cb99ea01b6c8
- Add missing babel synonyms (taken from a standard TeXLive 2010 install).
Some synonyms might still be missing (if they are defined not by babel
itself, but additional packages). Adding these is now simple: Only
known_languages and known_coded_languages need to be touched.
- Translate babel language name arguments of \foreignlanguage and
\selectlanguage to LyX names.
- Translate second argument of \foreignlanguage to LyX.
- Cleanup mixed language names in the preamble parser: Now all checks are
done with LyX names, not a mix of babel and LyX names. This sets correct
quotes even if the language as given as an alias.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37188 a592a061-630c-0410-9148-cb99ea01b6c8
lib/doc/Math.lyx, since tex2lyx swallows the LyX part of the preamble, and
thus \shortcut would not be defined.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37149 a592a061-630c-0410-9148-cb99ea01b6c8
Fix missing \size reset after sectioning environments.
Fix invalid \lang default (use english instead, as in the preamble)
Convert hard coded layout output of caption insets to Context class.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37147 a592a061-630c-0410-9148-cb99ea01b6c8
misinterpreting "\}" as "}" when it occured inside a pair of unescaped
braces, like in "\code{@\{*\}r||p\{1in\}@\{*\}}".
The reason for this bug is that Token::character() behaves differently in
tex2lyx than in mathed. See the comment in Parser.h for a more general fix.
For now I played on the safe side and only changed those places where I
definitely know that the old code was wrong.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37117 a592a061-630c-0410-9148-cb99ea01b6c8
Improve heuristic for outputting \bibliographystyle: Now it is suppressed
if \bibliography follows immediately, since LyX adds it automatically in that
case.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37066 a592a061-630c-0410-9148-cb99ea01b6c8
- Replace special verbatim commands by standard LaTeX, since it would be
extremely difficult to make tex2lyx understand them)
- Comment duplicated \bibliography{xampl}, since LaTeX cannot handle two
\bibliography calls
- Fix a regression with spaces after commands, introduced in r36943
- Parse \multicolumn with space/comments between two arguments correctly
- Parse optional arguments correctly if there are space or comments between
the command and the argument
- Remove duplicate "LyX" phrase handling (I overlooked that in r37052)
- Add new commands created with \let to the list of known commands. This is
needed to parse the arguments correctly
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37064 a592a061-630c-0410-9148-cb99ea01b6c8
The automatic replacement in LyX is pretty broken (see bug 4752).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37055 a592a061-630c-0410-9148-cb99ea01b6c8
Please don't add new features to tex2lyx without testing.
In this case, the test case was even provided in test-insets.tex.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37051 a592a061-630c-0410-9148-cb99ea01b6c8
The reasons for doing this in tex2lyx instead of an external script are:
- Correct choice of latex/pdflatex export
- Using the correct LyX executable regardless of running inplace or from an
installation, or with or without version suffix
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37049 a592a061-630c-0410-9148-cb99ea01b6c8
344: Remove pdf_pagebackref header flag
345: Nothing to do (this is a docbook-only change)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37015 a592a061-630c-0410-9148-cb99ea01b6c8
335: Create space inset in new syntax
336: Nothing to do (empty lyx2lyx conversion)
337: Nothing to do (tex2lyx does use the display flag)
338-339: Nothing to do (empty lyx2lyx conversion)
340: Nothing to do (tex2lyx does not output empty layout names)
341-342: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37013 a592a061-630c-0410-9148-cb99ea01b6c8
331: Set the caption flag for longtable caption rows
332: Nothing to do (empty lyx2lyx conversion)
333: Nothing to do (tex2lyx did already use the new style names because it
uses the current layout files)
334: Nothing to do (tex2lyx did already produce the new format, since it
used the LaTeX paper names also in the output and did not suffer from
bug 4868)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37012 a592a061-630c-0410-9148-cb99ea01b6c8
324: Create newline inset in new syntax
325: Nothing to do (tex2lyx does not support the japanese language)
326-327: Nothing to do (empty lyx2lyx conversion)
328: Nothing to do (tex2lyx did never support embedding of files)
329-330: Nothing to do (empty lyx2lyx conversion)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37011 a592a061-630c-0410-9148-cb99ea01b6c8
321: Move leftlines/rightlines from column headers to cells
322: Nothing to do (tex2lyx does not produce plain layouts)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37009 a592a061-630c-0410-9148-cb99ea01b6c8
- support for \nocite (since format 309)
- add \nocite{*} option to testfile
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36960 a592a061-630c-0410-9148-cb99ea01b6c8
320: Support protected hfill
Detect other horizontal spaces that are already part of format 319
Add forgotton use_parbox tag to boxes (confuses lyx2lyx, but no lyx)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36949 a592a061-630c-0410-9148-cb99ea01b6c8