mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
support for all default colors of the package xcolor
fileformat change
This commit is contained in:
parent
e3524cefaa
commit
e35bb3126a
@ -11,6 +11,12 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx.
|
||||
|
||||
-----------------------
|
||||
|
||||
2015-05-14 Uwe Stöhr <uwestoehr@web.de>
|
||||
* Format incremented to 491: support for xcolor's default colors
|
||||
No new parameter, the \\color parameter can nowhave these values:
|
||||
"brown", "darkgray", "gray", "lightgray", "lime", "olive", "orange",
|
||||
"pink", "purple", "teal", "violet"
|
||||
|
||||
2015-05-13 Enrico Forestieri <forenr@lyx.org>
|
||||
* Format incremented to 490: new \origin tag, extended \textclass tag.
|
||||
The \origin tag keeps track of the document directory and is useful
|
||||
|
@ -85,7 +85,7 @@ format_relation = [("0_06", [200], minor_versions("0.6" , 4)),
|
||||
("1_6", list(range(277,346)), minor_versions("1.6" , 10)),
|
||||
("2_0", list(range(346,414)), minor_versions("2.0" , 8)),
|
||||
("2_1", list(range(414,475)), minor_versions("2.1" , 0)),
|
||||
("2_2", list(range(475,491)), minor_versions("2.2" , 0))
|
||||
("2_2", list(range(475,492)), minor_versions("2.2" , 0))
|
||||
]
|
||||
|
||||
####################################################################
|
||||
|
@ -992,7 +992,7 @@ def revert_BoxFeatures(document):
|
||||
# delete the specification
|
||||
del document.body[i+1:i+4]
|
||||
# output ERT
|
||||
# first output the closing braces
|
||||
# first output the closing brace
|
||||
if shadowsize != defaultShadow or separation != defaultSep or thickness != defaultThick:
|
||||
document.body[i + 10 : i + 10] = put_cmd_in_ert("}")
|
||||
# now output the lengths
|
||||
@ -1039,6 +1039,44 @@ def revert_origin(document):
|
||||
del document.header[i]
|
||||
|
||||
|
||||
color_names = ["brown", "darkgray", "gray", \
|
||||
"lightgray", "lime", "olive", "orange", \
|
||||
"pink", "purple", "teal", "violet"]
|
||||
|
||||
def revert_textcolor(document):
|
||||
" revert new \texcolor colors to TeX code "
|
||||
|
||||
i = 0
|
||||
j = 0
|
||||
xcolor = False
|
||||
add_to_preamble(document, ["\\@ifundefined{rangeHsb}{\\usepackage{xcolor}}"])
|
||||
while True:
|
||||
i = find_token(document.body, "\\color ", i)
|
||||
if i == -1:
|
||||
return
|
||||
else:
|
||||
for color in list(color_names):
|
||||
if document.body[i] == "\\color " + color:
|
||||
# register that xcolor must be loaded in the preamble
|
||||
if xcolor == False:
|
||||
xcolor = True
|
||||
add_to_preamble(document, ["\\@ifundefined{rangeHsb}{\usepackage{xcolor}}"])
|
||||
# find the next \\color and/or the next \\end_layout
|
||||
j = find_token(document.body, "\\color", i + 1)
|
||||
k = find_token(document.body, "\\end_layout", i + 1)
|
||||
if j == -1 and k != -1:
|
||||
j = k +1
|
||||
# output TeX code
|
||||
# first output the closing brace
|
||||
if k < j:
|
||||
document.body[k: k] = put_cmd_in_ert("}")
|
||||
else:
|
||||
document.body[j: j] = put_cmd_in_ert("}")
|
||||
# now output the \textcolor command
|
||||
document.body[i : i + 1] = put_cmd_in_ert("\\textcolor{" + color + "}{")
|
||||
i = i + 1
|
||||
|
||||
|
||||
##
|
||||
# Conversion hub
|
||||
#
|
||||
@ -1063,10 +1101,12 @@ convert = [
|
||||
[487, []],
|
||||
[488, [convert_newgloss]],
|
||||
[489, [convert_BoxFeatures]],
|
||||
[490, [convert_origin]]
|
||||
[490, [convert_origin]],
|
||||
[491, []]
|
||||
]
|
||||
|
||||
revert = [
|
||||
[490, [revert_textcolor]],
|
||||
[489, [revert_origin]],
|
||||
[488, [revert_BoxFeatures]],
|
||||
[487, [revert_newgloss, revert_glossgroup]],
|
||||
|
@ -203,11 +203,22 @@ ColorSet::ColorSet()
|
||||
{ Color_none, N_("none"), "none", "black", "none" },
|
||||
{ Color_black, N_("black"), "black", "black", "black" },
|
||||
{ Color_white, N_("white"), "white", "white", "white" },
|
||||
{ Color_red, N_("red"), "red", "red", "red" },
|
||||
{ Color_green, N_("green"), "green", "green", "green" },
|
||||
{ Color_blue, N_("blue"), "blue", "blue", "blue" },
|
||||
{ Color_brown, N_("brown"), "brown", "brown", "brown" },
|
||||
{ Color_cyan, N_("cyan"), "cyan", "cyan", "cyan" },
|
||||
{ Color_darkgray, N_("darkgray"), "darkgray", "darkgray", "darkgray" },
|
||||
{ Color_gray, N_("gray"), "gray", "gray", "gray" },
|
||||
{ Color_green, N_("green"), "green", "green", "green" },
|
||||
{ Color_lightgray, N_("lightgray"), "lightgray", "lightgray", "lightgray" },
|
||||
{ Color_lime, N_("lime"), "lime", "lime", "lime" },
|
||||
{ Color_magenta, N_("magenta"), "magenta", "magenta", "magenta" },
|
||||
{ Color_olive, N_("olive"), "olive", "olive", "olive" },
|
||||
{ Color_orange, N_("orange"), "orange", "orange", "orange" },
|
||||
{ Color_pink, N_("pink"), "pink", "pink", "pink" },
|
||||
{ Color_purple, N_("purple"), "purple", "purple", "purple" },
|
||||
{ Color_red, N_("red"), "red", "red", "red" },
|
||||
{ Color_teal, N_("teal"), "teal", "teal", "teal" },
|
||||
{ Color_violet, N_("violet"), "violet", "violet", "violet" },
|
||||
{ Color_yellow, N_("yellow"), "yellow", "yellow", "yellow" },
|
||||
{ Color_cursor, N_("cursor"), "cursor", "black", "cursor" },
|
||||
{ Color_background, N_("background"), "background", "linen", "background" },
|
||||
|
@ -21,16 +21,38 @@ enum ColorCode {
|
||||
///
|
||||
Color_white,
|
||||
///
|
||||
Color_red,
|
||||
///
|
||||
Color_green,
|
||||
///
|
||||
Color_blue,
|
||||
///
|
||||
Color_brown,
|
||||
///
|
||||
Color_cyan,
|
||||
///
|
||||
Color_darkgray,
|
||||
///
|
||||
Color_gray,
|
||||
///
|
||||
Color_green,
|
||||
///
|
||||
Color_lightgray,
|
||||
///
|
||||
Color_lime,
|
||||
///
|
||||
Color_magenta,
|
||||
///
|
||||
Color_olive,
|
||||
///
|
||||
Color_orange,
|
||||
///
|
||||
Color_pink,
|
||||
///
|
||||
Color_purple,
|
||||
///
|
||||
Color_red,
|
||||
///
|
||||
Color_teal,
|
||||
///
|
||||
Color_violet,
|
||||
///
|
||||
Color_yellow,
|
||||
|
||||
// Needed interface colors
|
||||
|
12
src/Font.cpp
12
src/Font.cpp
@ -695,6 +695,18 @@ void Font::validate(LaTeXFeatures & features) const
|
||||
case Color_latex:
|
||||
case Color_notelabel:
|
||||
break;
|
||||
case Color_brown:
|
||||
case Color_darkgray:
|
||||
case Color_gray:
|
||||
case Color_lightgray:
|
||||
case Color_lime:
|
||||
case Color_olive:
|
||||
case Color_orange:
|
||||
case Color_pink:
|
||||
case Color_purple:
|
||||
case Color_teal:
|
||||
case Color_violet:
|
||||
features.require("xcolor");
|
||||
default:
|
||||
features.require("color");
|
||||
LYXERR(Debug::LATEX, "Color enabled. Font: " << to_utf8(stateText(0)));
|
||||
|
@ -21,12 +21,15 @@
|
||||
#include "Buffer.h"
|
||||
#include "BufferParams.h"
|
||||
#include "BufferView.h"
|
||||
#include "Color.h"
|
||||
#include "ColorCache.h"
|
||||
#include "Cursor.h"
|
||||
#include "FuncRequest.h"
|
||||
#include "Language.h"
|
||||
#include "Paragraph.h"
|
||||
|
||||
#include <QAbstractItemModel>
|
||||
#include <QComboBox>
|
||||
#include <QModelIndex>
|
||||
#include <QSettings>
|
||||
#include <QVariant>
|
||||
@ -92,11 +95,22 @@ static QList<ColorPair> colorData()
|
||||
colors << ColorPair(qt_("No color"), Color_none);
|
||||
colors << ColorPair(qt_("Black"), Color_black);
|
||||
colors << ColorPair(qt_("White"), Color_white);
|
||||
colors << ColorPair(qt_("Red"), Color_red);
|
||||
colors << ColorPair(qt_("Green"), Color_green);
|
||||
colors << ColorPair(qt_("Blue"), Color_blue);
|
||||
colors << ColorPair(qt_("Brown"), Color_brown);
|
||||
colors << ColorPair(qt_("Cyan"), Color_cyan);
|
||||
colors << ColorPair(qt_("Darkgray"), Color_darkgray);
|
||||
colors << ColorPair(qt_("Gray"), Color_gray);
|
||||
colors << ColorPair(qt_("Green"), Color_green);
|
||||
colors << ColorPair(qt_("Lightgray"), Color_lightgray);
|
||||
colors << ColorPair(qt_("Lime"), Color_lime);
|
||||
colors << ColorPair(qt_("Magenta"), Color_magenta);
|
||||
colors << ColorPair(qt_("Olive"), Color_olive);
|
||||
colors << ColorPair(qt_("Orange"), Color_orange);
|
||||
colors << ColorPair(qt_("Pink"), Color_pink);
|
||||
colors << ColorPair(qt_("Purple"), Color_purple);
|
||||
colors << ColorPair(qt_("Red"), Color_red);
|
||||
colors << ColorPair(qt_("Teal"), Color_teal);
|
||||
colors << ColorPair(qt_("Violet"), Color_violet);
|
||||
colors << ColorPair(qt_("Yellow"), Color_yellow);
|
||||
colors << ColorPair(qt_("Reset"), Color_inherit);
|
||||
return colors;
|
||||
@ -156,6 +170,25 @@ void fillCombo(QComboBox * combo, QList<T> const & list)
|
||||
combo->addItem(cit->first);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void fillComboColor(QComboBox * combo, QList<T> const & list)
|
||||
{
|
||||
// at first add the 2 colors "No change" and "No color"
|
||||
combo->addItem(list.begin()->first);
|
||||
combo->addItem((list.begin() + 1)->first);
|
||||
// now add the real colors
|
||||
QPixmap coloritem(32, 32);
|
||||
QColor color;
|
||||
typename QList<T>::const_iterator cit = list.begin() + 2;
|
||||
for (; cit != list.end() - 1; ++cit) {
|
||||
color = QColor(guiApp->colorCache().get(cit->second, false));
|
||||
coloritem.fill(color);
|
||||
combo->addItem(QIcon(coloritem), cit->first);
|
||||
}
|
||||
//the last color is "Reset"
|
||||
combo->addItem((list.end() - 1)->first);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
GuiCharacter::GuiCharacter(GuiView & lv)
|
||||
@ -195,7 +228,7 @@ GuiCharacter::GuiCharacter(GuiView & lv)
|
||||
fillCombo(sizeCO, size);
|
||||
fillCombo(shapeCO, shape);
|
||||
fillCombo(miscCO, bar);
|
||||
fillCombo(colorCO, color);
|
||||
fillComboColor(colorCO, color);
|
||||
fillCombo(langCO, language);
|
||||
|
||||
bc().setPolicy(ButtonPolicy::OkApplyCancelAutoReadOnlyPolicy);
|
||||
|
@ -1121,11 +1121,22 @@ PrefColors::PrefColors(GuiPreferences * form)
|
||||
if (lc == Color_none
|
||||
|| lc == Color_black
|
||||
|| lc == Color_white
|
||||
|| lc == Color_red
|
||||
|| lc == Color_green
|
||||
|| lc == Color_blue
|
||||
|| lc == Color_brown
|
||||
|| lc == Color_cyan
|
||||
|| lc == Color_darkgray
|
||||
|| lc == Color_gray
|
||||
|| lc == Color_green
|
||||
|| lc == Color_lightgray
|
||||
|| lc == Color_lime
|
||||
|| lc == Color_magenta
|
||||
|| lc == Color_olive
|
||||
|| lc == Color_orange
|
||||
|| lc == Color_pink
|
||||
|| lc == Color_purple
|
||||
|| lc == Color_red
|
||||
|| lc == Color_teal
|
||||
|| lc == Color_violet
|
||||
|| lc == Color_yellow
|
||||
|| lc == Color_inherit
|
||||
|| lc == Color_ignore)
|
||||
|
@ -159,11 +159,13 @@ const char * const known_if_commands[] = {"if", "ifarydshln", "ifbraket",
|
||||
"ifcancel", "ifcolortbl", "ifeurosym", "ifmarginnote", "ifmmode", "ifpdf",
|
||||
"ifsidecap", "ifupgreek", 0};
|
||||
|
||||
const char * const known_basic_colors[] = {"blue", "black", "cyan", "green",
|
||||
"magenta", "red", "white", "yellow", 0};
|
||||
const char * const known_basic_colors[] = {"black", "blue", "brown", "cyan",
|
||||
"darkgray", "gray", "green", "lightgray", "lime", "magenta", "orange", "olive",
|
||||
"pink", "purple", "red", "teal", "violet", "white", "yellow", 0};
|
||||
|
||||
const char * const known_basic_color_codes[] = {"#0000ff", "#000000", "#00ffff",
|
||||
"#00ff00", "#ff00ff", "#ff0000", "#ffffff", "#ffff00", 0};
|
||||
const char * const known_basic_color_codes[] = {"#000000", "#0000ff", "#964B00", "#00ffff",
|
||||
"#a9a9a9", "#808080", "#00ff00", "#d3d3d3", "#bfff00", "#ff00ff", "#ff7f00", "#808000",
|
||||
"#ffc0cb", "#800080", "#ff0000", "#008080", "#8F00FF", "#ffffff", "#ffff00", 0};
|
||||
|
||||
/// conditional commands with three arguments like \@ifundefined{}{}{}
|
||||
const char * const known_if_3arg_commands[] = {"@ifundefined", "IfFileExists",
|
||||
|
@ -37,6 +37,7 @@
|
||||
\usepackage{pifont}
|
||||
\usepackage{tipa}
|
||||
\usepackage{tipx}
|
||||
\usepackage{xcolor}
|
||||
|
||||
\setlength{\parskip}{3mm}
|
||||
\setlength{\parindent}{0sp}
|
||||
@ -175,6 +176,9 @@ Shaded background box, with inner minipage\end{shaded}%
|
||||
\subsection{Predefined Colors}
|
||||
|
||||
test \textcolor{blue}{blue} test \textcolor{red}{red red red} test \textcolor{green}{bla}\textcolor{magenta}{blub}
|
||||
test \textcolor{brown}{brown} test \textcolor{darkgray}{darkgray} test \textcolor{gray}{gray}\textcolor{lightgray}{lightgray}
|
||||
test \textcolor{lime}{lime} test \textcolor{olive}{olive} test \textcolor{orange}{orange}\textcolor{pink}{pink}
|
||||
test \textcolor{purple}{purple} test \textcolor{teal}{teal} test \textcolor{violet}{violet}
|
||||
test
|
||||
\textcolor{green}{c}%
|
||||
\textcolor{red}{o}%
|
||||
|
@ -3145,7 +3145,7 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
else if (t.cs() == "textcolor") {
|
||||
// scheme is \textcolor{color name}{text}
|
||||
string const color = p.verbatim_item();
|
||||
// we only support the predefined colors of the color package
|
||||
// we support the predefined colors of the color and the xcolor package
|
||||
if (color == "black" || color == "blue" || color == "cyan"
|
||||
|| color == "green" || color == "magenta" || color == "red"
|
||||
|| color == "white" || color == "yellow") {
|
||||
@ -3155,6 +3155,16 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
context.check_layout(os);
|
||||
os << "\n\\color inherit\n";
|
||||
preamble.registerAutomaticallyLoadedPackage("color");
|
||||
} else if (color == "brown" || color == "darkgray" || color == "gray"
|
||||
|| color == "lightgray" || color == "lime" || color == "olive"
|
||||
|| color == "orange" || color == "pink" || color == "purple"
|
||||
|| color == "teal" || color == "violet") {
|
||||
context.check_layout(os);
|
||||
os << "\n\\color " << color << "\n";
|
||||
parse_text_snippet(p, os, FLAG_ITEM, outer, context);
|
||||
context.check_layout(os);
|
||||
os << "\n\\color inherit\n";
|
||||
preamble.registerAutomaticallyLoadedPackage("xcolor");
|
||||
} else
|
||||
// for custom defined colors
|
||||
output_ert_inset(os, t.asInput() + "{" + color + "}", context);
|
||||
|
@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
|
||||
|
||||
// Do not remove the comment below, so we get merge conflict in
|
||||
// independent branches. Instead add your own.
|
||||
#define LYX_FORMAT_LYX 490 // forenr: new origin tag
|
||||
#define LYX_FORMAT_TEX2LYX 490
|
||||
#define LYX_FORMAT_LYX 491 // uwestoehr: support more text colors
|
||||
#define LYX_FORMAT_TEX2LYX 491
|
||||
|
||||
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
|
||||
#ifndef _MSC_VER
|
||||
|
Loading…
Reference in New Issue
Block a user