Перейти к содержанию
Fire Monkey от А до Я
  • 0

Символы векторов


nassl

Вопрос

Хочется вывести кусочек  математического  текста  (должны быть значки векторов над буквами \vec(F) - латех)   на форму  в перемежку с парой картинок. 
Конечно, идеально иметь компонент с Latex, но вряд ли появится. 
Пока смог придумать генерировать html текст и кидать его  в  WebBrowser.

Еще вопрос: Слой на котором лежит компонент  TWebBrowser должен обработать жест "влево". 
Этот жест не проходит если WebBrowser. Visible:=true, причем WebBrowser. HitTest:=false.
Как справить?

try
HTMLPage.Add('<!DOCTYPE html>');
HTMLPage.Add('<html>');
HTMLPage.Add('<head>');
HTMLPage.Add('<style type=''text/css''>');
HTMLPage.Add('.arrow {margin-left: -13px;}');
HTMLPage.Add('.arrow::before {content:''\2192''; position:  relative; top: -11px;left: 13px;}');
HTMLPage.Add('</style>');
HTMLPage.Add('</head>');
HTMLPage.Add('<body>');
HTMLPage.Add('<p>some text <span class="arrow">F</span> some text</p>');
HTMLPage.Add('</body>');
HTMLPage.Add('</html>');

TemporaryFileName:=TPath.GetTempPath+TEMP_FILE_NAME;
HTMLPage.SaveToFile(TemporaryFileName);
WebBrowser1.URL:=Format(FILE_URL_OPEN_FILE,[TemporaryFileName]);
finally
HTMLPage.Free;

получается такой html 

<!DOCTYPE html>
<html>
<head>
<title>Проба</title>
<style type='text/css'>
.arrow {margin-left: -13px;}
.arrow::before {content:'\2192'; position:  relative; top: -11px;left: 13px;}
</style>
</head>
<body>
<p>some text <span class="arrow">F</span> some text</p>
</body>
</html>

Проблема в том, что WebBrowser  эту страницу выводит без учета стилей css, хотя в обычном браузере все хорошо.

Как можно решить проблему? 

/need help/

 

 

Изменено пользователем nassl
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Конечно, глядя на эти костыли, хочется рыдать под одеялом. Поэтому улучшения приветствуются!
Но этот код работает в TWebBrowser.  Получается строка эквивалентная Latex'у 

m_1\vec{V}_1+m_2\vec{V}_2=m_1\vec{V}_1+m_2\vec{V}_2

Еще вопрос: Слой на котором лежит компонент  TWebBrowser должен обработать жест "влево".  
Этот жест не проходит если WebBrowser. Visible:=true, причем WebBrowser. HitTest:=false.
Как справить?  

 

const
TEMP_FILE_NAME ='temp.html';
FILE_URL_OPEN_FILE ='file:/%s';
var
HTMLPage :TStringList;
TemporaryFileName: string;
FS: UnicodeString;

begin

FS:='m<span class="_">1</span><span class="vec"><span class="arrow">&rarr;</span>V<span class="_">1</span></span> +'
+'m<span class="_">2</span><span class="vec"><span class="arrow">&rarr;</span>V<span class="_">2</span></span> ='
+'m<span class="_">1</span><span class="vec"><span class="arrow">&rarr;</span>V<span class="_">1</span></span> +'
+'m<span class="_">2</span><span class="vec"><span class="arrow">&rarr;</span>V<span class="_">2</span></span>';


HTMLPage:=TStringList.Create;
try
HTMLPage.Add('<!DOCTYPE html>');
HTMLPage.Add('<html>');
HTMLPage.Add('<head>');
HTMLPage.Add('<title>Test</title>');
HTMLPage.Add('<meta charset="UTF-8">');
HTMLPage.Add('<style type=''text/css''>');
HTMLPage.Add('.arrow{position: absolute;  bottom:11px;}');
HTMLPage.Add('.vec{position: relative;}');
HTMLPage.Add('._{font: 80% sans-serif; position:  relative; bottom: -8px;}');
HTMLPage.Add('.^{font: 80% sans-serif; position:  relative; bottom: 8px;}');
HTMLPage.Add('</style>');
HTMLPage.Add('</head>');
HTMLPage.Add('<body>');
HTMLPage.Add('<p>Formulae:'+FS+'</p>');
HTMLPage.Add('</body>');
HTMLPage.Add('</html>');

TemporaryFileName:=TPath.GetTempPath+TEMP_FILE_NAME;
HTMLPage.SaveToFile(TemporaryFileName);
WebBrowser1.URL:=Format(FILE_URL_OPEN_FILE,[TemporaryFileName]);
finally
HTMLPage.Free;

 

aaaas.png

Изменено пользователем nassl
Ссылка на комментарий
  • 0

Можно попробовать использовать обычный контрол и символы юникода http://www.fileformat.info/info/unicode/char/20d7/index.htm

Попробовал ради интереса - Memo1.Lines.Add('v' + Char($20d7) + ' + ' + 'V' + Char($20d7));

Но результат не очень. То ли Дельфи не очень работает с комбинируемыми символами, толи шрифт надо подобрать (я на дефолтном пробовал).

image.thumb.png.3ec1992d9614c91f841d165d1b66fb1c.png

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...