2003-08-23 00:17:00 +00:00
|
|
|
|
/**
|
|
|
|
|
* \file tex-accent.C
|
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
|
* Licence details can be found in the file COPYING.
|
2002-03-21 17:27:08 +00:00
|
|
|
|
*
|
2003-08-23 00:17:00 +00:00
|
|
|
|
* \author Lars Gullik Bj<EFBFBD>nnes
|
|
|
|
|
* \author Matthias Ettrich
|
2002-03-21 17:27:08 +00:00
|
|
|
|
*
|
2003-08-23 00:17:00 +00:00
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
|
*/
|
2000-07-24 13:53:19 +00:00
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
|
|
#include "tex-accent.h"
|
2005-01-06 16:39:35 +00:00
|
|
|
|
#include "support/convert.h"
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
2006-10-21 00:16:43 +00:00
|
|
|
|
|
|
|
|
|
namespace lyx {
|
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
/* the names used by TeX and XWindows for deadkeys/accents are not the same
|
|
|
|
|
so here follows a table to clearify the differences. Please correct this
|
|
|
|
|
if I got it wrong
|
|
|
|
|
|
|
|
|
|
|------------------|------------------|------------------|--------------|
|
|
|
|
|
| TeX | XWindows | \bind/LFUN | used by intl |
|
|
|
|
|
|------------------|------------------|------------------|--------------|
|
2006-05-05 20:23:12 +00:00
|
|
|
|
| grave | grave |LFUN_ACCENT_GRAVE | grave
|
|
|
|
|
| acute | acute |LFUN_ACCENT_ACUTE | acute
|
|
|
|
|
| circumflex | circumflex |LFUN_ACCENT_CIRCUMFLEX | circumflex
|
|
|
|
|
| umlaut/dieresis | diaeresis |LFUN_ACCENT_UMLAUT | umlaut
|
|
|
|
|
| tilde | tilde |LFUN_ACCENT_TILDE | tilde
|
|
|
|
|
| macron | maron |LFUN_ACCENT_MACRON | macron
|
|
|
|
|
| dot | abovedot |LFUN_ACCENT_DOT | dot
|
|
|
|
|
| cedilla | cedilla |LFUN_ACCENT_CEDILLA | cedilla
|
|
|
|
|
| underdot | |LFUN_ACCENT_UNDERDOT | underdot
|
|
|
|
|
| underbar | |LFUN_ACCENT_UNDERBAR | underbar
|
|
|
|
|
| h<EFBFBD>cek | caron |LFUN_ACCENT_CARON | caron
|
|
|
|
|
| breve | breve |LFUN_ACCENT_BREVE | breve
|
|
|
|
|
| tie | |LFUN_ACCENT_TIE | tie
|
|
|
|
|
| Hungarian umlaut | doubleacute |LFUN_ACCENT_HUNGARIAN_UMLAUT | hungarian umlaut
|
|
|
|
|
| circle | abovering |LFUN_ACCENT_CIRCLE | circle
|
1999-09-27 18:44:28 +00:00
|
|
|
|
| | ogonek | |
|
|
|
|
|
| | iota | |
|
|
|
|
|
| | voiced_sound | |
|
|
|
|
|
| | semivoiced_sound | |
|
2006-05-05 20:23:12 +00:00
|
|
|
|
| | |LFUN_ACCENT_SPECIAL_CARON| special caron
|
1999-09-27 18:44:28 +00:00
|
|
|
|
*/
|
|
|
|
|
// I am not sure how some of the XWindows names coresponds to the TeX ones.
|
|
|
|
|
|
1999-11-15 12:01:38 +00:00
|
|
|
|
tex_accent_struct lyx_accent_table[18] = {
|
2001-06-28 10:25:20 +00:00
|
|
|
|
{ static_cast<tex_accent>(0), "", /*"",*/ "", static_cast<kb_action>(0)},
|
2006-05-05 20:23:12 +00:00
|
|
|
|
{TEX_ACUTE, "\\'", /*" AEIOUYaeiouySZszRLCNrlcn",*/ "acute", LFUN_ACCENT_ACUTE},
|
|
|
|
|
{TEX_GRAVE, "\\`", /*" aeiouAEIOU",*/ "grave", LFUN_ACCENT_GRAVE},
|
|
|
|
|
{TEX_MACRON, "\\=", /*" EeAIOUaiou",*/ "macron", LFUN_ACCENT_MACRON},
|
|
|
|
|
{TEX_TILDE, "\\~", /*" ANOanoIiUu",*/ "tilde", LFUN_ACCENT_TILDE},
|
|
|
|
|
{TEX_UNDERBAR, "\\b", /*" ",*/ "underbar", LFUN_ACCENT_UNDERBAR},
|
|
|
|
|
{TEX_CEDILLA, "\\c", /*" CcSsTtRLGrlgNKnk",*/ "cedilla", LFUN_ACCENT_CEDILLA},
|
|
|
|
|
{TEX_UNDERDOT, "\\d", /*" ",*/ "underdot", LFUN_ACCENT_UNDERDOT},
|
|
|
|
|
{TEX_CIRCUMFLEX, "\\^", /*" AEIOUaeiouHJhjCGScgs",*/ "circumflex", LFUN_ACCENT_CIRCUMFLEX},
|
|
|
|
|
{TEX_CIRCLE, "\\r", /*" AaUu",*/ "circle", LFUN_ACCENT_CIRCLE},
|
|
|
|
|
{TEX_TIE, "\\t", /*" ",*/ "tie", LFUN_ACCENT_TIE},
|
|
|
|
|
{TEX_BREVE, "\\u", /*" AaGgUu",*/ "breve", LFUN_ACCENT_BREVE},
|
|
|
|
|
{TEX_CARON, "\\v", /*" LSTZlstzCEDNRcednr",*/ "caron", LFUN_ACCENT_CARON},
|
|
|
|
|
// {TEX_SPECIAL_CARON, "\\q", "", "ooo", LFUN_ACCENT_SPECIAL_CARON},
|
|
|
|
|
{TEX_HUNGUML, "\\H", /*" OUou",*/ "hugarian_umlaut", LFUN_ACCENT_HUNGARIAN_UMLAUT},
|
|
|
|
|
{TEX_UMLAUT, "\\\"", /*" AEIOUaeiouy",*/ "umlaut", LFUN_ACCENT_UMLAUT},
|
|
|
|
|
{TEX_DOT, "\\.", /*" ZzICGicgEe",*/ "dot", LFUN_ACCENT_DOT},
|
|
|
|
|
{TEX_OGONEK, "\\k", /*" AaEe",*/ "ogonek", LFUN_ACCENT_OGONEK},
|
2001-06-28 10:25:20 +00:00
|
|
|
|
{ static_cast<tex_accent>(0), "", /*"",*/ "", static_cast<kb_action>(0)}};
|
2001-03-20 01:22:46 +00:00
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
|
|
tex_accent_struct get_accent(kb_action action)
|
|
|
|
|
{
|
1999-12-13 00:05:34 +00:00
|
|
|
|
int i = 0;
|
2002-02-16 15:59:55 +00:00
|
|
|
|
while (i <= TEX_MAX_ACCENT) {
|
1999-09-27 18:44:28 +00:00
|
|
|
|
if (lyx_accent_table[i].action == action)
|
|
|
|
|
return lyx_accent_table[i];
|
1999-12-13 00:05:34 +00:00
|
|
|
|
++i;
|
1999-09-27 18:44:28 +00:00
|
|
|
|
}
|
2001-06-28 10:25:20 +00:00
|
|
|
|
struct tex_accent_struct temp = { static_cast<tex_accent>(0), 0,
|
1999-12-13 00:05:34 +00:00
|
|
|
|
0, static_cast<kb_action>(0)};
|
1999-09-27 18:44:28 +00:00
|
|
|
|
return temp;
|
|
|
|
|
}
|
|
|
|
|
|
2001-05-16 07:53:23 +00:00
|
|
|
|
|
2007-03-31 08:12:08 +00:00
|
|
|
|
docstring const DoAccent(docstring const & s, tex_accent accent)
|
1999-09-27 18:44:28 +00:00
|
|
|
|
{
|
2007-03-31 08:12:08 +00:00
|
|
|
|
docstring res;
|
2002-03-21 17:27:08 +00:00
|
|
|
|
|
2000-03-06 02:42:40 +00:00
|
|
|
|
res += lyx_accent_table[accent].cmd;
|
|
|
|
|
res += '{';
|
1999-11-15 12:01:38 +00:00
|
|
|
|
if (s == "i" || s == "j") {
|
2000-03-06 02:42:40 +00:00
|
|
|
|
res += '\\';
|
1999-09-27 18:44:28 +00:00
|
|
|
|
}
|
2000-03-06 02:42:40 +00:00
|
|
|
|
res += s;
|
|
|
|
|
res += '}';
|
1999-09-27 18:44:28 +00:00
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
2001-05-16 07:53:23 +00:00
|
|
|
|
|
2007-03-31 08:12:08 +00:00
|
|
|
|
docstring const DoAccent(char_type c, tex_accent accent)
|
1999-09-27 18:44:28 +00:00
|
|
|
|
{
|
2007-03-31 08:12:08 +00:00
|
|
|
|
return DoAccent(docstring(1, c), accent);
|
1999-09-27 18:44:28 +00:00
|
|
|
|
}
|
2006-10-21 00:16:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace lyx
|