Замена латекса на символы Юникода

2375
Elazar Leibovich

Часто, во время разговора или по электронной почте, или на форуме, я хотел бы набрать немного математики, но мне не нужна полная поддержка уравнений. Символы Юникода должны быть достаточными.

Что мне нужно, так это простой способ набирать математические символы Юникода. Поскольку я уже знаю латекс, имеет смысл использовать мнемонику латексных символов для ввода математических символов.

В настоящее время я написал сценарий AutoHotKey, который автоматически заменяет \ latexSymbol на соответствующий символ Unicode, используя функции AutoHotKey «hotstrings». Однако, горячие строки AutoHotKey оказались нестабильными для многих строк. Наличие пары десятков строк приведет к тому, что AHK не сможет распознавать строки время от времени.

Любое другое решение? (Нет, Alt + номер юникода недостаточно удобен)

Прилагается мой скрипт AHK. PutUniФункция берется из здесь .

::\infty:: PutUni("e2889e") return ::\sum:: PutUni("e28891") return ::\int:: PutUni("e288ab") return ::\pm:: PutUni("c2b1") return ::\alpha:: PutUni("c991") return ::\beta:: PutUni("c992") return ::\phi:: PutUni("c9b8") return ::\delta:: PutUni("ceb4") return ::\pi:: PutUni("cf80") return ::\omega:: PutUni("cf89") return ::\in:: PutUni("e28888") return ::\notin:: PutUni("e28889") return ::\iff:: PutUni("e28794") return ::\leq:: PutUni("e289a4") return ::\geq:: PutUni("e289a5") return ::\sqrt:: PutUni("e2889a") return ::\neq:: PutUni("e289a0") return  ::\subset:: PutUni("e28a82") return ::\nsubset:: PutUni("e28a84") return ::\nsubseteq:: PutUni("e28a88") return ::\subseteq:: PutUni("e28a86") return ::\prod:: PutUni("e2888f") return ::\N:: PutUni("e28495") return 
3
Работал ли букмарклет у вас? Kasper 10 лет назад 0
Еще не пробовал. Elazar Leibovich 10 лет назад 0
К вашему сведению: [использование AutoHotKey для упрощения разработки документов LaTeX] (https://tex.stackexchange.com/q/61547/50146) Ooker 6 лет назад 0

6 ответов на вопрос

3
Kasper

Я использую букмарклет javascript для ввода символов юникода на math.stackexchange.com. Mathjax отображает большинство Unicode так же, как соответствующие латексные макросы. Например $ℝ$и $\mathbb$дать такой же результат. Мне нравится, как текстовый код остается более компактным и читаемым с помощью символов Юникода.

Я думаю, что этот код может делать то, что вы хотите. Мне нравится использовать не слишком много нажатий клавиш, поэтому вместо того, чтобы \alphaиспользовать \aдля производства α. Вы можете изменить этот сценарий в соответствии со своими потребностями, а затем преобразовать его в букмарклет, используя этот веб-сайт, например: http://jasonmillerdesign.com/Free_Stuff/Instant_Bookmarklet_Converter

Если вы хотите использовать этот скрипт на веб-сайте без jquery, сначала вам нужно запустить этот букмарклет: http://www.learningjquery.com/2006/12/jquerify-bookmarklet/

jQuery.fn.autocorrect = function(options) { if ("text" != jQuery(this).attr("type") && !jQuery(this).is("textarea")) { return; } var defaults = { corrections: { a: "α", b: "β", c: "γ", d: "δ", e: "ϵ", emp : "∅", f: "\\frac{}{}", in : "∈", s: "σ", t: "\\text{}", tau : "τ", th : "θ", p: "π", pm : "±", o : "ω", O : "Ω", r : "ρ", A : "∀", E : "∃", R: "ℝ", C: "ℂ", H: "ℍ", N: "ℕ", Q: "ℚ", Z: "ℤ", int: "\\int_{}^{}", inf : "∞", sum : "\\sum_{}^{}", "-1": "^{-1}", ph: "ϕ", ch: "χ", ps: "ψ", leq : "≥", xi : "ξ",  geq : "≤", "/=" : "≠", "==" : "≡", "<" : "\\langle {} \\rangle", "->" : "→", "=>" : "⇒", "<=" : "⇐", "<>" : "⇔", "sq" : "\\sqrt{}" } }; if (options && options.corrections) { options.corrections = jQuery.extend(defaults.corrections, options.corrections); } var opts = jQuery.extend(defaults, options); getCaretPosition = function(oField) { var iCaretPos = 0; if (document.selection) { var oSel = document.selection.createRange(); oSel.moveStart("character", 0 - oField.value.length); iCaretPos = oSel.text.length; } else if (oField.selectionStart || oField.selectionStart == "0") { iCaretPos = oField.selectionStart; } return (iCaretPos); } function setCaretPosition (oField, iCaretPos) { if (document.selection) { var oSel = document.selection.createRange(); oSel.moveStart("character", 0 - oField.value.length); oSel.moveStart("character", iCaretPos); oSel.moveEnd("character", 0); } else if (oField.selectionStart || oField.selectionStart == "0") { oField.selectionStart = iCaretPos; oField.selectionEnd = iCaretPos; } } this.keyup(function(e) { if (32 != e.keyCode) { return; } var caretPosition = (getCaretPosition(this) - 1); if (1 > caretPosition) { return; } var valueOfField = this.value; var stringUptoCaretPosition = (valueOfField).substr(0, caretPosition); if (" " == stringUptoCaretPosition.charAt(caretPosition - 1)) { return; } var beginIndex = stringUptoCaretPosition.lastIndexOf('\\'); if (beginIndex < stringUptoCaretPosition.lastIndexOf(' ')) { return; } var stringToSearch = stringUptoCaretPosition.substring(beginIndex+1); var stringNotToSearch = stringUptoCaretPosition.substring(0, beginIndex); if (!opts.corrections[stringToSearch]) { return; } var stringToReplace = opts.corrections[stringToSearch]; stringUptoCaretPosition = stringNotToSearch+ stringToReplace; var stringFromCaretPositionUptoEnd = (valueOfField).substr(caretPosition+1); this.value = (stringUptoCaretPosition + stringFromCaretPositionUptoEnd); if (stringToReplace.indexOf("{}")!=-1 ) { setCaretPosition(this, stringUptoCaretPosition.indexOf("{}")+1); } else { setCaretPosition(this, stringUptoCaretPosition.length);}  }); }; $(document).ready(function() { $("textarea").autocorrect(); }); 
0
Joey

Если мне это нужно, я просто набираю математику в Word и копирую / вставляю. Word использует те же макросы, которые LaTeX использует по умолчанию, и автоматически преобразует их в надлежащий Unicode. И я нахожу линейный формат там более читабельным, чем разметка LaTeX.

Тем не менее, если ваши почтовые получатели читают с какого-то тупого терминала или без надлежащей поддержки шрифтов (возможно, на XP), вы, вероятно, захотите просто набрать raw LaTeX вместо Unicode, чтобы они могли понять, что вы хотите сказать.

Во-первых, я четко изложил вариант использования. Интернет интернет форум / чат. Сегодня нет здравомыслящих веб-сервисов, которые не поддерживают UTF-8. Возможно, я не смогу использовать более непонятные символы, но у обычных машин с обычными шрифтами Unicode гораздо больше, чем я мог бы использовать. Я не собираюсь поддерживать терминал, хотя xterm должен справиться с этим. О Word: (1) Он работает только с Office07, другие математические поддержки хромают. (2) Я пытаюсь избежать этого переключения контекста. А как насчет чата? Alt-tab + Ctrl-C + Ctrl-v недостаточно хорош. Elazar Leibovich 14 лет назад 1
0
bobince

Вы можете использовать MSKLC для создания математической раскладки клавиатуры. Например, eurokb включает такие символы, как ≡≤ ≠ ± ∔π∜ на комбинациях мертвых клавиш AltGr. (Eurokb, вероятно, не достаточно математичен для вас, но он может дать вам некоторые идеи.)

Единственным недостатком является отсутствие мнемоники. Мне придется запомнить десятки комбинаций клавиш. Кстати, я думаю, что вы должны включить симуляцию раскладки клавиатуры вашей карты eurokb на своем веб-сайте, а не только в дистрибутив. Это было бы полезно для тестирования. Elazar Leibovich 14 лет назад 0
(Я делаю: перейдите по ссылке на документацию в Великобритании или США, и она находится наверху.) Да, вам, безусловно, придется придумать логичный способ упорядочить и запомнить макет, но у вас достаточно много возможностей для игры с, когда вы можете иметь любую комбинацию двух потенциально сдвинутых или измененных клавиш. Греческие буквы, которые вы в значительной степени уже используете, поступают так же, как и eurokb, и следуют стандартной греческой раскладке клавиатуры (http://en.wikipedia.org/wiki/Keyboard_layout#Greek). Тогда вы можете сгруппировать по функциям, например. AltGr + S для заданных функций; AltGr + S, = для ∈, AltGr + S, / для ∉ или любой другой. bobince 14 лет назад 0
0
MunHo

Мне нравится использовать программный пакет для ввода символов из языков с нелатинскими символами, таких как китайский. Например, в Sogou пиньинь можно определить строки, которые будут другими строками символов Юникода. Затем при наборе текста я быстро переключаюсь на китайский, пишу alpha, выбираю αиз списка предложений и молча переключаюсь на свой исходный язык ввода. Это действительно удобно!

0
Ooker

Autohotkey-скрипт для преобразования LaTeX-подобного ввода в символы юникода

«Ctrl + Alt + Shift + U» включает и выключает его (посмотрите на правый нижний значок, чтобы увидеть, что он находится в режиме ожидания (значок S) в активном режиме (значок H).

Тест: αβΓ∞¹₂ℝ

-2
Peon

Напечатайте короткий фрагмент LaTeX и попросите его разрезать и вставить его в http://www.numberempire.com/texequationeditor/equationeditor.php и нажать «Render». Пример:

\begin R_s &\;=\; \frac{\widehat{\sigma}_s} \left(\sqrt_ \beta_k^2} \right) G_s \quad. \\ & \textais? Czy mo\.zna u\.zy\'c tego?} \\ & \mathbb_2 \oplus \mathbb_3 \cdots \oplus \mathbb_p,  \end 
-1. Я спросил: «Мне нужен простой способ набирать математические символы Юникода». Вы сказали мне, как визуализировать латекс в Интернете для изображения. Я не понимаю, как то, что вы говорите, помогает мне. Это не позволяет мне вставить результат в любом месте. Elazar Leibovich 14 лет назад 2
Я сказал, что вы должны «попросить их [вашего читателя] вырезать и вставить» LaTeX на сайт, чтобы просмотреть уравнения. Peon 14 лет назад 0
Это действительно бремя. Что если я включу 10 небольших уравнений? Что делать, если я разговариваю с моим другом, и он читает его через смартфон? Elazar Leibovich 12 лет назад 0
Если вас это сильно беспокоит, почему бы вам не написать приложение, которое переводит мнемонику юникода в символы? Запишите его для своего смартфона (Android, PalmOS или WebOS), а также перенесите его на Windows и Mac. Имейте это интегрировать со всеми существующими приложениями тоже. Если вы действительно серьезно относитесь к этому, конечно. В противном случае вы можете научить его читать латекс. Поскольку ваши символы настолько ограничены, вы можете использовать приложение, которое понимает HTML и, следовательно, может преобразовывать escape-последовательности Юникода в символы Юникода. Peon 12 лет назад 0
Хорошая вещь о Unicode - мне не нужно писать приложение для его смартфона. Я могу просто напечатать символы Юникода, и они будут красиво появляться на его смартфоне без каких-либо усилий с моей стороны. Для Windows достаточно приложения (и на самом деле оно вроде того, что я написал в ответе). Elazar Leibovich 12 лет назад 0