More complicated than I wished for, but color handling in RTL is
particularly tricky.
The three versions are needed due to the differences between [pdf]latex,
xetex, luatex/luabidi and luatex/babel.
Graphics "height" is only the height above the baseline and thus not
what most people will expect. Also, using height can result in a
division by zero with rotation.
Use totalheight now since this means "height of the figure" (independent
of the baseline).
The custom options field can be used if height is really desired.
We handle this in conversion/reversion, respectively, so document
output will not change.
Hence, file format change.
Fixes: #9676
In particular, the directory frontends/qt4 is renamed to frontends/qt.
Many configurations file have to be updated. All mentions of qt4 in
the source have been audited, and changed to qt if necessary.
The only part that has not been updated is the CMake build system.
This effectively allow paragraph breaks in insets only for cosmetic
reasons (e.g., to align contents on different lines).
This is the last change necessary for an enhanced covington gloss support
(which uses the new covington gloss ui)
A branch inset modifies the layout of the internal structures in
which the text is organized. When a branch is active, it is as if it
was not there, but its only presence makes a paragraph which would not
be the last one to actually be the last one, or the check for the
language of the previous paragraph to fail because there is no
previous paragraph before the first one in a branch inset.
Oney way I found to tackle it, is tracking whether the typesetted
paragraphs are actually part of an active branch inset and acting
accordingly.
Instead of writing a metrics() method that mimics what draw() does,
re-use the draw code with a null painter.
This has the additional benefit of fixing InsetSpecialChar logo width
with EB Garamond. I have to admit that I do not know why it was too
large with the old code, but the new code is shorter/better anyway.
This code removes logowidth(). metrics() is moved to a different
place, but only the logo cases are touched.
It might be nice to do this also for other insets that allow editing.
To do that properly, we'd want to standardize how such insets call an
external (or internal) program, which I guess would mean a virtual
method corresponding to editIncluded. When it exists (i.e., isn't null),
then we could call it, and we'd only need one centralized method to do
that. But at the moment, we have editGraphics, etc.
The basic problem here is that rather than using an abstract syntax,
backend-specific param strings are produced in the listings dialog,
depending on whether listings or minted is used.
Of course this breaks if a user switches backends inbetween (s/he would
have to open and re-apply each and every listings inset!)
Do at least the most basic translations in InsetListings::latex().
A sane solution would imply the use of only one param syntax with
respective interpretation for each backend. But this would be a file
format change.
Fixes wrong and missing characters in text parts in other languages
(platex does not support "inputenc").
Fixes compilation errors due to desynchronized encoding switches.
Several changes are needed to get things right:
* nested supersripts only work with inheritFonts=true.
* to get caret position right, it is necessary to remember the outside
font of the inset before computing metrics.
* to get the size right at insertion time, it is necessary to trigger
a metrics computation just after inset insertion.
To reproduce: Do a search for text in a footnote (say) that is
currently closed. Click inside the now open footnote. It will close
by itself.
We need to know whether we can go into the inset, not whether we can
edit once we're there.
This accesses the inulemcmd output param which protects specific commands
(\cite, \ref) in an \mbox.
This is needed in ulem and soul commands, since their complex
detokenization makes such commands (who produce multiple words via local
assignment) fail.
So now it is possible to properly support ulem and soul via
[inset]layout
Fixes a case reported in #9404
Fixes: #11508
Now there is the opposite case which needs to be addressed:
If no translation is available for a shortcut in a non-latin-scripted
document, we need to switch the language to English.
Commit [3366c49f/lyxgit] intended to strip braces only for minted
but was actually stripping them also for listings. As the braces
are necessary for the listings package, reintroduce them.
This is a master-only issue.
When several lines of text are in the same variable-width tabular
cell, it is not possible to align properly the rows until the cell
width is known.
Therefore a parameter is added to redoParagraph to skip this
computation, so that it can be done later in TextMetrics::metrics.
Other calls to redoParagraph in the code are not affected. It is not
clear at this point whether they may create artefacts.
computeRowMetrics has been renamed to setRowAlignment to better
reflect its use.
Fixes bug #11447.
In computing the length of the extension, the code does not account
for the prefix "unzipped_", which is added when the zipped filename
does not have one of the extensions "gz", "z", "Z", or "svgz", and
thus the used index is out of bounds. See also this thread:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg207360.html
This adds a new (boolean) parameter "active" to the label cache, where
we track whether a label is deleted in ct mode (the same could be done,
if wanted, for labels in notes and inactive branches).
Deleted (inactive) labels are neither considered in the uniqueness check
nor added to the outliner. This also means that undeleted references to
deleted labels are now (correctly) marked as BROKEN.
Fixes: #6563
This is not possible for '$', because of the latex-meaning to
start/end math inset.
Therefore, if not ignoring format, we still have to use
[\\][\$] in regex in order to find '$' in text.
The boost signal was sent synchronously, and so made the Qt signal to be posted
in FileMonitor::changed after the boost signal returned, so after the sender was
possibly destroyed.
The solution is to make the boost signal asynchronous using the Qt event loop.
Thanks to Scott Kostyshak for the report and MWE.
When deciding how to strike out deleted math in change-tracking
mode, differentiate only on begin-of-line or not, and not on
after-paragraph-break or not.
The assumption that a new paragraph is always started after a
float seems to be not true and was causing this bug.
Avoid as much as possible to do full copies of all counters, since
that can be expensive. Unfortunately, it is only posible when we want
to restore the saved counters.
An earlier version (05d3a649) defined swap() for Counter, but caused
problems on windows.
Part of bug #5973.
The enum is now made of flags that can be combined.
This introduces several new values for Inset::DisplayType:
BreakBefore, BreakAfter and Display=BreakBefore|BreakAfter. This
last value replaces AlignCenter.
Additionally the flags NoBoundary and CanBreakAfter are introduced for
future use.
Now a left aligned displayed inset will be defined as Display|LeftAlign.
A newline inset is characterized as BreakAfter.
This structure is used in breakRow to avoid explicit calls to
isNewline() or isEnvSeparator(). More improvements will be built on
top of this.
Additionally several redundant display() methods (which returned
Inline) have been removed.
The problem with the previous attempt was that, every time through
updateBuffer, we looked up the file location using kpsewhich, which
took too long on Windows. The new solution is to cache that info, and
to look it up only when we need it.
Previously, this info would have been re-read whenever we parsed the
bibfiles. So we re-read it now whenever the bibinfo cache is invalid,
which is less often, but should be good enough. We can add more such
re-reads if need be.
The problem with the previous attempt was that, every time through
updateBuffer, we looked up the file location using kpsewhich, which
took too long on Windows. The new solution is to cache that info, and
to look it up only when we need it.
Previously, this info would have been re-read whenever we parsed the
bibfiles. So we re-read it now whenever the bibinfo cache is invalid,
which is less often, but should be good enough. We can add more such
re-reads if need be.
This uses the InsetArgument interface to provide access to a document
part hitherto inaccessible by LyX: the part between \begin and the first
\item in a list (where lengths and counters can be redefined, for
instance).
Fixes: #11098
File format change, layout format change
This returns a localized version of a string (in the GUI language)
if available, removing trailing colons and accelerator marks.
This can be used to refer to dialog items in the docs in a portable way.
QKeySequence returns special characters for keys on the mac rather than
textual key names (as on other OSes).
Since these symbols are not included in many fonts, we re-translate them
to textual names
Fixes: #10641
When searching for and item in the menu, also try to consider those that
require a BufferView (such as View/Update formats).
Also, be explicit for the default format in order to find it.
Fixes: #9851
This is a low hanging fruit, since it's already available (although
quite hidden)
Generally, output "not set" i a pref is not set rather than an empty
string.
With this commit, info insets leave the dark backstage room of an opaque
and quite hidden dev-only feature and come frontstage.
In the UI, they present themselves as "Fields" since this is what people
know from word processors. Other user-related fields that could be
implemented next: time, user name (I plan to do that for 2.4).
Since this supersedes date-insert, I removed Insert > Date from
the menu and propose to ditch date-insert and the corresponding rc.
The lyx2lyx reversion routine has lots of room for improvement and
attractive tasks for pythons (file timestamp, switch of localization).
Please feel invited!
This is a file format change.
* use the context language of the info inset (rather than the buffer
language), and translate strings accordingly
* for menu and shortcuts, use the Gui language instead
* actually care that all translatable strings end in po
(this wasn't the case).
Fixes: #5348, rest of #10463
Width is now 3 for top/bottomrule, 2 for midrule and 1 for cmidrule.
These numbers are bogus of course, but the goal is to help the user
see what he is doing.
It is a general problem when doing graphics to know where a line
begins and where it ends pixel-wise. At the instigation of Scott, and
with the use of the kmag magnifier, this commit corrects 3 areas:
* foreign marks were larger than the row element they were supposed to
mark. This could lead to moving lines, depending on paint ordering.
* visible spaces were drawn outside of their box (select a single
space to see this).
* the `L' blinking caret would leave a cursor dropping because the
horizontal part was too wide.
Minted does not have a language option but it is possible to enter
this option in the LyX interface for compatibility with the listings
package, and also for letting to enter a language not present in the
gui. So, this option is only used for properly specifying a language
in a listing, unless it is entered in the document settings dialog.
This case was not foreseen and thus the option was being passed to
the package as is, causing havoc. With this commit the option is
still available but is used to set a default language for a new
listing in place of the default "tex" language used so far.
This is not perfect, since variable width columns will break at a certain
treshold, but it is better than what we have now (no tabular width
indication at all)
This effectively enables linebreaks, multipars and layout changes in
non-fixed width (i.e., standard) table columns.
Fixes: #6577
TODO: metrics are wrong (too wide) on screen with linebreaks.
When a raster image with an advertised pixel density different
from 72 dpi is included in a latex file, the output image dimensions
are scaled by the ratio 72/pixel_density. Hence, if a clipping
bounding box is specified, it has to be scaled by the same ratio,
otherwise the images will be clipped differently on screen and output.
Here we use the extractbb command (present in any TeX distribution)
to ask about the output dimensions of the image as dictated by the
pixel density and compute the scaling ratio by the knowledge of the
actual dimensions. If, for whatever reason, extractbb is not found,
everything goes as before, because the clipping bounding box will
simply not be corrected.
The reordering of the code was incorrect. The code calling Change::paintCue()
has to come last, since it depends on the change_drawn value.
Spotted by coverity.
It is now possible in the float settings (doc dialog) to specify a global
(inner) alignment for floats, and in the float settings, this can be
overridden (just as with float placement)
Fixes: #8665
File format change.
We \cprotect them in fragile context. This allows \input, \include as
well as \verbatiminput and \lstinputlisting in sections etc.
They still don't work in titling (#2528)