¿Es posible, en cualquier versión de Microsoft Word, definir atajos para expresiones matemáticas recurrentes? (preferiblemente de una manera que permita actualizar todas las ocurrencias a la vez si es necesario)
Por ejemplo, en mecánica cuántica una estructura recurrente es la notación de estado |ψ⟩
* y⟨ψ|
. Dependiendo del contexto, pueden aparecer repetidamente estructuras más complejas, por ejemploχ⁽²⁾
. En LaTeX lo usaría \newcommand
para definir mi atajo, a menudo parametrizado.
A pesar de muchos cambios desde versiones anteriores de Word, que en teoría lo convertirían en una alternativa viable para la escritura científica (o al menos viable cuando alguna entidad solo acepta documentos de MS Word), la capacidad de definir tales "macros" es esencial para mí. ¿MS Word ya admite algo como esto?
Paracreandorepitiendo estructuras, usaría AutoHotKey. Sin embargo, una solución interna de Word podría proporcionar mucha más potencia y comodidad.
*editar*Me refiero a estructuras especialmente parametrizadas, es decir, el equivalente a \newcommand{\ket}[1]{|#1\rangle}
.
*Aquí utilicé símbolos Unicode que pueden no ser compatibles con todos los sistemas. El código de látex equivalente sería, en este orden |\psi\rangle
: \langle\psi|
y \chi^{(2)}
.
Respuesta1
La forma habitual de hacerlo es utilizando la Autocorrección como se describe al final de esta página:http://office.microsoft.com/en-us/word-help/autocorrect-spelling-and-insert-text-and-symbols-HA010354277.aspx
Básicamente, definiría un equivalente de texto para el cual Word sustituiría automáticamente un símbolo o conjunto de símbolos. Por ejemplo:
Para agregar una entrada de autocorrección en las versiones más recientes de Word:
Haga clic en el botón "Office" en la parte superior izquierda, luego en el botón Opciones de Word
Haga clic en Revisión en la lista de la izquierda y luego en el botón Opciones de autocorrección.
Haga clic en la pestaña "Autocorrección matemática" y verifique si la entrada ya existe.
Si aún no está en la lista, ingrese el texto que desea usar en el cuadro de la izquierda, por ejemplo, donde ingresé "|Y)" en la captura de pantalla. Ingrese los símbolos en el cuadro de la derecha y haga clic en el botón "Agregar".
- OK, regresa al documento.
Ahora, cada vez que escriba el texto de la izquierda, será reemplazado por la entrada de la derecha.
Respuesta2
Es ahora (2022)algo así comoposible. La "parametrización" se realiza mediante un cuadro de diálogo.
A continuación se muestra un ejemplo sencillo de un cuadro de diálogo "Crear Bra|Ket" con cuatro controles: un cuadro de texto para ingresar la cadena LaTeX personalizada; Botones de comando "Bra" y "Ket" para transformar eso en otra cosa en LaTeX y agregarlos a la selección; y un botón de comando "Crear ecuación" para convertir la selección en un objeto del Editor de ecuaciones.
La primera figura muestra el diálogo y el documento después de presionar el botón "Sujetador".
Para permitir un procesamiento adicional, no convierto automáticamente la selección en una ecuación. Por ejemplo, si a continuación se inserta un "ket", el código subyacente fusiona las dos barras verticales (al final del "bra" y al comienzo del "ket"):
Ahora el botón de comando "Crear ecuación" convertirá esto en un objeto del Editor de ecuaciones:
El siguiente código no es infalible: simplemente demuestra una prueba de concepto.
La primera subrutina es la clave:Estas dos líneas convierten la selección en un objeto del Editor de ecuaciones y luego analizan las cadenas LaTeX. Esta subrutina se llama cuando se presiona el botón "Hacer ecuación" (alias CommandButton1
) se hace clic:
Private Sub Text2Equation()
Selection.OMaths.Add Range:=Selection.Range
Selection.OMaths.BuildUp
End Sub
El resto es sólo código de diálogo. Aquí es donde se implementa la macro TeX mediante concatenación de cadenas. El Click()
código del evento demuestra que puede calcular con el texto, modificándolo según sea necesario, para crear cualquier cadena LaTeX personalizada que desee a partir del material ingresado en el cuadro de diálogo.
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
Este enfoque es un poco complicado, mucho más que escribir una macro de comando LaTeX, pero es fácilmente ampliable una vez que logras trabajar tanto. Cree pequeños cuadros de diálogo separados para macros favoritas o para buscar y reemplazar material (advertencia: no tengo idea de cómo buscar objetos del Editor de ecuaciones y sospecho que tal vez no sea posible). O cree un cuadro de diálogo de monstruo para seleccionar de una lista de opciones.