Определение математических сочетаний клавиш/макросов для Microsoft Word

Определение математических сочетаний клавиш/макросов для Microsoft Word

Возможно ли в какой-либо версии Microsoft Word определить сочетания клавиш для повторяющихся математических выражений? (предпочтительно таким образом, чтобы при необходимости можно было обновить все вхождения одновременно)

Например, в квантовой механике повторяющейся структурой является обозначение состояния |ψ⟩* и⟨ψ|. В зависимости от контекста, более сложные структуры могут появляться неоднократно, напримерχ⁽²⁾. В LaTeX я бы использовал \newcommandдля определения своего сочетания клавиш, часто параметризованного.

Несмотря на множество изменений с момента появления старых версий Word, которые в теории сделали бы его жизнеспособной альтернативой для научного письма (или, по крайней мере, жизнеспособной, когда какая-то организация принимает только документы MS Word), возможность определять такие «макросы» для меня существенна. Поддерживает ли MS Word что-то подобное?

Длясозданиеповторяющиеся структуры, я бы использовал AutoHotKey. Однако внутреннее решение Word может обеспечить гораздо больше мощности и удобства.

*редактировать*Я имел в виду специально параметризованные структуры, т. е. эквивалент \newcommand{\ket}[1]{|#1\rangle}.


*Я использовал здесь символы unicode, которые могут не поддерживаться во всех системах. Эквивалентный код latex будет в следующем порядке: |\psi\rangle, \langle\psi|и \chi^{(2)}.

решение1

Обычный способ сделать это — использовать функцию автозамены, как описано в нижней части этой страницы:http://office.microsoft.com/en-us/word-help/autocorrect-spelling-and-insert-text-and-symbols-HA010354277.aspx

По сути, вы бы определили текстовый эквивалент, для которого Word автоматически заменит символ или набор символов. Например:

Чтобы добавить запись автозамены в последних версиях Word:

  • Нажмите кнопку «Офис» в левом верхнем углу, затем кнопку «Параметры Word». Диалоговое окно «Параметры Word»

  • Нажмите «Проверка» в левом списке, затем кнопку «Параметры автозамены». Параметры слова - Автозамена

  • Нажмите на вкладку «Автокоррекция математических ошибок» и проверьте, существует ли уже такая запись.

  • Если его еще нет в списке, введите текст, который вы хотите использовать, в поле слева, например, там, где я ввел "|Y)" на скриншоте. Введите символы в поле справа и нажмите кнопку "Добавить".

Математическая автозамена

  • ОК, вернитесь к документу.

Теперь каждый раз, когда вы вводите левый текст, он будет заменяться правым.

решение2

Сейчас (2022)вродевозможный. «Параметризация» осуществляется с помощью диалогового окна.

Вот простой пример диалогового окна «Создать Bra|Ket» с четырьмя элементами управления: текстовое поле для ввода пользовательской строки LaTeX; кнопки команд «Bra» и «Ket» для преобразования ее во что-то другое в LaTeX и добавления к выделенному фрагменту; и кнопка команд «Создать уравнение» для преобразования выделенного фрагмента в объект редактора уравнений.

На первом рисунке показан диалог и документ после нажатия кнопки «Бюстгальтер».

Рисунок 1

Чтобы разрешить дополнительную обработку, я не преобразую автоматически выборку в уравнение. Например, если затем вставляется "ket", базовый код объединяет две вертикальные полосы (в конце "bra" и начале "ket"):

фигура 2

Теперь кнопка «Создать уравнение» преобразует это в объект редактора уравнений:

Рисунок 3


Следующий код не является абсолютно надежным — он просто демонстрирует доказательство концепции.

Первая подпрограмма является ключевой:Эти две строки преобразуют выделение в объект редактора формул, а затем анализируют строки LaTeX. Эта подпрограмма вызывается при нажатии кнопки «Создать формулу» (он же CommandButton1) нажата:

Private Sub Text2Equation()
    Selection.OMaths.Add Range:=Selection.Range
    Selection.OMaths.BuildUp
End Sub

Остальное — просто код диалога. Здесь макрос TeX реализуется посредством конкатенации строк. Click()Код события демонстрирует, что вы можете выполнять вычисления с текстом, изменяя его по мере необходимости, чтобы создать любую пользовательскую строку LaTeX из материала, введенного в диалоговое окно.

Private Sub CommandButton_Ket_Click()
    Dim s As String
    s = Trim(Selection.Text)
    If Len(s) > 0 Then
        If Mid(s, Len(s), 1) = "|" Then
            Selection.InsertAfter Text:=Bra_Ket.TextBox1.Text & "\rangle_^*"
            Else
            Selection.InsertAfter Text:="|" & Bra_Ket.TextBox1.Text & "\rangle_^*"
            End If
    End If
End Sub

Private Sub CommandButton_Bra_Click()
    Selection.InsertAfter Text:="\langle " & Bra_Ket.TextBox1.Text & "|"
End Sub

Private Sub CommandButton1_Click()
    Text2Equation
End Sub

Этот подход немного сложен — гораздо сложнее, чем написание макроса команды LaTeX — но его легко расширить, как только вы научитесь работать. Создайте отдельные небольшие диалоги для избранных макросов или для поиска и замены материала (предупреждение: я понятия не имею, как искать объекты редактора формул, и подозреваю, что это может быть невозможно). Или создайте один огромный диалог для выбора из списка опций.

Связанный контент