Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
14.09.2009, 07:44     Как создать объект MathType (формулу) в MS Word?
  #1
надо бы сделать програмку расчёта, которая генерировала отчёт в ворде в виде набора текста и формул, содежащих дроби, корни, степени, пределы и т.д. (объект MathType). к примеру:
x=(a+b)/c=(1+2)/3=1.
здесь a,b,c - переменные величины, т.е. цифры расчитываются/задаются ранее и подставляются в формулу.
имею давольно большой опыт примитивного программирования, но был бы признателен за подробный ответ
AdAgent
Объявления
14.09.2009, 07:44
Jora
Новичок
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
15.09.2009, 23:57
  #2
Доброго времени суток! Я сам уже пару месяцев ищу ответ на этот вопрос, но так ничего и не нашел... Единственное что пришло в голову - использовать LaTeX (там формулы записываются в текстовом виде) и затем конвертировать в формат Ворда. Но это тоже проблематично т.к. язык не учил этот, а учить ради такой задачки как-то лень... Может найдутся тут добрые люди...
Да, кстати, для Вас, limbir, я бы рекомендовал использовать "шаблон" документа, в котором в определенных местах стоят "маркеры", например "Значение001", "Значение002" и т.д., потом этот "маркер" легко заменить нужным текстом. Вобщем предлагаю развивать эту тему - она будет полезна многим, вылаживайте свои идеи, а я завтра выложу парочку примерчиков на замену текста, это не много, но все же лучше чем ничего...
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
16.09.2009, 04:16  [ТС]
  #3
Jora, спасибо за советы! с LaTeXом пытался разобраться, но как то не пошла у меня с ним дружба) да и по экспорту в ворд и латеха ничего найти не смог. По поводу шаблонов с маркерами мысль хорошая, но в mathtype маркер не поставить. Вчера наткнулся на книжку, много полезного для себя оттуда узнал, называется "ПРОГРАММИРОВАНИЕ ДОКУМЕНТОВ И ПРИЛОЖЕНИЙ MS OFFICE в DELPHI" Корнякова В. Н. Так же есть его статьи на сайтах www.kornjakov.ru либо www.kv.by, там практически вся полезная информация из книги. Только работе с объектами OLE посвящено всего пара страниц (и ни слова про MathType), прочёл их вскользь, сегодня попробую разобраться поподробнее. Попробовал написать автору, мож ответит. Как только заработает прога, создающая и редактирующая формулы обязательно всё сюда выложу.
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
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 что нибудь написать. Только пока никак не получается(.
Jora
Новичок
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
16.09.2009, 20:12
  #5
я тоже так пробовал, но дальше дело не пошло...

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

Код Code
1
2
3
4
5
6
7
8
9
10
\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
Jora
Новичок
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
16.09.2009, 23:25
  #6
вот еще что нашел: http://www.softsoft.ru/education/mathematics/14463.htm
может нужно еще и в таком направлении поработать?
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
17.09.2009, 04:28  [ТС]
  #7
Цитата Сообщение от Jora Посмотреть сообщение
Красным выделена формула. При конвертировании документа обратно в .doc она принимает нормальный вид.
Вот как конвертировать в .doc я бы и хотел узнать

Цитата Сообщение от Jora Посмотреть сообщение
хм, очень интересно
а есть полная бесплатная версия?)
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 Посмотреть сообщение
а есть полная бесплатная версия?)
Полной версии пока что не нашел, но еще не сдаюсь))
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
17.09.2009, 08:27  [ТС]
  #9
Jora, для конвертирования в .rtf мне необходима только эта программка и файл *.tex, так? или надо устанавливать дополнительно какой то компилятор?
и вот ещё проблемка: устанавливал LaTeX Wid, LeD, но ни один у меня вывести какой нибудь результат не смог, пишут ошибки. чую чего то всё таки не хватает. можешь подсказать чего?)
Jora
Новичок
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
17.09.2009, 18:55
  #10
дело в том - что я сам пока разбираюсь, начинаю с нуля, подсказать пока нечего, но для конвертирования в .rtf достаточно только той программы и теха (проверял сам). вот код, который я конвертировал с успехом:
Код Code
1
2
3
4
5
6
7
8
9
10
11
\documentclass[12pt]{article}
\usepackage{weird,queer,amssymb,amsmath}
\begin{document}
поехали!
 
\LaTeX
 
\begin{equation}
\sqrt{c}=b\cdot m
\end{equation}
\end{document}
Проблема которую я пока не понял как решить - под корнем стоит ",а" вместо "а". Времени не хватает... Но думаю надо работать именно в этом направлении.
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
18.09.2009, 04:19  [ТС]
  #11
Jora, в ЛаТеХ2РТФ на закладке Расширенные поставь галочку напротив использовать ';' вместо ',' и проблемка решена)
в целом мне нравиться что получается, ещё б ту прогу полную найти, очень там удобно из готовых формул ЛаТеХные исходники получать.
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 минуты
нашел еще бочину....
попробуй отконвертировать такую формулу:
Код Code
1
2
3
\[
\sqrt {{a^2} + {b^2}}
\]
limbir
Новичок
1 / 1 / 0
Регистрация: 11.09.2009
Сообщений: 9
18.09.2009, 09:23  [ТС]
  #13
Jora, спасибо, действительно подарочек, порадовал очень сильно!)
не знаю даже в чем у тебя может быть проблема, и \фрак работает нормально и корень суммы квадратов у меня тоже получился. ты напиши что у тебя получается
Jora
Новичок
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
18.09.2009, 19:50
  #14
Вот что получается у меня (скрин в аттаче). Если коротко - во-первых индексы квадратов стоят внизу, во-вторых - они ооочень маленькие...
Миниатюры
Как создать объект MathType (формулу) в MS Word?  
Jora
Новичок
3 / 3 / 0
Регистрация: 15.09.2009
Сообщений: 8
19.09.2009, 10:44     Как создать объект MathType (формулу) в MS Word?
  #15
Все, разобрался, проблема была в том, что я указал в программе язык, а нужно было только кодировку указать. Теперь можно работать! Удачи всем!
Yandex
Объявления
19.09.2009, 10:44
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Ответов Автор Дата
Delphi Создать обЪект класса , у которого в параметрах конструктора объект этого же класса
Вот код: TOgmGraphicsClass = class of TOgmGraphicsBlock; TOgmGraphicsBlock = class(TOgmGraphicsItem) (Объект класса TOgmGraphicsItem я могу создать) конструктор класса TOgmGraphicsBlock...
Delphi для начинающих 7 Ask@el 06.09.2014 13:34
Delphi Как преобразовать формулу введенную в Edit типа String в решаемую формулу
название не совсем корректное, но САБЖ вот в чем: в Edit вводится целевая функция (f=-x1^2-x2^2), из которой нужно найти частные производные. нахождение производных я реализовал, но проблема в том...
Delphi 6 Centrik 11.06.2013 18:58
Delphi Как программно создать объект на другой форме?
Добрый вечер! Есть код, который должен создать компонент Lbl на другой форме(form4,lbl на ней объявлен), но код выдает ошибку: procedure TForm3.btn4Click(Sender: TObject); const colsv=34;...
Delphi для начинающих 10 Talkoflights 15.05.2013 09:05
Delphi Как создать рекурсивную формулу?
Приветствую) очень нужна помощь. Задача такая - возвести число в степень (например х в степени к) с использованием рекурсивной формулы. В общем задача выглядит так: Посчитать значения выражения:...
Delphi для начинающих 22 lugaru 22.05.2012 01:11
Delphi Как динамически создать объект класса TDCOMConnection?
Новичок-с в этом деле. Делаю так: DCOMConnection1:=TDCOMConnection.Create(nil); DCOMConnection1.ServerGUID=''КАКОЙ-ТО GUID'' DCOMConnection1.ServerName=''КАКОЙ-ТО NAME''...
Delphi 3 gray-82 19.12.2011 10:19
Delphi БД Как создать закладку для шаблона Word для Delphi
Помогите разобраться как создаются закладки x1, x2, x3 в шаблоне Word.Прост шаблон копирнул,а мне нужна ещё одна закладка(x4) и не знаю как её добавить.....здесь пример шаблона: ...
Delphi и базы данных 2 hodas4 29.05.2011 15:00
Delphi Как программно создать объект?
Проблема в следующем: Есть текстовый файл с какими-то строчками (не суть важно с какими, важно то, что мы не знаем их числа). Надо: для каждой прочитанной строчки создать какой-нибудь объект,...
Delphi 1 arf_so 31.01.2010 13:14
Delphi OLE объект MS Word 2000: нет строки состояния, не доступны предварительный просмотр и печать с диалогом выбора принтера.
Создаю OLE - объект для MS Word, Отоброжаю его. Проблема: В контейнере нет строки состояния, а также не доступны предварительный просмотр и печать с диалогом выбора принтера и тд. Вопрос:...
Delphi 5 Alex Y 24.01.2008 10:11
Опции темы

Текущее время: 08:01. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.