Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.64
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
#1

Как создать объект MathType (формулу) в MS Word? - Delphi

14.09.2009, 07:44. Просмотров 7212. Ответов 14
Метки нет (Все метки)

надо бы сделать програмку расчёта, которая генерировала отчёт в ворде в виде набора текста и формул, содежащих дроби, корни, степени, пределы и т.д. (объект MathType). к примеру:
x=(a+b)/c=(1+2)/3=1.
здесь a,b,c - переменные величины, т.е. цифры расчитываются/задаются ранее и подставляются в формулу.
имею давольно большой опыт примитивного программирования, но был бы признателен за подробный ответ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2009, 07:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать объект MathType (формулу) в MS Word? (Delphi):

Как программно создать объект? - Delphi
Проблема в следующем: Есть текстовый файл с какими-то строчками (не суть важно с какими, важно то, что мы не знаем их числа). Надо: для...

Как динамически создать объект класса TDCOMConnection? - Delphi
Новичок-с в этом деле. Делаю так: DCOMConnection1:=TDCOMConnection.Create(nil); DCOMConnection1.ServerGUID=''КАКОЙ-ТО GUID'' ...

Как преобразовать формулу введенную в Edit типа String в решаемую формулу - Delphi
название не совсем корректное, но САБЖ вот в чем: в Edit вводится целевая функция (f=-x1^2-x2^2), из которой нужно найти частные...

Как создать рекурсивную формулу? - Delphi
Приветствую) очень нужна помощь. Задача такая - возвести число в степень (например х в степени к) с использованием рекурсивной формулы. ...

Как программно создать объект на другой форме? - Delphi
Добрый вечер! Есть код, который должен создать компонент Lbl на другой форме(form4,lbl на ней объявлен), но код выдает ошибку: ...

Работа с MathType 6.9, или как записать формулу в Word - Visual Basic .NET
Добрый вечер, уважаемые форумчане. Полет на VB.net ровно 7 дней, до этого дел с языками программирования не имел ни разу. Очень сильно...

14
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
15.09.2009, 23:57 #2
Доброго времени суток! Я сам уже пару месяцев ищу ответ на этот вопрос, но так ничего и не нашел... Единственное что пришло в голову - использовать LaTeX (там формулы записываются в текстовом виде) и затем конвертировать в формат Ворда. Но это тоже проблематично т.к. язык не учил этот, а учить ради такой задачки как-то лень... Может найдутся тут добрые люди...
Да, кстати, для Вас, limbir, я бы рекомендовал использовать "шаблон" документа, в котором в определенных местах стоят "маркеры", например "Значение001", "Значение002" и т.д., потом этот "маркер" легко заменить нужным текстом. Вобщем предлагаю развивать эту тему - она будет полезна многим, вылаживайте свои идеи, а я завтра выложу парочку примерчиков на замену текста, это не много, но все же лучше чем ничего...
0
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
16.09.2009, 04:16  [ТС] #3
Jora, спасибо за советы! с LaTeXом пытался разобраться, но как то не пошла у меня с ним дружба) да и по экспорту в ворд и латеха ничего найти не смог. По поводу шаблонов с маркерами мысль хорошая, но в mathtype маркер не поставить. Вчера наткнулся на книжку, много полезного для себя оттуда узнал, называется "ПРОГРАММИРОВАНИЕ ДОКУМЕНТОВ И ПРИЛОЖЕНИЙ MS OFFICE в DELPHI" Корнякова В. Н. Так же есть его статьи на сайтах www.kornjakov.ru либо www.kv.by, там практически вся полезная информация из книги. Только работе с объектами OLE посвящено всего пара страниц (и ни слова про MathType), прочёл их вскользь, сегодня попробую разобраться поподробнее. Попробовал написать автору, мож ответит. Как только заработает прога, создающая и редактирующая формулы обязательно всё сюда выложу.
0
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
16.09.2009, 07:17  [ТС] #4
получилось создать объект Equation (MathType) в Word'е:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
W: variant;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
W:=CreateOleObject('Word.Application');
W.Visible:=Visible;
W.Documents.Add;
W.ActiveDocument.Shapes.AddOleObject(ClassType:='Equation.3');
//у меня установлен MathType, он и запускается
end;
end.
Теперь, я полагаю, можно в открывшемся активном MathType что нибудь написать. Только пока никак не получается(.
0
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
16.09.2009, 20:12 #5
я тоже так пробовал, но дальше дело не пошло...

Добавлено через 37 минут
Вот так выглядит документ LaTeX:

Код
\documentclass{article}
\usepackage{latexsym}

\begin{document}

\[
[COLOR="Red"]a=\frac{b}{c}[/COLOR]
\]

\end{document}
Красным выделена формула. При конвертировании документа обратно в .doc она принимает нормальный вид. Файл .tex набирается в обычном блокноте, т.е. можно без всяких
Цитата Сообщение от limbir Посмотреть сообщение
ComObj
отредактировать файл, что значительно уменьшает затраты системных ресурсов имхо, единственное что меня смущает - сам язык LaTeX... Очень долго все переписывать прийдется...
А вот и процедура для замены в текстовом файле:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure TForm1.Button1Click(Sender: TObject);
var
 f, f1 : textfile;
 s : string;
begin
 {$i-}
 AssignFile(f, 1.tex);
 reset(f);
 AssignFile(f1, 'temp.tex');
 rewrite(f1);
 {$i+}
 if IOResult=0 then
  begin
   while not eof(f) do
    begin
     readln(f, s);
     s:=AnsiReplaceStr(s, Edit1.Text, Edit2.Text);
     writeln(f1, s);
    end;
   closefile(f);
   closefile(f1);
   erase(f);
   rename(f1, 1.tex);
  end else Label1.Caption:='Ошибка при открытии файла. Код ошибки '+FloatToStr(IOResult);
end;
Без особых наворотов, но зато интуитивно понятно. Жду встречных предложений.

Добавлено через 20 минут
Вот неплохая книга по LaTeX http://itbookz.ru/graphic/latex/81-n...eme-latex.html
1
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
16.09.2009, 23:25 #6
вот еще что нашел: http://www.softsoft.ru/education/mathematics/14463.htm
может нужно еще и в таком направлении поработать?
0
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
17.09.2009, 04:28  [ТС] #7
Цитата Сообщение от Jora Посмотреть сообщение
Красным выделена формула. При конвертировании документа обратно в .doc она принимает нормальный вид.
Вот как конвертировать в .doc я бы и хотел узнать

Цитата Сообщение от Jora Посмотреть сообщение
хм, очень интересно
а есть полная бесплатная версия?)
0
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
17.09.2009, 07:16 #8
Цитата Сообщение от limbir Посмотреть сообщение
Вот как конвертировать в .doc я бы и хотел узнать
В .doc не пробовал, а в .rtf этой программой - http://sourceforge.net/projects/latex2rtf/files/, она распространяется бесплатно и довольно неплохо конвертирует.

Цитата Сообщение от limbir Посмотреть сообщение
а есть полная бесплатная версия?)
Полной версии пока что не нашел, но еще не сдаюсь))
1
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
17.09.2009, 08:27  [ТС] #9
Jora, для конвертирования в .rtf мне необходима только эта программка и файл *.tex, так? или надо устанавливать дополнительно какой то компилятор?
и вот ещё проблемка: устанавливал LaTeX Wid, LeD, но ни один у меня вывести какой нибудь результат не смог, пишут ошибки. чую чего то всё таки не хватает. можешь подсказать чего?)
0
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
17.09.2009, 18:55 #10
дело в том - что я сам пока разбираюсь, начинаю с нуля, подсказать пока нечего, но для конвертирования в .rtf достаточно только той программы и теха (проверял сам). вот код, который я конвертировал с успехом:
Код
\documentclass[12pt]{article}
\usepackage{weird,queer,amssymb,amsmath}
\begin{document}
поехали!

\LaTeX

\begin{equation}
\sqrt{c}=b\cdot m
\end{equation}
\end{document}
Проблема которую я пока не понял как решить - под корнем стоит ",а" вместо "а". Времени не хватает... Но думаю надо работать именно в этом направлении.
0
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
18.09.2009, 04:19  [ТС] #11
Jora, в ЛаТеХ2РТФ на закладке Расширенные поставь галочку напротив использовать ';' вместо ',' и проблемка решена)
в целом мне нравиться что получается, ещё б ту прогу полную найти, очень там удобно из готовых формул ЛаТеХные исходники получать.
1
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
18.09.2009, 07:44 #12
Спасибо за подсказку. А вот и тебе подарочек! У MathType есть функция транслирования на латех!!! включается таким образом: Preferences>Translators... дальше галочку ставь на "Translation to other language (text)"
Теперь при копировании из окна MathType в блокнот - получаешь транслированный на латех код!!!
Теперь стоит вопрос: у тебя работает конвертирование формул с \frac ? У меня что-то не получается...

Добавлено через 9 минут
Все, работает!) Теперь надо заняться составлением документа... 50 страниц текста Ворда перевести на латех... Вот поэтому и не хотелось его использовать...

Добавлено через 2 минуты
нашел еще бочину....
попробуй отконвертировать такую формулу:
Код
\[
\sqrt {{a^2} + {b^2}}
\]
1
limbir
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 10
18.09.2009, 09:23  [ТС] #13
Jora, спасибо, действительно подарочек, порадовал очень сильно!)
не знаю даже в чем у тебя может быть проблема, и \фрак работает нормально и корень суммы квадратов у меня тоже получился. ты напиши что у тебя получается
0
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
18.09.2009, 19:50 #14
Вот что получается у меня (скрин в аттаче). Если коротко - во-первых индексы квадратов стоят внизу, во-вторых - они ооочень маленькие...
0
Миниатюры
Как создать объект MathType (формулу) в MS Word?  
Jora
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
19.09.2009, 10:44 #15
Все, разобрался, проблема была в том, что я указал в программе язык, а нужно было только кодировку указать. Теперь можно работать! Удачи всем!
0
19.09.2009, 10:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2009, 10:44
Привет! Вот еще темы с ответами:

Как программно редактировать формулу Equation или Mathtype - VBA
как в vba можно програмно редактировать формулу equation или mathtype? например, программно вывести 2 в степени2=4

MathType открывает другую формулу. - MS Word
У меня документ Word 2007 в котором много формул набраных в MathType, с какого то момента , пытаясь отредактировать ранее введённую...

Mathtype в Word - MS Word
Здравствуйте, столкнулся с такой проблемой: после того, как делаю формулу в mathtype, на основном документе она не полностью появляется,...

Word + MathType. - MS Word
Работаю в Word + MathType. На русском языке достать документацию по MathType не удалось. Поэтому вопрос. Как в MathType или в Word...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru