Commit Graph

155 Commits

Author SHA1 Message Date
Enrico Forestieri
039de52ad9 Amend 58103cf2
The \underbar macro is a text mode macro that can also be used
in math mode. However, when inserting it in mathed, LyX helpfully
wraps it in a \text inset. One can dissolve such text inset and
the macro would appear in math mode without any problem. But the
output routine thinks that the user is shooting itself in the
foot and tries to protect him by wrapping \underbar in the
\lyxmathsym macro, whose definition is normally added to the
preamble when an unicode character is used in math mode.

Of course, this is not the case for \underbar and a compile
error arises. The easier solution is to simply add lyxmathsym as
a requirement for \underbar in lib/symbols, but this means
that the definition of \lyxmathsym would be added even when not
necessary (because in the validation routine we miss the info
about the current mode). The correct solution is acknowledging
the dual nature of \underbar as a text-mode macro that can also
be used in math mode. Luckily the correct solution is almost as
easy as the easier one and is what is done in this commit.
2023-11-09 00:21:21 +01:00
Enrico Forestieri
58103cf214 Allow using the text properties dialog in mathed
Until now only the color of the text could be changed by using
the text properties dialog. This commit allows changing all
other properties except for strikethrough. It is possible to
also add underlining with the limitation that the changes
accumulate. This requires other work but I think that underlining
and strikethrough are not so important in mathed and can be
refined at a later time.

Fixes #12958
2023-11-06 18:04:44 +01:00
Enrico Forestieri
4fffa458ae Load esint when using \dotsint in math.
Fixes bug #12863.
2023-08-10 18:43:47 +02:00
Jean-Marc Lasgouttes
d59046512c Use macros with parameters for modulo macros
It turns out that it is possible to use macros with parameters in lib/symbols.

I use this to simplify the use of mod-like macros.

Update documentation.
2023-07-21 23:58:28 +02:00
Thibaut Cuvelier
c77872f314 Cleanup following the removal of HTML entities
The remaining part that was not handled in the previous commit. It focuses on lib/symbols.
2022-12-25 20:48:14 +01:00
Jean-Marc Lasgouttes
9376f0203d Merge branch 'killqt4'
Remove all trace of Qt4 support. The different elements have been
considered carefully before removal.

The only changes that need to be done concern Windows and macOS
compilation instruction and will need to be taken care of by the
respective maintainers before prerelease.

The file TODO.killqt4 lists what remains to be done.
2022-11-28 15:19:41 +01:00
Jean-Marc Lasgouttes
ec767f02a0 Support macros from hepnames and hepparticles packages
This macros are important for particle physicists. Note that the
package hepparticles as distributed in recent texlive does not work
(see #11804) and need to be patched. This is however not something we
can do, and any physicist wanting to use this will have patched his
own version I guess.

I contacted Andy Buckley, the author of the package, who answered that
he is aware of the issue but does not have time right now to fix it.
The workaround is straightforward: on line 176 of hepparticles.sty,
replace "\updefault" by "n".

Two parts:
- add *lots* of definitions to lib/symbols
- add hepparticles and hepnames as simple features in LaTeXFeatures.

The definitions are courtesy of @renyhp, and extracted from the
aforemented packages:
https://www.ctan.org/pkg/hepparticles
https://www.ctan.org/pkg/hepnames

Fixes bug #11804.
2022-11-27 19:47:02 +01:00
Jean-Marc Lasgouttes
7d196fea77 Fix handling of codepoints 9, 10, 12, 13
Qt >= 5 refuses to display them. We work around this in lib/symbols
already, but make sure we do not try to display math glyphs at these
code points anyway.

Fixes bug #8493.
2022-11-20 20:53:55 +01:00
Thibaut Cuvelier
3917cab408 symbols: fix a type for \Im 2022-11-20 16:32:58 +01:00
Thibaut Cuvelier
68ff3436c9 symbols: update HTML entities and Unicode encodings for Greek letter variations. 2021-12-08 02:02:46 +01:00
Thibaut Cuvelier
5b62d43835 symbols: don't encode vertical bars as nonexistent HTML entities.
Excerpt from https://www.lyx.org/trac/ticket/12221#comment:11

Created by lynx
2021-12-08 02:02:46 +01:00
Thibaut Cuvelier
710fb50118 Fix the Unicode encoding of Rightarrow
Author: lynx

Related issue: 12411.
https://www.lyx.org/trac/ticket/12411
2021-10-29 21:29:42 +02:00
Thibaut Cuvelier
ed052a7691 Fix the Unicode encoding of langle/rangle
Author: lynx

Related issue: 12411.
https://www.lyx.org/trac/ticket/12411

The previous mapping was for HTML 4, the new one is for HTML 5.
2021-10-28 23:52:30 +02:00
Enrico Forestieri
c1e38c4f6c Add support for \bigtimes
Fixes #11223
2021-02-04 23:20:01 +01:00
Enrico Forestieri
8a826918de Amend f96b99dc 2020-08-28 17:39:01 +02:00
Thibaut Cuvelier
d75ff9931d Revert "Support the mathbbm font."
This reverts commit e709a6626e.
2020-07-28 18:01:38 +02:00
Thibaut Cuvelier
e709a6626e Support the mathbbm font.
Should just be able to read formulae, not add it from the GUI, as it's mostly redundant with mathds and mathbb.
2020-07-27 03:15:00 +02:00
Enrico Forestieri
585da1de4a Fix typos in lib/symbols
This amends e8ee0100 and f96b99dc.
2020-07-24 12:57:00 +02:00
Jean-Marc Lasgouttes
f96b99dcb3 Implement properly \limits and \nolimits
These are now properties of insets that can be operators :
InsetMathSymbols, InsetMathDecoration (for over/underbrace) and
InsetMathMacro (for its contents).

Each of these has a limit_ member that allows to remember a limit
forcing and a member defaultLimits() that indicates what to do in the
absence of such forcing. Moreover the write() method calls
writeLimits().

This allows to simplify the definitions of integrals in lib/symbols by
defining the integrals as macros of their "op" version, as it is done in
the style files.

Also, many hardcoded assumptions can now be removed.

The handling of LFUN_MATH_LIMITS is now done in InsetNest, which tries
successively to apply the limit change to (1) the character after
cursor, (2) the character before cursor and (3) the character at the
end of the inset (useful for script insets?)

The new code allows to define
  \newcommand\int{\intop\limits}
but not
  \newcommand\makelimits#1{#1\limits}

It is also possible to type explicitly \limits or \nolimits to modify
a symbol.
2020-07-20 23:20:26 +02:00
Jean-Marc Lasgouttes
e8ee0100fc Implement variable size bigops
The goal is to reproduce the change of size of operators like \sum wen they
are in display style.

The syntax of the symbols file has been extended to allow for two code
points (like 80|88 for \sum). In this case, the second one will be
used in display style.

Update the symbols file to handle all bigops from cmex, esint, wasy and
stmaryrd.

Let the code for math symbol inset handle symbols which can change size,
using the information from the symbols file.
2020-07-17 22:25:18 +02:00
Thibaut Cuvelier
8f89768211 Fix in symbols handling: parse the XML entity with \def. 2020-06-19 08:22:56 +02:00
Thibaut Cuvelier
718eede94b MathML: Convert HTML entities to XML entities. 2020-06-18 19:37:08 +02:00
Enrico Forestieri
57272e837b Correctly display \dag and \ddag in mathed
They are synonyms for \dagger and \ddagger and are used
in Sect. 13.1 of the math manual.
2020-06-13 16:48:54 +02:00
Enrico Forestieri
5a80f7bb6a Add support for the doublestroke package
This commit adds the mathed command \mathds that selects a
font more appropriate than \mathbb for typesetting the
mathematical symbols for the natural (N), whole numbers (Z),
rational numbers (Q), real numbers (R), complex numbers (C),
and some others.

As in the \mathbb case, only capital letters are supported,
but in addition one can also typeset a symbol often used for
representing the indicator function (\mathds{1}) and the
letters a, h, k.

Fixes bug #11887.
2020-06-11 16:42:31 +02:00
Pavel Sanda
20ab606975 wasy10 font: fix glyphs codepoints 9,10,12,13.
92680495b follow-up.

pointer:	9 -> 170
bell:		10 -> 171
quarternote:	12 -> 172
halfnote:	13 -> 174

This should be the final one.
2018-03-26 21:54:46 +02:00
Pavel Sanda
0da254c811 stmary10 font: fix glyphs codepoints 10,12,13.
92680495b follow-up.

minuso: 10 -> 171
sslash: 12 -> 172
bbslash:13 -> 174
varcurlywedge: 9 -> 254 -> 170 (first move by Georg)
2018-03-23 10:18:02 +01:00
Pavel Sanda
92680495bb esint10: attempt on to fix empty symbol glyphs.
With advent of qt5 glyphs on codepoints 10, 12, 13 can't be shown anymore.

In this patch we copy the glyph pairs to new codepoints:
dotsint: 19->41 (this one was already moved by Goerg, now moving to the same block)
oint: 11->43
oiint:13->45

I couldn't find fix where both qt4 & qt5 would show correct results,
so this patch fixes qt5 situation, but breaks qt4, which hopefully
won't be needed for master.
Testing and debuging is somewhat tricky, becuse qt sometimes prefer to
load global fonts in /usr/share while ignoring the local git tree.

To be continued in other fonts.

Related reports:
https://www.lyx.org/trac/ticket/8493
https://bugreports.qt.io/browse/QTBUG-66266
2018-03-22 02:26:46 +01:00
Jean-Marc Lasgouttes
4a935ed768 Fix metrics of math characters with 0 width
It seems that QTextLayout does not handle properly a single character
with 0 width. This breaks drawing of things like \not.

Actually the problem had been worked around already in lib/symbol. The
work around can therefore by removed now.
[additionally, remove extra spacing from \mapsto, \Mapsto]
2017-01-20 10:53:06 +01:00
Guillaume Munch
f77e5733cf Set mathrel for a few more lib/symbols
Improve display of textmode macros in lib/symbols
2017-01-03 20:35:41 +01:00
Guillaume Munch
e02f287f8b Add InsetMathClass to the list of math completions 2016-12-20 00:15:59 +01:00
Guillaume Munch
a592f6dc06 Fix display of \slash inside different fonts
Also give slash a proper symbol
2016-11-21 00:08:11 +01:00
Guillaume Munch
a9eb87a89d Correct computation of math font size
Move math style to FontInfo and compute the font sizes for scriptstyle and
scriptscriptstyle according to standard proportions: 0.73 and 0.55.

This is simpler and more accurate. It also fixes the font size of
${\scriptscriptstyle {\textstyle A}}A$ which exposed the limitations of the
previous approach.
2016-11-21 00:02:35 +01:00
Guillaume Munch
a78c0457ac lib/symbols: fix \arrownot 2016-11-17 22:47:26 +01:00
Jean-Marc Lasgouttes
7335ee8ea3 Cleanup of lib/symbols
Try as far as possible to use the same definitions as in the LaTeX files.

An example of that is the definition and subsequent use of \joinrel,
\relbar and \Relbar.

This is mostly Guillaume's work.
2016-11-17 08:48:32 +01:00
Guillaume Munch
be836909c5 Display properly math characters that behave like symbols
* set up a replacement of *, -, and : by the adequate symbols (#9893)

* fix the wrong character selection and operator spacing in \text mode

* hide some internal symbols from the auto-completion.
2016-11-13 20:06:35 +01:00
Guillaume Munch
ad7e2435cf Fix display of some math symbols
* Fix spacing in lib/symbols after recent commits about math spacing, as well as
  older spacing issues (e.g. \Join).

* InsetMathKern now uses the same em value as other math length commands.

What is nice is that the kerning amount now matches the ones found in the
packages definition (modulo 10mu that lyx currently adds between relations).

Testcase: $\CheckedBox\LEFTcircle\RIGHTcircle\photon\gluon\vcentcolon\dblcolon\Coloneqq\eqcolon\models\hookrightarrow\bowtie\hookleftarrow\Join\APLinv\neq$
2016-11-13 20:04:51 +01:00
Guillaume Munch
143a177ad3 Copy bit of documentation from Georg's commit log 2016-10-27 21:28:49 +02:00
Guillaume Munch
120f03fd8e Copy bit of documentation from MathFactory.cpp 2016-10-27 21:10:18 +02:00
Enrico Forestieri
2aa930bbe8 Fix display and export of some latex macros
Fixes #9742.
2016-09-10 18:32:44 +02:00
Georg Baum
338cef2a97 Fix regression of 88603655
The XHTML entries were added in the wrong field, if they are given we need
extra xhtml requires. The order is inconsistent, there are discussions on the
list about that but for now I'll use the existing order to fix the export tests.

The format of the lib/symbols file does not support "" for empty strings.
One would have to use x for fields that are not set (this is a hack), but
actually we know how to fill the extra field.
2016-08-21 20:39:52 +02:00
Richard Heck
8860365565 Fix some symbols that are displayed incorrectly in MathML export. 2016-07-30 21:08:06 -04:00
Enrico Forestieri
7c82ab3205 Fix display of \leq, \geq, and \lnot in mathed
Commit 343a379b used a wrong syntax that was causing the display
of the above symbols as blanks.
2016-07-04 21:55:00 +02:00
Georg Baum
083e6bb8a4 Fix MathML for imaginary part
image is the HTML image element
2016-07-02 14:37:05 +02:00
Georg Baum
343a379b88 Move duplicated symbols to the macro section
This helps to find them via unicodesymbols as I do for some STIX experiments
2016-06-26 20:36:44 +02:00
Scott Kostyshak
3cecd4d393 Remove \it and other oldfonts from math completion
\it and the other oldfont commands are deprecated and the new forms
(e.g. \mathit) should be used instead. The old forms can lead to a
warning in TeX Live 2015 and an error in TeX Live 2016.

Note that with this commit only affects completion, so LyX still
supports displaying e.g. \it in math if the user enters it without
completion.

This is consistent with 24d01111.

Thanks to Guillaume for the patch.
2016-06-25 19:40:18 -04:00
Jean-Marc Lasgouttes
d30fe45f4c Fixup 1b2aad9 : Cleanup of spacing in mathed
Now that 5mu are added on each side of : (because it is a relation), there is no need to do the same in the definition of \vcentcolon.

This is closer to what is done in mathtools.sty.
2016-05-29 17:55:55 -04:00
Günter Milde
137575010c Correct some charid values in lib/symbols. Fixes #9823. 2015-11-13 14:01:32 +01:00
Georg Baum
08b2859663 Do not require esint for \int (bug 9498)
We also get a consistent look with amsmath, so require esint or amsmath.
When resolving alternatives, do also take into account whether the package
is available. For this to work, we also need to test for amsmath.sty (which
was surprisingly not yet done).
2015-05-16 12:29:54 +02:00
Enrico Forestieri
0fc9b08e4d Fix output of \lightning in math mode.
The \lightning symbol is text mode only. Hence, for using it in
mathed, it must be inserted in a text mode environment such as
\mbox, \text, etc. However, as it is not marked as textmode,
LyX "helpfully" encloses it in \ensuremath everytime one tries
to put it in a text mode environment, thus defying the countermeasure.
By declaring it textmode only, LyX stops doing that and thus it can be
correctly output by simply selecting it and hitting Ctrl-M.
2015-04-12 00:47:18 +02:00
Georg Baum
24d011117f Remove unsupported macros from autocompletion
We have some math macros that exist only because LyX can display them easily,
but which require user preamble code. These commands should not appear in
autocompletion, they are only there to make the formulas of users who actually
need thgese symbols and know what to put into the preamble more beautiful.
2015-03-10 20:53:56 +01:00