Возможно ли в какой-либо версии 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».
Нажмите «Проверка» в левом списке, затем кнопку «Параметры автозамены».
Нажмите на вкладку «Автокоррекция математических ошибок» и проверьте, существует ли уже такая запись.
Если его еще нет в списке, введите текст, который вы хотите использовать, в поле слева, например, там, где я ввел "|Y)" на скриншоте. Введите символы в поле справа и нажмите кнопку "Добавить".
- ОК, вернитесь к документу.
Теперь каждый раз, когда вы вводите левый текст, он будет заменяться правым.
решение2
Сейчас (2022)вродевозможный. «Параметризация» осуществляется с помощью диалогового окна.
Вот простой пример диалогового окна «Создать Bra|Ket» с четырьмя элементами управления: текстовое поле для ввода пользовательской строки LaTeX; кнопки команд «Bra» и «Ket» для преобразования ее во что-то другое в LaTeX и добавления к выделенному фрагменту; и кнопка команд «Создать уравнение» для преобразования выделенного фрагмента в объект редактора уравнений.
На первом рисунке показан диалог и документ после нажатия кнопки «Бюстгальтер».
Чтобы разрешить дополнительную обработку, я не преобразую автоматически выборку в уравнение. Например, если затем вставляется "ket", базовый код объединяет две вертикальные полосы (в конце "bra" и начале "ket"):
Теперь кнопка «Создать уравнение» преобразует это в объект редактора уравнений:
Следующий код не является абсолютно надежным — он просто демонстрирует доказательство концепции.
Первая подпрограмма является ключевой:Эти две строки преобразуют выделение в объект редактора формул, а затем анализируют строки 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 — но его легко расширить, как только вы научитесь работать. Создайте отдельные небольшие диалоги для избранных макросов или для поиска и замены материала (предупреждение: я понятия не имею, как искать объекты редактора формул, и подозреваю, что это может быть невозможно). Или создайте один огромный диалог для выбора из списка опций.