11.26.05
LaTeX in TextMate, part 1
I just took my first steps in Ruby by improving on one of the LaTeX commands in TextMate. It’s the command used for creating environments, or it can also be used for plain commands. The way it works is as follows: Suppose the current word, or selection, is name. Then, upon executing the command (current shortcut is Ctrl-<), depending on what name is the current word or selection will be replaced by:
\name{}
with the cursor placed between the braces (and moving out of them if you press tab), or
\begin{name}
\end{name}
with the cursor in placed inside the environment. If optionally the variable TM_LATEX_INSERT_LABEL is set to 1, then the environment becomes
\begin{name}
\label{nam:}
\end{name}
with the cursor placed right after the : for you to provide a label. Once done there, pressing tab will take you to the next line, in order to type the stuff actually inside the environment. A further tab takes you out of the environment. Quite convenient, wouldn’t you agree?
That is of course until you realize that you’d rather not have to type enumerate to create the enumerate environment. A plain enum should suffice.
This is the purpose of my enhancement for the command. What it does is it uses two other environment variables, TM_LATEX_SHORTCUTS and TM_LATEX_COMMANDS to allow you to add functionality.
The TM_LATEX_SHORTCUTS variable should be a list of pairs of the form short=>long, where short is the trigger word, like enum in our example, and long is the result, e.g, enumerate in our example. The pairs should be separated by comma. For instance, a standard list could be
item=>itemize,enum=>enumerate,eqn=>equation,fig=>figure,
thm=>theorem,cor=>corrolary,lem=>lemma,pf=>proof,ds=>displaystyle
The TM_LATEX_COMMANDS variable should be a regular expression to be matched against the word, to determine whether the word is a command or an environment, and act accordingly. This is decided after the expansion due to TM_LATEX_SHORTCUTS happens. For instance this variable could be
text(it|bf|rm|sc|sf)|displaystyle|sum|lim|frac
Here is the code for the command. Just copy the contents of the file into the code for the already existing command with name Insert environment/command based on current word, and adjust the variables as you like. You can also edit the code directly and add your own environments there, it’s pretty straightforward. At the end of the post I’ve added the code for your perusal. I’ll soon add it to the default LaTeX bundle that ships with TextMate, once I get the OK from Allan. If you have any ideas/requests on how to improve this, they are welcome. Now I just need to figure out the best way to have this be triggered with tab instead, without breaking any other behavior. Maybe I could make it be ctrl-tab instead…
I’ll need to also add customization so that the user can determine which environments/commands should get labels.
#!/usr/bin/env ruby
#
# This script will expand the current word either to
# \word{} (if it's matched by the commands pattern),
# to one of the shortcuts in the shortcut dictionary,
# otherwise to \begin{word} … \end{word} with the caret
# inbetween.
#
# With no selection, it will insert \begin{environment}
# … \end{environment} and allow you to overwrite the
# environment name.
testing = ENV['TM_LATEX_COMMANDS'].to_s
commands = /^cite|footcite|footnote|label|ref|text(it|bf|tt|sf|sc)|#{testing}$/
customShortcuts = Hash.new
ENV['TM_LATEX_SHORTCUTS'].to_s.split(',').each { |x|
temp = x.split('=>')
customShortcuts["#{temp[0]}"]="#{temp[1]}"
}
shortcuts = { "it" => "textit", "bf" => "textbf", "tt" => "texttt",
"sf" => "textsf", "sc" => "textsc", "em" => "emph", "fc" => "footcite", "fn" => "footnote", "eqn" => "equation", "item" => "itemize", "enum" => "enumerate" }.update(customShortcuts)
name = STDIN.read
if(!shortcuts[name].nil?)
name = shortcuts[name]
end
if(name == '')
print("\\begin{${1:environment}}\n\t$2\n\\end{$1}")
elsif(commands.match(name))
print("\\#{name}{$1}")
else
lab = ENV['TM_LATEX_INSERT_LABEL'].to_i
if(lab == 1)
labPrefix = name.slice(0,3)
print("\\begin{#{name}}\n\\label{#{labPrefix}:$1}\n\t$2\n\\end{#{name}}")
else
print("\\begin{#{name}}\n\t$1\n\\end{#{name}}")
end
end
Edited to add: Here’s the second version of the command. It now contains code that adds \item to enumeration environments, and more! You can customize the command TM_LATEX_FIRSTLINE to decide, for each environment you want, what to add in the first line of the environment. For instance if you set this variable to:
"equation=>\\label{eqn:$1},theorem=>\\label{thm:$1},customList=>\\item "
then equation and theorem environments will be getting labels, while customList will get an \item appear. Enjoy!
#!/usr/bin/env ruby
#
# This script will expand the current word either to
# \word{} (if it's matched by the commands pattern),
# to one of the shortcuts in the shortcut dictionary,
# otherwise to \begin{word} … \end{word} with the caret
# inbetween.
#
# With no selection, it will insert \begin{environment}
# … \end{environment} and allow you to overwrite the
# environment name.
#
# Add to the environment variable TM_LATEX_COMMANDS the regular expression for any words you want
# expanded as \command{} instead of \begin-\end.
if(ENV.has_key?('TM_LATEX_COMMANDS'))
customCommands = ENV['TM_LATEX_COMMANDS'].to_s
commands = /^cite|footcite|footnote|label|ref|text(it|bf|tt|sf|sc)|#{customCommands}$/
else
commands = /^cite|footcite|footnote|label|ref|text(it|bf|tt|sf|sc)$/
end
# Add to the environment variable TM_LATEX_SHORTCUTS a list of all word combinations you want expanded
# For instance, desc=>description,eqn=>equation etc.
customShortcuts = Hash.new
if(ENV.has_key?('TM_LATEX_SHORTCUTS'))
ENV['TM_LATEX_SHORTCUTS'].to_s.split(',').each { |x|
temp = x.split('=>')
customShortcuts["#{temp[0]}"]="#{temp[1]}"
}
end
shortcuts = { "it" => "textit", "bf" => "textbf", "tt" => "texttt",
"sf" => "textsf", "sc" => "textsc", "em" => "emph", "fc" => "footcite", "fn" => "footnote", "eqn" => "equation", "item" => "itemize", "enum" => "enumerate" }.update(customShortcuts)
# Add to the environment variable TM_LATEX_FIRSTLINE a list of all environments you want to have stuff
# in the first line. for instance itemize=>\\item,enumerate=>\\item etc
customFirstlines = Hash.new
if(ENV.has_key?('TM_LATEX_FIRSTLINE'))
ENV['TM_LATEX_FIRSTLINE'].to_s.split(',').each { |x|
temp = x.split('=>')
customFirstlines["#{temp[0]}"]="#{temp[1]}"
}
end
firstLine = { "enumerate" => "\\item ",
"itemize" => "\\item ",
"description" => "\\item ",
"questions" => "\\question ",
"parts" => "\\part "
}.update(customFirstlines)
# Expand according to shortcuts
name = STDIN.read
if(!shortcuts[name].nil?)
name = shortcuts[name]
end
if(name == '')
stringToPrint = "\\begin{${1:environment}}\n\t$2\n\\end{$1}"
elsif(commands.match(name))
stringToPrint = "\\#{name}{$1}"
else
lab = ENV['TM_LATEX_INSERT_LABEL'].to_i
if(lab == 1)
labPrefix = name.slice(0,3)
if(firstLine[name].nil?)
stringToPrint = "\\begin{#{name}}\n\\label{#{labPrefix}:$1}\n\t$2\n\\end{#{name}}"
else
stringToPrint = "\\begin{#{name}}\n\\label{#{labPrefix}:$1}\n\t#{firstLine[name]}$2\n\\end{#{name}}"
end
elsif(firstLine[name].nil?)
stringToPrint = "\\begin{#{name}}\n\t$1\n\\end{#{name}}"
else
stringToPrint = "\\begin{#{name}}\n\t#{firstLine[name]}$1\n\\end{#{name}}"
end
end
print stringToPrint
Later
Costas Skiadas said,
November 21, 2006 at 6:45 am
Molis divazoume me ton Costa sto spiti tou ta sxetika me to TextMate
416 anafores; poly kala!…
Elpizw na diavaseis to mynima
Xairetismous
Costas kai Mpampas
arremilem said,
November 19, 2007 at 1:13 pm
Nice forum!
golfing equipment
Наращивание said,
November 21, 2007 at 5:58 am
холодное наращивание волос по японской технологии (холодное, щадящее)
элитные 100 % славянские волосы
NEW! Коррекция прядей - 5 000 рублей - 2 400 рублей
тел: (495) 683-48-65, 686-11-78
lokerman said,
November 26, 2007 at 4:06 pm
Hello
Here’s a interesting video I made to show off the Dervish’s dance from the Guild-Wars night-fall weekend.
The dance the Dervish does is the same one that Christoper Walken did in the video for Fatboy Slims’ - Weapon of choice music video (hence the music used)
What do you think about it?
Mine
youtube.com/watch?v=j_aONMdkzxU
Original for those that may not have seen it
youtube.com/watch?v=0WW8flwpH-Q
tahListLort said,
November 27, 2007 at 12:18 pm
Hi, hello, privet
toyota camry blowdryer
naisioxerloro said,
November 28, 2007 at 7:45 am
Hi.
Good design, who make it?
SWomack said,
December 1, 2007 at 2:20 am
Hi folks
I am in ths process of taking out a lon with Lombard Direct and I understand that they are owned by the Royal Bank of Scotland and I was wondering if anyone knew if they were based in the UK or in Italy in the Lombardy Region?
Can anyone shed ayn light on this?
Many thanks
Nikita Aleksandrov said,
December 3, 2007 at 9:43 pm
The European credit cards: MasterCard, Visa (Gold/Platinum/Corparate/Bissnes/Signature), all cards workers, a guarantee, balance of cards from 2000 $, behind the detailed information and the prices write:admin.cc@mail.ru, or ICQ 423669709.
The credit card, credit cards, plastic cards, mastercard, visa, carding, cvc, damp, dump, bank cards, plastic cards, credit cards, a debit card, a bank card, a card visa, a card the visa, maestro, visa classic, visa electron, cc, cards, magnetic cards, number of credit cards, visa a credit card, the generator of credit cards, the Internet credit cards, plastic cards visa, cvv, cvv2, carder to receive a credit card, credit the Internet a card, the visa a credit card, a code of a credit card, to buy a credit card, sale of credit cards, bank credit cards, credit cards reception, a debit card, the master of cards, the master of cards, maestro card, a card maestro, magnetic cards, payment cards, dumps
Aleksandr said,
December 7, 2007 at 8:33 am
We offer qualitative service on sale: credit cards, passports, passports, a driving licence, readers, services on manufacturing cards.The information is on our site: http://www.kreditkareal.ru
Nifyfaige said,
December 9, 2007 at 2:27 am
Hello all
diet management manual owner waist
voineevox said,
December 9, 2007 at 7:10 am
I want to get a credit card to restore my credit,
but my credit rating is not soo good.
Where can I find Bad Credit Charge Cards?
Nifyfaige said,
December 10, 2007 at 2:23 am
Hello!
89.com
georg said,
December 16, 2007 at 5:08 pm
Hi
The best teen pussy pictures
G’night
acikimberrarl said,
December 16, 2007 at 11:44 pm
After reading and understanding the rules, place your bets with UNIBET and collect what’s rightfully yours.
Amadeus said,
December 17, 2007 at 9:16 pm
Hot Yotube video!
http://darkdeva.6x.to
TrurgillFus said,
December 17, 2007 at 9:54 pm
Ask for the cars maintenance record from the owner, dealer, or repair shop;
Все о упаковке said,
December 23, 2007 at 6:19 pm
создания упаковки из пенопласта не является главным направлением нашей деятельности. Однако, технические возможности позволяют нам делать это. Более того, особенности нашего производства таковы, что мы можем изготовление упаковки санкт упаковку в количестве от одного экземпляра, и это не приведет к ее значительному удорожанию. Итак, чтобы сделать для Вас качественную и недоро
гую упаковку, нам нужно ее эскиз. В отличие от других производителей упаковки, мы не требуем от Вас предоставления оригинал-макета. Если же Вы еще не не решили, какая именно упаковка Вас устроит, то мы можем вместе с Вами решить оптимальный вариант упаковки, учитывающий все особенности Вашей продукции.Напоминаем также, что пенопластовая упаковка - это оптимальный вариант по соотношению «цена-качество». И область ее применения достаточно широка: от упаковки мебели, дверей и сантехники до хрупких изделий из стекла и фарфора
FupLauramGard said,
January 10, 2008 at 2:49 am
subj
?
TigdottTirm britney spears wallpaper said,
January 10, 2008 at 12:28 pm
hi, look it
kim kardashian and ray j
roadiasok said,
January 27, 2008 at 11:59 am
Good site
http://www.google.com - xamasapa
saisciple said,
March 21, 2008 at 1:44 pm
I love your services and products, many thanks!
Продвижение разработка сайта CMS said,
August 18, 2008 at 4:50 pm
продвижение сайт компания создание разработка сайта cms php Продвижение сайтов
Основное направление деятельности компании “Сигмаком” - оптимизация и продвижение сайтов в популярных поисковых системах (Яндекс, Google, Rambler и др.). Поисковое продвижение сайта включает в себя целый комплекс мероприятий, направленных на улучшение видимости сайта для поисковых машин: экспресс-аудит сайта, составление семантического ядра, анализ конкуренции, оптимизация текстов и структуры сайта, увеличение количества ссылающихся сайтов.
Продвижение в поисковых системах позволяет значительно повысить посещаемость сайта и привлечь целевых посетителей, т.е. Ваших потенциальных клиентов.
Поисковая оптимизация - это многоплановый процесс, начинающийся с анализа структуры и тематики сайта, разработки плана мероприятий по реструктуризации сайта (если это необходимо) и продвижению его в поисковых системах. Стоимость контракта и бюджет кампании рассчитывается в зависимости от желаемого результата и исходных данных сайта.
Каждый заказ уникален и требует тщательной подготовки. Продвижение сайта - это индивидуальная кропотливая работа, невозможно добиться хорошего результата, действуя по одной схеме продвижения сайтов.
оисковая оптимизация веб сайта, поисковое продвижение сайтов и seo
“Поисковое продвижение сайтов - seo”
В настоящее время наличие web-cайта в сети само по себе не дает никаких конкурентных преимуществ. Как добиться, чтобы сайт приносил коммерческую выгоду своим владельцам?
Продвижение сайта
Одним из основных направлений деятельности нашей компании является предоставление услуг комплексного интернет-маркетинга, ряда мероприятий, направленных на привлечение целевой аудитории на ваш сайт, увеличение продаж, узнаваемость бренда компании, продвижении на рынок определенных товаров и услуг.
Важнейшим условием оптимального продвижения сайта является Интернет-маркетинг: раскрутка и продвижение сайтов в поисковых системах (оптимизация сайта для поисковых машин Яндекс, Рамблер, Mail.ru, Апорт, Google, Yahoo, MSN), размещение контекстной рекламы, аудит и мониторинг сайтов, различные маркетинговые исследования.
Поисковая оптимизация сайта - это необходимый набор действий, который позволяет вашему сайту проиндексироваться и подняться по низкочастотным и некоторым среднечастотным запросам в поисковой выдаче. Наши специалисты произведут подбор и анализ поисковых запросов, по которым необходимо повысить позиции ресурса, обработку внутреннего информационного наполнения и структуры сайта с учетом требований, предъявляемых поисковыми машинами, формирование заявок на индексацию сайта в поисковиках и простановку ссылок в тематических каталогах.
Основной целью поисковой оптимизации является вывод вашего сайта на первую страницу или в первую тройку результатов выдачи. Здесь главная задача - правильно подобрать поисковые слова. Подбор ключевых слов - фундамент всей работы по продвижению сайта. Поэтому мы уделяем огромное внимание анализу ключевых слов. Все ключевые слова анализируются не просто по количеству запросов/уровню конкуренции, но по множеству важных параметров, которые могут дать реальную картину. Чёткое представление целевой аудитории помогает нам при создании рекламных материалов, а также где именно следует искать аудиторию. Мы проводим анализ конкурентов - их ПР, количество и качество ссылок, уровень оптимизации, используемые стратегии продвижения.
Ведение тематических рассылок позволяет заинтересовать пользователя сети в предлагаемой услуге или товаре. Предоставляется возможность познакомить клиентов с особенностями продукта, которые они не смогли изучить на сайте компании.
Контекстная реклама - размещение рекламных материалов на тематических сайтах или в результатах поиска. Преимущества контекстной рекламы - быстрый старт и относительная дешевизна. Использование контекстной рекламы вместе с поисковой оптимизацией повышает эффективность рекламной кампании в целом. Баннерная реклама - размещение информации определенных форматов (баннеров) на других сайтах.
Кроме прямой рекламы используется такой эффективный инструмент продвижения, как PR, или создание положительного образа компании. Это - регулярное обновление сайта, публикация новостей, работа с форумом / гостевой книгой, ответы на вопросы, cвоевременное опубликование пресс-релизов на сайте или обновление новостей.
Несколько десятков успешных проектов, высокая квалификация специалистов, огромный опыт по продвижению сайтов, только честные методы продвижения, использование современных технологий, наличие собственных разработок, индивидуальный подход к клиенту - вот перечень наших конкурентных преимуществ.
Вы хотите увеличить отдачу от своего присутствия в сети? Начните сотрудничество с нами прямо сейчас.
Продвижение сайта в сети - установите себе бесплатный код!
После того, когда Вы создали свой замечательный сайт, важно помнить, что помимо Вас - в Интернет есть конкуренты, которые работают на рынке давно и готовы не экономить на Интернет-рекламе будучи “раскрученными” удерживать рейтинговые позиции по ключевым словам.
Посещаемость их сайта в 600 и более раз выше вашей, у Вас 2 человека в сутки и при этом 1 из них Вы сами как посетитель своего собственного сайта.
Для того что бы избежать этого, улучшить результат качественно - нашими специалистами разработан целый комплекс услуг по увеличению посещаемости сайта и созданию тематической Интернет-аудитории.
Всё занимает определённое время. Механизм системы технически-сложен - группой серверов вырабатываются подходы на ваш сайт и запускаются поисковые боты по ключевым словам (найти), но заметим, что для этого Он должн быть уже зарегистрированный в доменной зоне RU и зарегистрированный во всех рейтингах (RamblerTop100, Mail.Ru, Aport, Yandex и т.п.)
После того как Вы разместили эти кнопки (счётчики) к себе на первую страницу сайта - ваш сайт всё равно остаётся “чемоданом без ручки” но можно всё исправить.
Нами разработан унифицированный htm-код для увеличения посещаемости и раскрутки вашего сайта.
Преимущества этого кода:
1. Не занимает место на экране (невидимый)
2. Не противоречит Законам РФ и Соглашениям и пр. (пока нет такого Закона)
3. Не вирус (его можно проверить антивирусом - если есть “?”)
4. Не “вешает” компьютеры, сеть и пр.
5. Не СПАМ (SPAM) рассылка
6. Безопасен и автоматизирован!
Краткая инструкция по использованию:
1. Скопируйте и разместите этот код у себя внизу на первой странице Вашего сайта.
Этот html-код сам определяет Вашу тематическую аудиторию - согластно установленным “кнопкам” у вас на сайте и регистрации сайта в “поисковиках”.
2. Создате пустую страницу “coun.html” содержащию ТОЛЬКО ВАШИ СЧЁТЧИКИ 88×31 (и ничего более) и запишите её в корень, там где находится файл index.php
Последнее обновление ( 09.05.2007 )
Продолжение…
Показ уведомлений о Ваших ошибках
Написал Administrator
24.04.2007
Часто задают вопросы: “У меня файл coun.html в каких то надписях” и приводят в качестве примера блоки текста, которые начинаются со слов Сервер обработал ваш запрос и т.п. Эти сообщения являются не ошибкой, а только предупреждениями и уведомлениями для программиста и в процессе работы готового сайта они не нужны и должны быть отключены.
Достигается это правильной настройкой параметра URL= указывайте youresite.ru
Для того, чтобы отключить вывод ошибок из своей программы, достаточно правильно указать параметры и типы переменных в настройке html-кода.
Все сайты можно разделить на условные категории, аналогично, так же как и рекламу.
Все категории - можно также разложить по контенту. Т.е. Рассмотрим п.1. Сайт должен быть Имеджевым, а вот его “начинка” может быть реализована как по технологии Flash (”Парк Юрского периода, Star Wars и т.п.”) или простой D-HTML.
Главная задача именно такого сайта - Престиж, репутация компании. Его цель - не продажи, допустим, никому не нужных пластиковых карт VisaElectron…
Uduard said,
August 19, 2008 at 6:57 am
Спасибо почитаю тут всё.