Usando el paquete LaTeX pythontex I, uno puede insertar el código python en el documento de látex que se ejecuta (e imprime en su archivo de látex si lo desea) si ejecuta látex. Utilizo auctex para editar archivos de látex, sin embargo, editar el código de python dentro del documento de látex es un poco doloroso ya que el búfer está en modo de látex y no en modo de pitón, por lo que no hay ayuda para la sangría adecuada del código de python y sin resaltado de sintaxis .
Entonces, ¿hay alguna forma razonable de mezclar el modo python con el modo latex? Por ejemplo, ¿que el búfer salta automáticamente al modo python si el punto está dentro de un código python cortado? ¿Qué debo agregar a mi archivo .emacs para que funcione? ¿Alguna otra idea?
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
print('test1')
def f( ):
print('test2')
f()
\end{pycode}
\pyc{f()}
\end{document}
Tenga en cuenta que pythontextiene múltiples entornos y comandos que pueden contener pythoncode, por ejemplo pycodeo pyverbatimcomo entornos \pyco \pycomo comandos.
fuente

org-modebloques fuente (también genera TeX), pero esto agrega otra capa de indirección sobre LaTeX, y a veces hace que sea difícil afectar el código TeX que se genera.Respuestas:
MMM-mode(múltiples modos principales) parece exactamente lo que estás buscando. Se menciona en la wiki de emacs . Debe definir una clase de submodo para mezclar LaTeX y python, especificando que las partes de Python están delimitadas por laspycodeetiquetas LaTeX. Agregar lo siguiente a su archivo init debería hacerlo:Las palabras clave
:fronty:backespecifican expresiones regulares para delimitadores. Las últimas dos líneas solicitan quemmm-modecon lalatex-pythonclase se active por defecto en todos los buffers cuyo modo principal eslatex-mode.Consulte la documentación para otras opciones (activándola manualmente, según el nombre del archivo o con variables de archivo).
Hay dos formas de especificar varios pares de delimitadores. Primero, se pueden unir varias clases en un grupo . A continuación, en lugar de definir la
latex-pythonclase, la definimos como un grupo que contiene las dos claseslatex-python-envsylatex-python-cmds(que reconoce los comandos\pyc{…}y\py{…}LaTeX).En segundo lugar, cada clase puede especificar varios pares de delimitadores: la clase a
latex-python-envscontinuación reconocerá ambospycodeypyverbatimLaTeX envs (~1en se:backrefiere al valor que coincide en el primer grupo entre paréntesis:front).Para que los delimitadores sean reconocidos necesita
mmm-parse-buffer(C-c % C-b) (ommm-parse-region,mmm-parse-blockes decir, algunas líneas alrededor del punto). Si está acostumbrado a insertar envios de LaTeX a través deLaTeX-insert-environment(C-c C-e), podría ser conveniente aconsejarle que se ejecutemmm-parse-blockcuando esté hecho, para que MMM reconozca de inmediato las etiquetas recién insertadas:fuente
\pycopyverbatim)? ¿Hay alguna manera de hacer que el modo mmm detecte automáticamente si inserto unpycodeentorno?\begin{pycode}+ ENTRAR + luego inserte unforbucle, por ejemplo,for i in range(0,10):+ ENTRAR +print(i)+ ENTRAR +\end{pycode}. ¿El ENTER después de laforlínea sangra esta declaración pero noprint(i)funciona para usted?pycodeentorno, el modo látex lo intenta automáticamente y tiene que usar TAB explícitamente para corregir esto, se produce otro problema, si usa pycode dentro de otro entorno. Hice un screencast para aclarar lo que quiero decir: expirebox.com/download/e348355feabb8bb5d8c8399b97bccdb8.html\pycy\py?