Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Диакритика с помощью автозамен

Автор Квас, октября 4, 2010, 17:12

0 Пользователи и 1 гость просматривают эту тему.

Квас

Цитата: mnashe от октября  7, 2010, 13:13
Так наверно её надо в UTF-8 набирать, нет?

Тьфу ты, конечно! По какому ‐то недоразумению у меня этот файл был в ANSI. Вовремя вы мне сказали. :)
Пишите письма! :)

Квас

Ну, заявлена была версия 2.0... Я всё надеялся, что сподоблюсь написать мануал. Не сподобился. :(

Выкладываю, что есть: обычный вариант и «русский». В обычном варианте два дефиса превращаются в en‐dash, а три — в em‐dash (по образцу ТеХа), а в «русском» два дефиса превращаются в тире. En‐dash может в любом случае быть получена с помощью \endash. Кроме того, знаки " в русском варианте заменяются на открывающиеся и закрывающиеся кавычки‐ёлочки поочерёдно (сами два штриха можно получить с помощью \dq). В обеих версиях знаки `  и ' заменяются на кавычки (кстати, закрывающая кавычка = апостроф по юникодовским предписаниям), а удвоенные знаки — на двойные кавычки. Сами же эти знаки могут быть получены с помощью команд \grave, \ap. Кстати, \‐ даёт настоящий дефис.

В отличие от ТеХа в имена команд могут входить цифры. Окончанием команды служит небуква‐нецифра (в том числе Tab или Enter), при этом пробел «съедается» (по хорошей ТеХовской традиции).

В комплект входят три файла. Запускается файл без номера, обозначенного римской цифрой! Если вы запустите другой файл — ничего страшного: при последующем запуске надлежащего файла вас интеллигенто обругают по‐английски, вы сделаете вид, что со всем согласны (OK) и всё будет работать как полагается. При желании можно убить процесс через диспетчер задач.

Win + 0 пауза
Win + 1 возобновить
Win + 2 выход

Выход можно делать и через контекстное меню, но паузу — нет. Пауза никак не отражается на иконке.

В общем, пусть будет пока так. Если кого заинтересует, буду отвечать на вопросы. У меня самого постоянно включен модифицированный русский вариант (я его интегрировал в общую схему поддержки языков), поэтому я не устаю радовать читателей ЛФ ёлочками, апострофами и настоящими дефисами, а под настроение mogę nawiet po polsku coś napisać.

Пишите письма! :)

mnashe

Quase, давно хочу спросить:
Для чего писать, к примеру
Цитата: 3 строки::\~n::
SendInput, {U+00F1}
Return
вместо более краткого
Цитата: 1 строка::\~n::ñ
?
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!


mnashe

:)
(Я сперва подумал, что по-другому не выйдет, но проверил — работает, так что у себя пишу в одну строку).
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

Я сначала мучился с обыкновенным AHK, а потом узнал, что AHK_L позволяет через код отправлять символы с помощью SendInput. Видно, от радости забыл проверить тривиальный вариант.
Пишите письма! :)

mnashe

Я так понял, что если кодировка не UTF-8 (видимо, речь идёт об ANSI-варианте AHK_L), то действительно можно только так. И то не уверен: скорее всего, компромиссный вариант «::\~n::{U+00F1}» пойдёт и там.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

mnashe

Я щас прикинул, сколько времени сэкономил тем, что сразу пошёл и взял AHK_L, а не ломал голову, как выполнить эту задачу в обычной AHK (скорей всего, пришлось бы использовать API).
Так что я очень благодарен за граблепроходство! :)
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!


mnashe

    Выкладываю свой вариант.
    Немного информации:
    Основной префикс для мнемоник — | (u007С).
    Почти все мнемоники двухсимвольные.
    Для IPA — отдельный префикс + буква или две буквы + несколько модификаторов: - уменьшенная заглавная или спирантизация, / перечёркнутая, \ перевёрнутая, = фарингальный/гортанный звук (a=ʔ, e=ɦ, h=ħ, о=ʕ).
    Наиболее употребительные HTML entities можно записывать в точности как в HTML, с тем же значением. Кроме этого, некоторые мнемоники можно записывать подобным образом, хотя их и нет в стандарте HTML или они пишутся иначе (например, для ™ вместо ™ я выбрал &tm;).
    Все стрелочки обозначаются звёздочкой с последующим знаком
одинарная - / двойная = / две стрелки :
и указателем направления
влево < / вправо > / вверх ^ / вниз &.
    Всяческие кавычки — знаками < и > с модификаторами.
    Диакритика вводится знаком ^ после буквы-основы, за которым следует один из модификаторов: ` grave (ò), ' acute (ó), ^ circumflex (ô), & caron (ǒ), ~ tilde (õ), - macron (ō), _ underline (o̱), * dot above (ȯ), . dot below (ọ), , cedilla (ç) ; diaeresis (ö) (не нашёл способа задействовать двоеточие), o ring above å, @ ring below o̥, ! «inverted breve below» (o̯), u breve (ŏ),  n nasalisation (ę).
    Если существует односимвольный вариант буквы с диакритикой, вставляется он, а если нет — вставляется комбинируемая диакритика, а буква остаётся без изменений.


#Space::SendInput  ; неразрывный пробел
::--::—
:?:...::...
::1/4::¼
::1/2::½
::3/4::¾
::1/8::⅛
::3/8::⅜
::5/8::⅝
::7/8::⅞
::1/0::∞
#Hotstring *?C
::|-::–
::|!!::‼
::|!\::¡
::|?\::¿
::|_\::¯
::|..::‥
Spoiler: subscript ⇓⇓⇓
Spoiler: superscript ⇓⇓⇓
Spoiler: IPA superscript/subscript ⇓⇓⇓
Spoiler: letter+diacritics ⇓⇓⇓
Spoiler: combined diacritics ⇓⇓⇓
Spoiler: mathematical operators ⇓⇓⇓
Spoiler: html-like ⇓⇓⇓
#Hotstring
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

Здорово!

Для «промышленного использования» МФА, как мне кажется, имеет смысл сделать отдельный скрипт, позволяющий вводить фонетические обозначения например по образцу TIPA (после небольшой тренировки это очень удобно). Но я этого делать не буду, потому что мне МФА не нужен и я его не знаю. ;D
Пишите письма! :)

mnashe

Посмотрел TIPA. Как-то не очень...
В основном визуальные соответствия, но они у меня плохо ассоициируются. Особенно те, что на цифрах.


Только сегодня узнал, что форумный движок пропускает html entities: все коды, что я вставил в сообщение, читаются как символы, а не как &сode;
Повторю соответствующие разделы:
Spoiler: html-like ⇓⇓⇓
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

Возвращаясь к вопросу о раскладках: капс у меня в армянской был реализован исключительно неэлегантно. Гораздо лучше так:

#If Not(GetKeyState("Capslock", "T"))
<буквы без капса>
#If GetKeyState("Capslock", "T")
<буквы с капсом>
#If
Пишите письма! :)

Квас

Предлагаю вниманию публики новый вариант ввода символов à la [tex]\TeX[/tex]. С точки зрения реализации я капитально переработал то, что было раньше и добавил кое-какие новые символы, в том числе \ять и другие кириллические. Кроме того, \` и \' заменяются на ` и ' соответственно (напоминаю, что кавычки сами собой превращаются в правильные запятушки). Отличие от ТеХовского стандарта: -- заменяется на em-dash, а en-dash можно получить командой \endash; диакритика над i ставится применением команд к самой этой букве: \'i ⇒ í. Поскольку интересующихся всё равно нет, подробную спецификацию писать не буду, а лучше выложу код.

Включение—выключение только через контекстное меню.

Вообще, технические сложности состоят, в том, что, например, символ ' должен, с одной стороны, сразу заменяться на ', а с другой — входить в состав команд для букв с акутом. Раньше я этого добивался за счёт манипуляций с двумя скриптами (к которым пришлось добавить управляющий третий), и багов при этом возникало много (кучу я сам переловил, но, например, слово noël печаталось неправильно). Теперь вместо автозамен я использовал команду Input, с которой получилось гораздо лучше. Надо только следить, чтобы эта команда не создавала неожиданных эффектов.

Кстати, этот скрипт хорошо интегрируется с другими (я его так и использую): его можно включить в текст с помощью #Include, а инициализация осуществляется функцией symbols_on(), которую следует записать в исполняемой части основного скрипта.
Пишите письма! :)

mnashe

А у меня одиночные символы никогда не автозаменяются: мне это кажется неудобным и расточительным. Апостроф я получаю парой символов:
>' → '
<' → '
<:' → ,
>:' → ‛
<" → "
>" → "
<:" → ,,
>:" → ‟

И ещё я понял, что в большинстве случаев постфикс намного удобнее, чем префикс. Поэтому я отошёл от равнения та TeX.
Пример: хочу, чтобы «--» заменялось на ndash, а «---» — на mdash. С префиксом я этого сделать не могу, а постфиксом — пожалуйста.
(Сначала я вообще сделал тире безпрефиксными, а потом удивлялся, что мне такое странное просмотровщик фотографий выкидывает).
Или вот, аналогично:
'''~ → ‴
''~ → ″
'~ → ′
Префиксом такого не сделаешь: как только я ввёл, скажем, «\'», он сразу автозаменится, и ввести «\''» я уже не смогу.
Поэтому я переделал почти все автозамены в постфиксы (обычно тильда), с префиксами оставил лишь суперскрипт/субскрипт, стрелки и часть математических символов.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

Мне хотелось создать себе трудностей, чтобы героически их преодолевать. :) Фокус с заменой -- и --- можно сделать с помощью Input, хотя это трудоёмко (я не стал, потому что в русской типографике вроде как одно тире).

Цитата: mnashe от июня 14, 2011, 23:27
И ещё я понял, что в большинстве случаев постфикс намного удобнее, чем префикс.

Я тоже так думаю. У меня AHK-раскладки все постфиксные. Кстати, при настоящей работе в ТеХе я основные команды повесил на автозамены, у которых постфиксом часто выступает Tab (а то удобная клавиша пропадает, да и правый мизинец неплохо разгрузить). А «префиксы» просто смысловые: например, g для греческих букв (gF{Tab} даёт заглавную фи).
Пишите письма! :)

mnashe

Цитата: Квас от июня 15, 2011, 00:01
А «префиксы» просто смысловые: например, g для греческих букв (gF{Tab} даёт заглавную фи).
Хорошая идея! Сделаю и себе так (gF~ → Φ).
Сейчас у меня греческие вводятся или HTML-последовательностями (по названиям: &amp;phi; → φ), или числовыми значениями (&amp;g500; → φ). И то, и то длинно; последнее я сделал для игры. Шаг вперёд от этого последнего — и получаем твою идею.
(Греческие, которые в IPA, вводятся у меня модификатором «:»: g:~ → ɣ, t:~ → θ).
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

Цитата: mnashe от июня 15, 2011, 00:11
Цитата: Квас от июня 15, 2011, 00:01А «префиксы» просто смысловые: например, g для греческих букв (gF{Tab} даёт заглавную фи).
Хорошая идея!

Бальзам на душу. ::) Некоторыми своими дизайнерскими решениями прямо горжусь. :)
Пишите письма! :)

Квас

Пишите письма! :)

mnashe

Offtop
Цитата: Квас от июня 15, 2011, 00:23
Offtop
Здорово, мы с mnashe на «ты»
У меня ж вообще проблема с «вы», я много раз об этом писал. Отсутствует в мозгу какой-то винтик, который за это отвечает; приходится каждый раз заново соображать, не обидится ли человек, если я скажу ему «ты»... И хотел бы со всеми на «ты», как в иврите! А тем более с товарищами-форумчанами, с которыми я больше общаюсь, чем с товарищами в реале...
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр