Sunday, December 5, 2010

Сжатие *.pdf файла

Вот и пришло мое время писать резюме... Как инструмент конечно же выбрал LaTeX, стиль документа moderncv. Очень красивый и толковый стиль, как по мне. Но вот беда, размер резюме (1.5 страницы А4) занимает слишком много - 330kb, когда на сайтах поиска работы, стоит ограничения на размер прикрепляемого файла примерно - 200kb.

Решение проблемы имеет много путей, среди которых замена стиля документа, отказ от LaTeX/PDF в пользу RTF/DOC форматов, либо искать пути уменьшения размера файла. Я же пошел по последнему, и вот в результате наткнулся на забавную фичу, про которую прочитал здесь. Допустим имеется файл cv.pdf который необходимо сжать:

pdf2ps cv.pdf cv.ps
ps2pdf cv.ps cv_compressed.pdf

То есть конвертируем PDF>PS, а потом обратно PS>PDF.  В моем случае файл уменьшился с 330kb > 158kb.

Можно так же использовать следующие команды:
ps2pdf -dUseFlateCompression=true cv.ps
ps2pdf -dOptimize=true cv.ps

Но результата остался прежним.

Saturday, June 19, 2010

Тенденції розвитку цивільної авіації

     На повітряному транспорті за останні 25 років в характерних відношеннях відбулись корінні зміни, які знайшли своє відображення в утворенні нових форм і методі конкурентної боротьби удосконалення системи керування авіатранспортним виробництвом, розширенням і ускладненням залежностей між попитом і пропозицією.

      Виділяються глобальні тенденції , які формують вигляд повітряного транспорту на теперішній момент та в майбутньому, без врахування яких неможливий розвиток жодної авіакомпанії. Це:

1. Активне запровадження у багатьох країнах політики дерегулювання та лібералізації як на внутрішніх, так і на зовнішніх авіалініях.
2. Консолідація та інтеграція авіакомпаній.
3. Розвиток автоматизованих систем бронювання квитків.
4. Розподіл нових принципів фінансування поставок літаків.
5. Приватизація авіакомпаній.
6. Введення жорстких обмежень по шуму авіаційних двигунів.
7. Збільшення ролі IATA та ICAO та зміни її стратегії.
8. Швидкий розвиток вантажних експрес-перевозок невеликих відправок.

    Світова авіаційна галузь в 2009 р. зазнала найбільших втрат грошей і пасажирів. Міжнародна організація цивільної авіації (ICAO) розрахувала, що в 2009 р. об'єм перевезень пасажирів по всьому світу скоротиться на 3,1%. Причому на міжнародних лініях спад складе 3,9%, а на внутрішніх — 1,8%. В умовах кризи люди економлять на ділових зустрічах. Значно знизились доходи авіакомпаній: 510 мільярдів $ до 479 мільярдів $ в 2007 та 2008 роках відповідно (таблиця 2.1).



    В даній таблиці наведено, статистичні дані світового ринку авіаційних перевезень. Аналізуючи данні можна зробити висновок, що період найнижчого спаду скоріш за все подоланий (Рис.2.1). Найбільшими складностями світові авіакомпанії зіткнулись в другій половині 2008 року, та на протязі 2009 року. Але вже в 2009 зафіксований ріст, і за прогнозами авіакомпанії можуть вийти на беззбитковий рівень вже в 2011 році.



    Світова статистика пасажирських авіаперевезень показала такий спад завдяки негативній динаміці в США і Європі, де працюють основні авіакомпанії світу. У США загальний об'єм авіаперевезень пасажирів скоротився на 5,5%, а в Європі — на 4,8%. При цьому в країнах Європи об'єм пасажирських перевезень на міжнародних рейсах скоротився на 4%, а на внутрішніх — на 10,5%. Більш всього від кризи постраждали авіакомпанії Африки, які завершують рік падінням пасажирських авіаперевезень на 9,6%.


    Як для одної з найбільш циклічного сектору індустрії, немає нічого дивного, що фінансові показники авіакомпаній, тісно пов’язані з економічним ростом території на якій вони проводять обслуговування. Але є унікальним те, що мережа територій, що обслуговується, залежить від локальних умов. Навіть не дивлячись на розвиток союзів, кооперацій, створених спільних підприємств. Це випадок коли авіакомпанії ще значно залежать від руху, що генерується локальними економіками і торговими полюсами. В результаті успішно працюючі авіакомпанії в теперішніх умовах, знаходяться в Азії та Латинській Америці, де економічний ріст відродився в найбільшій мірі. Найслабші ринки, як видно з діаграми, це Північна Америка та Європа, де процес економічного відновлення знаходиться під тиском споживацького кредиту та досі слабими балансами банків.


    Ринок вантажних перевезень авіаційним транспортом, найбільше постраждав, коли скорочення на ринку пасажирських перевезень значно менше. За даними IATA індустрія пасажирських перевозок втратила 2,5 років росту та 3,5 років росту в сегменті вантажних перевозок.



    Ринок авіатранспорту зріс дуже швидко в кінці 2009 року і на початку 2010. Але ріст продовжує концентруватись на ринках Азії, Латинської Америки та Близького Сходу. Авіакомпанії в великих розвинутих ринках Європи та Північної Америки зіткнулись із значно меншим ростом ринку.


    За повідомленнями IATA середній коефіцієнт завантаженості повітряного транспорту складає 75,6%. Вантажні перевозки показали річне зростання на 10 % при середньому коефіцієнті завантаження 49,1%. З точки зору попиту 2009 рік ввійшов як найгірший рік в індустрії.


    Як показує діаграма (Рис. 2.4) в лютому завжди найнижчі показники загрузки пасажирських місць. Але якщо порівняти дані з даними за минулі 3 роки, то можна побачити значне покращення.


    Комбінація високого попиту і обережного розширення об’ємів заповнило літаки. Більше того, якщо виключити сезонність, то пасажирське заповнення місць в січні підвищилось до рекордного рівня. Що пояснюється, зменшенням кількості пасажирських суден які знаходяться в експлуатації.

     В межах середньострокового прогнозу, виконаного Євроконтролем для 2007 -2030 років, схематично зображений на Рис. 2.5, додатково до основного сценарію розглянуто песимістичний та оптимістичний прогноз. Евроконроль вважає, що середній річний ріст складатиме 3,7% в базовому сценарії, 4,7% при оптимістичному пронозі та 2,4% у випадку песимістичного пронозу.


    Очевидно деякі країни демонструють високий ріст ринку по відношенню до інших країн (Україна, Білорусь, Грузія та ін.). Основною причиною цього швидше за все є ріст економік цих країн та їх адаптацію до європейських стандартів проживання в контексті персональних подорожей авіатранспортом, тоді як у розвинутих країнах (Британія, Німеччина, Франція, Норвегія) прогнозується порівняно незначний ріст.
Склад світового парку повітряних суден
    Загальна кількість які використовуються для пасажирських перевезень на кінець року з місцями більше 19 складає 19620 літаків, в порівнянні з 2007 років різниця складає 15 літаків.




    Структура флоту повітряних суден авіакомпаній відобразила неоднозначні тенденції 2008 року. В першій половині якого ціни на авіаційний керосин змусив компанії списувати старіші літаки на користь новим більш економічним. В другій половині року, через спад попиту авіакомпанії почали вилучили з експлуатації частину авіалайнерів.



    В 354 літаки були вилучені з сервісу в 2008 році, але це менше ніж 403 пасажирських літаки було списано в 2007 році. В результаті в 2008 році, кількість законсервованих пасажирських літаків відповідно до ASCEND збільшилась з 2698 до 3341, що дуже близько історичного максимуму 2002-2003 років.


    Незважаючи на це, деякі сегменти пасажирських літаків виросли в 2008 році. Наприклад сегмент великих регіональних лайнерів з 70 до 119 місць виріс на 4,4%. Це пояснюється через збільшення попиту на сучасні регіональні літаки, переважно Embraer E-Jets та Bombardier’s CRJ900.
Другій сегмент з помітним ростом це пасажирські літаки які мають 170-239 місць, ріст склав 2,9%. Ці повітряні судна популярні в бюджетних авіакомпаніях які продовжили свій ріст незважаючи на складну економічну ситуацію року.


    Невеликій ріст можна помітити в категорії міжнародних широкого фюзеляжних літаків (240 -349 місць). Ця категорія включає літаки A330-300 та Boeing 777-200/-300 , які позиціонуються як економічні, щодо витрат палива, і є популярними у мережевих перевізників.

    Незважаючи на поставку 12 Airbus A380, кількість великих широко фюзеляжних літаків з місцями більше 350 продовжує падати. Тільки 602 таких літаків, переважно Boeing 747-400, залишились в експлуатації. Значна часина 747 мих була переобладнана в вантажні, а близько 28 таких літаків було вилучено в 2008 році.



    Відповідно з таблиці видно, що широкофюзеляжні літаки на порядок молодші ніж вузькофюзеляжні. Це пояснюється тим, що авіалінії намагаються використовувати сучасні паливо ефективні літаки в широко фюзеляжному сегменті, через те, що витрати палива тут вищі ніж в вузько фюзеляжному сегменті. В загалом флот вік флоту дещо знизився з 11,6 в 2007 до 11,5 років в 2008. Це може бути знаком того, що незалежно від фінансової кризи, що перешкоджає авіакомпаніям інвестувати капітал в новий флот, економічний тиск збоку витрат палива створив необхідність експлуатувати сучасні літаки. Найбільша модернізація відбулася в секторі великих регіональних літаків (70 - 119 місць), де старі літаки такі як DC-9 повально замінюються новими літаками типу Bombardier CRJ –серії чи Embraer E-Jets.



Матеріали, таблиці та графіки зібрано з наступних джерел:

http://www.iata.org/
http://www.dlr.de/fw
http://www.icao.int/Act_Global/
http://epp.eurostat.ec.europa.eu/
http://files.aea.be/News/PR/
http://www.airfleets.net/

Thursday, March 18, 2010

Avermedia a310 on Acer Aspire

Наконецто настроил свой Avermedia a310, который встроенный в мой ноут, в  Ubuntu 9.10. Мне подсказали установить один очень интересный пакет:


sudo apt-get install linux-firmware-nonfree
Потом установил, kaffeine... И все заработало! Заработала вкладка TV:


 



Сканируем каналы и вот, оно работает!  Интересно, что в kaffeine, устройство опознается как: Zarlink ZL10353 DVB-T.
Если вспомнить стандартный kaffeine с TV-Joy, который идет вместе с Windows Vista, то можно сделать выводы:
  • Стандартная прога, ну уж очень бедная... Функциональность слишком минимальна, нет отображает каналы из слабым сигналом. Оно просто не показывает их в списке. Если же сигнал ухудшился, то TV-Joy захлебывается, подвивает... То же случается при быстром переключении каналов.
  • kaffeine в этом смысле выгдлядит получше, здесь при пропадании сигнала картинка подвисает, как это должно быть, а программа отвечает на все запросы пользователя. Правда иногда выбивает ошибки: мол не найдено устройство, но простое переключение канала решает все.

Saturday, February 20, 2010

Авторизатор для моего ISP (Обработка HTML в Python)

Предыстория.
После весьма болезненного перехода на нового провайдера Интернет, появилась задача написать авторизатор. Дело в том что провайдер дает возможность доступа к сети двумя способами:
  1. с помощью специальной программки, которая написана для ОС Windows. Програмка совсем неплохая и даже отлично работает под Wine (разве что криво русские шрифты отображаются).
  2. с помощью авторизаци через web browser. Происходит это примерно так: пользователь заходит на сайт провайдера (который всегда доступен), вводит в нужные формы логин и пароль. В последствии загружается страница, что обновляется через каждые 40 сек. Конечно же если мы закроем страницу, то по истечении 40 сек. доступ в Интернет оборвется.
Решил попробовать свои силы в написании скрипта авторизации, использовать попробую Python. Я совсем не эксперт в этой области и далеко от уверенного пользователя, потому наличие не оптимально написанного кода почти гарантировано.
Задача
Необходимо написать скрипт, который бы автоматически генерировал ссылку для авторизации (по данным взятым с страници провайдера) и каждые 40 секунд делал запрос по этой ссылке.
Разбор полетов
После того как в нужные формы пользователь ввел данные формируется ссылка следующего формата:
http://stat.pautina-nau.net/cgi-bin/stat.pl?ses=11111111&a=98&uu=111111&pp=123456789abcdef123456789abcdef00
? - указывает конец ссылки и дальше передаются переменные.
& - разлелитель между переменными.
Какие выводы?
  1. скрипт который обрабатывает данные stat.pl
  2. переменная с именем пользователя (логином) uu.
  3. Переменная котороая содержит пароль pp.
  4. Неизвестная переменная со значением a=98
  5. Неизвестная переменная со значением ses=11111111
Посмотрим в как это описывается в разметке страницы? Для начала просмотрим
страницу в которой находятся формы для логина и пароля:

<form method=get action='/cgi-bin/stat.pl' onsubmit='pp.value=hex_md5(ses.value+" "+pp.value); return true'>
<input type=hidden name=ses value=201110>
<table class='tbg1'><tr class='head'><td align=center colspan=3>
<input type=hidden name=a value=98>Если вы хотите получить доступ в интернет без 
авторизатора - авторизуйтесь в этом окне. 
После авторизации не закрывайте окно - оно будет периодически авторизовываться на 
сервере и поддерживать открытым доступ в интернет</td></tr>
<tr class=row2><td align=right width='33%'>Логин:</td><td><input type=text name=uu size=25 value='' tabindex=4></td> <td rowspan=2 class=row2>
<input type=submit value=' Авторизоваться ' tabindex=6></td></tr><tr class=row2> <td align=right>Пароль:</td>
<td><input type=password name=pp size=25 value='' tabindex=5></td></tr></table>
Этот кусок исходного кода страницы содержит информацию о интересных для нас формах: логин, пароль и формирователья запросов. Рассматривать код начнем с конца:
<td align=right>Пароль:</td>
<td><input type=password name=pp size=25 value='' tabindex=5></td> 
видно что переменная которая содержит пароль называется pp.
Логин:<input name="uu" size="25" tabindex="4" type="text" value="" />
аналогично, переменная с логином называется uu.

<input type=hidden name=ses value=111111>
А в hiden спрятана переменная  ses=111111
<input type=hidden name=a value=98>
Аналогично спрятана в  hiden другая  переменная  a =98

С остальными переменными понятно, но что же означают ses и а ?
Формирование запроса
<form method=get action='/cgi-bin/stat.pl' onsubmit='pp.value=hex_md5(ses.value+" "+pp.value); return true'>

Для запроса используется метод GET, а формирование ссылки происходит с помощью некой функции hex_md5(), при чем как аргумент пересылается ему строка формата:
[ses] [pp]
То есть состоит из таинственной для нас переменной ses через пробел с паролем pp.
Что такое md5?
MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины. Является улучшенной в плане безопасности версией MD4. Зная MD5-образ (называемый также MD5-хеш или MD5-дайджест), невозможно восстановить входное сообщение, так как одному MD5-образу могут соответствовать разные сообщения.
Проще говоря шифрует пароль, да так что в обратную сторону потчти невозможно расшифровать.
Механизм формирования ссылки более-менее понятен: через командную строку отправляются данные о логине пароле, переменная ses, переменная а.
Понаблюдав за переменными, можно сделать вывод:
ses — изменяющая свое значение переменная, правда не чаcто гдето 1-2 раза в сутки, используется для шифрования пароля.
a — статическая, не меняется, скорее всего отвечает за идентификацию необходимой формы.

Теперь самое время уточнить задачу:
  1. Получить код страници с формой для авторизации;
  2. Выделить значение переменной ses;
  3. Сформировать строку для зашифровки;
  4. Используя алгоритм md5 зашифровать строку;
  5. сформировать и выполнить запрос по ссылке.
Реализация
Вот что у мну получилось:

#!/usr/bin/env python
import re
import urllib
import hashlib
import logging
import sys

uu=11111 #user name
pp=1111  #password
a=98     #static variable

#intit dictionary of debug levels
LEVELS = {'-debug': logging.DEBUG,
          '-info': logging.INFO,
          '-warning': logging.WARNING,
          '-error': logging.ERROR,
          '-critical': logging.CRITICAL}
#Check for programmed arguments (arguments passed through command line)
if len(sys.argv) > 1:
    level_name = sys.argv[1]
    level = LEVELS.get(level_name, logging.NOTSET)
    logging.basicConfig(level=level)
#logging.basicConfig(level=logging.DEBUG)


# Get a file-like object for the Python Web site's home page.
f = urllib.urlopen(u"http://stat.pautina-nau.net/cgi-bin/stat.pl?a=101&a=99")
# Read from the object, storing the page's contents in 'html_page'.
html_page = f.read()
f.close()
logging.debug(html_page)
logging.debug("\n ***********************************************")

#find needed value from hidden form using regular expression
match = re.search( ur"name=ses[\s]+value=([0-9]{2,8})", html_page )
ses = match.group(1).encode( "cp1251" )
logging.debug("ses = "+ ses)

#encode password with md5 algorithm
pp_value = hashlib.new('md5')
pp_value.update(str(ses)+" "+str(pp))
pp = pp_value.hexdigest()
logging.debug(pp)

#form executable url
params = urllib.urlencode({'ses': ses, 'a': 98, 'pp': pp})
f = urllib.urlopen("http://stat.pautina-nau.net/cgi-bin/stat.pl?%s" % params)
f.read()
html_page_resp = f.read()
f.close()

Как по мну полезный пример, только не содержит функции обновления каждые 40 секунд. Позже разберусь с таймерами и уже в следующей статье дам более подробное описание кода скрипта.

Friday, February 19, 2010

Инженерная шутка


Бесцельно странствуя в просторах Интернета, наткнулся на интересную студенческую историю американского университета, которая представлена в оригинале далее:


The following is an actual question given on a University of Washington engineering mid-term. The answer was so "profound" that the Professor shared it with colleagues, and the sharing obviously hasn't ceased...

Bonus Question: Is Hell exothermic (gives off heat) or Endothermic (absorbs heat)?

Most of the students wrote Proofs of their beliefs using Boyle's Law, (gas cools off when it expands and heats when it is compressed) or some variant. One student, however, wrote the following:

"First, we need to know how the mass of Hell is changing in time. So we need to know the rate that souls are moving into Hell and the rate they are leaving. I think that we can safely assume that once a soul gets to Hell, it will not leave. Therefore, no souls are leaving. As for how many souls are entering Hell, let us look at the different religions that exist in the world today. Some of these religions state that if you are not a member of their religion, you will go to Hell. Since there are more than one of these religions and since people do not belong to more than one religion, we can project that all souls go to Hell. With birth and death rates as they are, we can expect the number of souls in Hell to increase exponentially.

Now, we look at the rate of change of the volume in Hell because Boyle's Law states that in order for the temperature and pressure in Hell to stay the same, the volume of Hell has to expand as souls are added. This gives two possibilities:

1. If Hell is expanding at a slower rate than the rate at which souls enter Hell, then the temperature and pressure in Hell will increase until all Hell breaks loose.

2. Of course, if Hell is expanding at a rate faster than the increase of souls in Hell, then the temperature and pressure will drop until Hell freezes over.

So which is it?

If we accept the postulate given to me by Teresa Banyan during my Freshman year, "...that it will be a cold day in Hell before I sleep with you.", and take into account the fact that I still have not succeeded in having sexual relations with her, then, #2 cannot be true, and thus I am sure that Hell is exothermic and will not freeze."

This student received the only A.

Friday, February 12, 2010

Python + Bluetooth, неужели просто?

Известно что Python один из самых просты и понятных языков программирования, его код прост и понятен не подготовленному пользователю. Вот решил проверить на себе.




1. Задача
Попробуем обнаружить, включенные по близости bluetooth устройства, определим их имя и адрес. Если повезет то может и удастся переслать файл.
2. Необходимо установить
Использовать будем библиотеку pybluez и lightblue.
[code lang=python]sudo apt-get install python-bluez, lightblue[/code]
3. Оброз наявной информации
1) Что такое bluetooth почитаем здесь:
http://en.wikipedia.org/wiki/Bluetooth
2)Очень неплохая книга, правда на ангилйском языке: Bluetooth Essentials for Programmers
http://www.btessentials.com/examples/examples.html
http://www.ebook3000.com/Bluetooth-Essentials-for-Programmers_4851.html
3)Описание библиотеки lightblue:
http://lightblue.sourceforge.net/
4. Реализация
Вот есть простой пример:

#!/usr/bin/env python
from bluetooth import *
target_name = "k750i";
target_address = None

nearby_devices = discover_devices()
for address in nearby_devices:
    if target_name == lookup_name( address ):
        target_address = address
        break
if target_address is not None:
    print "found target bluetooth device with address", target_address
else:
    print "could not find target bluetooth device nearby"
пере запуском необходимо отредактировать следующую строку:
target_name = "My Phone" 
My Phone — название Вашего телефона или bluetooth устройства. Перед запуском нужно конечно же что бы bluetooth на телефоне был включен и выставлена опция «видимый для всех»
Программа должна по идеи ответить:
found target bluetooth device with address 00:12:34:56:78:AB
00:12:34:56:78:AB - собственно адрес Вашего усройства.
Немного модифицируем скрипт:
#!/usr/bin/env python
from bluetooth import *
print 'start of search'
nearby_devices = discover_devices()
for address in nearby_devices:
    print 'name of device = ', lookup_name( address ),'address = ',address
print 'end'
Очевидно, что discover_devices() ищет все включенные по близости устройства и сохраняет их в словарь, а последующий цикл выводит имена и 48 битные адреса устройств.
Результат выполнения:
start of search
name of device = k750i address = 00:12:34:56:78:AB
name of device = nokia 6300 address = 00:12:34:56:78:AB
end
Так искать bluetooth устройства получилось. Правда практичной задачу особо не назовешь. В следующей заметке попробую написать о передачи файла с ноутбука на телефон с помощью библиотеки lightblue, так же надо бы разобраться с функцией иследования сервисов bluetooth устройства.

Thursday, February 11, 2010

Matlab формулы через LaTeX в MS Word.

Проблема

Очень часто приходится в лабораторных, домашних и курсовых работах портировать/набирать формулы, дабы показать цепочку размышлений, алгоритм или аналитический вывод. К тому же очень часто используется Matlab, для расчетов. Если задача решается символьно (symbolic computations) то по сути надо перенабивать формулы вывода Matlab с командного окна в Word или Open Office. Довольно нудная и неблагодарная работа.

Решение

Порившись немного в help, нашел все таки, что нужно. Есть такая функция latex(), которая представляет символьное выражение в LaTeX виде.  Да к стате, чтобы  переводить формулы из Matlab в MS Word, LaTex знать не обязательно.
Для примера возьмем простую программку:
%clear workspace and console output
clc
clear
%define of symbolic variables  
syms t beta_1 omega

%build symbolic expression 
%movement of angle  
alpha_2=atan(tan(t*omega)/cos(beta_1))
%differentiates movement of angle 2 times
ddalpha_2=diff(alpha_2,t,2)



Вывод в консоли будет следующим:
alpha_2 =
 
atan(tan(omega*t)/cos(beta_1))
 
 
ddalpha_2 =
 
(2*omega^2*tan(omega*t)*(tan(omega*t)^2 + 1))/(cos(beta_1)*(tan(omega*t)^2/cos(beta_1)^2 + 1)) - (2*omega^2*tan(omega*t)*(tan(omega*t)^2 + 1)^2)/(cos(beta_1)^3*(tan(omega*t)^2/cos(beta_1)^2 + 1)^2)


Не очень читабельно, не правда ли? Можно конечно использовать функцию pretty (), что сделает формулы наглядными, но в любом случае надо будет их вручную набирать.
Добавим в коде еще пару строк:

tex_out_alpha_2 = latex(alpha_2)
tex_out_ddalpha_2 = latex(ddalpha_2)

Эти команды просто преобразуют коды Matlab в LaTeX. В командном окне получим результаты:
tex_out_alpha_2 =

\arctan\!\left(\frac{\tan\!\left(\mathrm{omega}\, t\right)}{\cos\!\left(\mathrm{beta}_{1}\right)}\right)


tex_out_ddalpha_2 =

\frac{2\, {\mathrm{omega}}^2\, \tan\!\left(\mathrm{omega}\, t\right)\, \left({\tan\!\left(\mathrm{omega}\, t\right)}^2 + 1\right)}{\cos\!\left(\mathrm{beta}_{1}\right)\, \left(\frac{{\tan\!\left(\mathrm{omega}\, t\right)}^2}{{\cos\!\left(\mathrm{beta}_{1}\right)}^2} + 1\right)} - \frac{2\, {\mathrm{omega}}^2\, \tan\!\left(\mathrm{omega}\, t\right)\, {\left({\tan\!\left(\mathrm{omega}\, t\right)}^2 + 1\right)}^2}{{\cos\!\left(\mathrm{beta}_{1}\right)}^3\, {\left(\frac{{\tan\!\left(\mathrm{omega}\, t\right)}^2}{{\cos\!\left(\mathrm{beta}_{1}\right)}^2} + 1\right)}^2}

Бред... Он нам поможет!!!

Что бы корректно воспроизвести формулы, необходимо установить надстройку для MS Word, которая называется MathType. В моем случае была использована 6 я версия. Устанавливаем прогу, появляется новая вкладка (Office 2007) на панели. Дальше нужно проделать следующие действия (в картинках, без комментариев):
Step 1
Step 2
 
Step 3
  

Step 4
  

Step 5
 

Все сконфигурировано, теперь просто вставим LaTeX (тот бредовый набор символов ) текст в редактор  формул, результат будет слудующим:
 


Неплохо, правда? Первую формулу можно было конечно набрать, но вторую? (Мне было бы лень)
Нужно заметить, что в LaTeX индекс обозначается через нижние подчеркивание, k_1 = k1. То есть обозначив символьную переменную в таком виде, мы определяем ее индекс. Важно, то что если переменная будет задана в виде k_22 то индексом будет считаться только первый символ, результат будет k12. (в LaTeX если символов в индексе больше чем один, их нужно заключить в фигурные скобки k_{22} ).Важно это помнить, да бы не запутаться потом.

Теперь попробуем заменить названия переменных на грецкие буквы:
Немного модифицируем нашу программу:

clc
clear
syms t beta_1 omega
alpha_2=atan(tan(t*omega)/cos(beta_1))
ddalpha_2=diff(alpha_2,t,2)
tex_out_alpha_2 = latex(alpha_2)
tex_out_ddalpha_2 = latex(ddalpha_2)

%find 'beta'  and replace on  '\\beta'
str_find='beta'
str_replace = '\\beta'
str_out = regexprep(tex_out_alpha_2, str_find, str_replace)

%find 'omega'  and replace on  '\\omega' 
str_find ='omega'
str_replace = '\\omega'
str_out = regexprep(str_out, str_find, str_replace)


Добавленные команды 'beta' на '\\beta' (для LaTeX нужно только \beta, но для того чтобы Matlab не запутался, \ обозначают как \\).
\beta и \omega -нарисует соответственно грецкую бету и омегу.



Так лучше?Теперь попробуем вставить LaTeX код в Kile. Минимальный документ с формулой будет иметь вид:


\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}

%opening
\title{}
\author{}

\begin{document}

\maketitle

\begin{abstract}

\end{abstract}

\[
\frac{2\, {\mathrm{\omega}}^2\, \tan\!\left(\mathrm{\omega}\, t\right)\, \left({\tan\!\left(\mathrm{\omega}\, t\right)}^2 + 1\right)}{\cos\!\left(\mathrm{\beta}_{1}\right)\, \left(\frac{{\tan\!\left(\mathrm{\omega}\, t\right)}^2}{{\cos\!\left(\mathrm{\beta}_{1}\right)}^2} + 1\right)} - \frac{2\, {\mathrm{\omega}}^2\, \tan\!\left(\mathrm{\omega}\, t\right)\, {\left({\tan\!\left(\mathrm{\omega}\, t\right)}^2 + 1\right)}^2}{{\cos\!\left(\mathrm{\beta}_{1}\right)}^3\, {\left(\frac{{\tan\!\left(\mathrm{\omega}\, t\right)}^2}{{\cos\!\left(\mathrm{\beta}_{1}\right)}^2} + 1\right)}^2}
\]
\end{document} 



Нужно заметить, что в LaTeX редакторах нужно не просто вставить формулу из Matlab, но заключить ее в  "\[" и  "\[" (без кавычек):

\[
\arctan\!\left(\frac{\tan\!\left(\mathrm{\omega}\, t\right)}{\cos\!\left(\mathrm{\beta}_{1}\right)}\right)
\] 

Думаю идея понятна))), надеюсь поможет Вам с экономить время и избавиться от рутинной работы. Когда разберусь с регулярными выражениями, постараюсь решить проблему с индексами да и более красиво реализовать замену строк.
 Полезные ссылки:
http://www.mathworks.com/access/helpdesk/help/toolbox/symbolic/latex.html
http://www.math.harvard.edu/texman/node21.html