Ir o contido principal
  • Inicio
  • e-dixgal
    • sesion_01
    • sesion_02
    • sesion_03
    • sesion_04
  • AI
  • Drupal
  • GNU-Linux
    • Debian
    • Arch Linux
    • LibreOffice
    • Latex
    • RStudio
  • Moodle
  • Espazo Abalar
  • Procurar

Como incrustar código python nun documento Latex

Por webmaster, 10 Novembro, 2023
Latex

​

 

A posibilidade de introducir código Python nun documento Latex, otórgalle a estes unha capacidade de edición de contidos incríbel. Pódense crear exercicios con datos automatizados e aleatorios e incluso se lle pode facilitar a resposta correcta ao alumno, permite a representación de funcións e gráficos de diferentes tipos, o análise dun ficheiro con datos: cálculo de medias, varianzas, etc. Tamén podemos imprimir nun pdf distintos mapas de Google Maps. Vexamos como se instala a librería Pythontex, que é a protagonista desta maxia.

 

Primeiramente comprobamos se está instalada pythontex no sistema operativo. Tan só temos que abrir o emulador de terminal e escribir pythontex. No caso de instalar texlive-full, xa dispoñemos desta ferramenta, que está na ruta:  
 

/usr/share/texlive/texmf-dist/scripts/pythontex

Se a distribución coa que traballas non recoñece o comando pythontex á hora de escribilo no terminal, debemos instalar esta ferramenta segundo os seguintes puntos:

## 1. Descarga da librería pythontex

Páxina oficial: https://ctan.org/pkg/pythontex

Ligazón para a súa descarga: [https://mirrors.ctan.org/macros/latex/contrib/pythontex.zip](https://mirrors.ctan.org/macros/latex/contrib/pythontex.zip)

## 2. Descomprimimos e instalamos

Abrimos un terminal no cartafol e executamos as seguintes intrucións:

```
latex pythontex.ins
```

 

E con esta orde xérase o ficheiro pythontex.sty

Seguidamente executamos o seguinte:

su root (introducimos o contrasinal)

python pythontex_install.py

E aparece un diálogo mediante o cal nos pregunta pola ruta na que queremos instalar o pythontex. Escollemos a opción 1

 

E instala na seguinte ruta:

/usr/share/texmf-dist/scripts/pythontex

##   
3. Editamos un ficheiro tex

Neste exemplo creamos un número aleatorio con Python. Introducimos o seguinte código no noso editor favorito:

\documentclass{article}
\usepackage[pyfuture=none,gobble=auto]{pythontex}
\begin{document}    
   Número aleatorio:
   \begin{pycode}
       from numpy import *
       r1=random.uniform(3,11)
       print (r1)                
   \end{pycode}    
\end{document}

Se o que desexamos é escoller un número dentro dunha serie deles definidos nun array, podemos facelo do seguinte xeito:

\documentclass{article}
\usepackage[pyfuture=none,gobble=auto]{pythontex}
\begin{document}    
   Número aleatorio:
   \begin{pycode}
       from numpy import *
       r1=random.choice([2,3,4,5,6])
       print (r1)                
   \end{pycode}    
\end{document}

Incluso podemos rescatar un valor calculado en Python e empregalo dentro do documento Latex. Ista propiedade é moi interesante, xa que nos permite crear exercicios con valores aleatorios e automatizados.

\documentclass{article}
\usepackage[pyfuture=none,gobble=auto]{pythontex}
\begin{document}    
   \begin{pycode}
       from numpy import *
       r1=random.choice([2,3,4,5,6])                   
   \end{pycode}
   Valor aleatorio: \py{r1}
\end{document}

### 4. Compilamos o ficheiro .tex

Abrimos o terminal na ruta na cal teñamos gardado o ficheiro anterior e executamos as tres ordes seguintes en orde:

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode *.tex

python3 /usr/share/texmf-dist/scripts/pythontex/pythontex3.py *.tex

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode *.tex

Se abrimos o ficheiro pdf que se xerou no mesmo cartafol no cal está situado o ficheiro tex, visalizamos o resultado:

Resulta moi cómodo crear uns alias dos comandos para evitar recordar ordes tan longas ou ter que andar copiando e pegando no terminal. Para isto editamos o ficheiros .bashrc do usuario que utilicemos

cd ~

nano .bashrc

E engadimos ao final do ficheiro os seguintes alias:

alias plx='pdflatex --shell-escape -synctex=1 -interaction=nonstopmode'

alias ptx='python3 /usr/share/texmf-dist/scripts/pythontex/pythontex3.py'

Para gardar prememos a combinación de teclas Ctrl + o e para saír Ctrl + x

E seguidamente para cargar estes alias, podemos reiniciar o equipo ou escribir:

source ~.bashrc

Se empregamos os alias anteriores procederiamos do seguinte xeito para compilar o ficheiro tex:

plx *.tex && ptx *.tex && plx *.tex

### 5.  importar librerías Python

Nos seguinte exemplos debemos importar librerías Python.

```python
apt install python-
```

### 6. Outros exemplos

#### a. Outra forma de chamar a comandos Python

\documentclass{article}
\usepackage[pyfuture=none,gobble=auto]{pythontex}
\begin{document}
   Sabes que $2^{65} = \py{2**65}$?    
\end{document}

E compilando, obtemos:

#### b. Inserir gráficos no documento final

Con Python podemos crear moitos gráficos a partir de datos numéricos. Na seguinte páxina dispoñemos de moitos tipos de gráficos e do seu código python para crealos. Facendo unha labor de adaptación podemos empregalos en Latex. Vexamos un exemplo:

\documentclass{article}
\usepackage[pyfuture=none,gobble=auto]{pythontex}
\begin{document}
   \begin{pycode}
       from pylab import *
       t = arange(0.0, 2.0, 0.01)
       s = sin(2*pi*t)
       plot(t, s)
       grid(True)
       # MATLAB style
       xticklines = getp(gca(), 'xticklines')
       yticklines = getp(gca(), 'yticklines')
       xgridlines = getp(gca(), 'xgridlines')
       ygridlines = getp(gca(), 'ygridlines')
       xticklabels = getp(gca(), 'xticklabels')
       yticklabels = getp(gca(), 'yticklabels')
       setp(xticklines, 'linewidth', 3)
       setp(yticklines, 'linewidth', 3)
       setp(xgridlines, 'linestyle', '-')
       setp(ygridlines, 'linestyle', '-')
       setp(yticklabels, 'color', 'r', fontsize='medium')
       setp(xticklabels, 'color', 'r', fontsize='medium')
       show()
   \end{pycode}
\end{document}

E despois de compilalo obtemos esta vista:

c. Enviar unha función a un pdf

\documentclass{article}
\usepackage[pyfuture=none,gobble=auto]{pythontex}
\pgfplotsset{compat=1.17}
\usepackage{pgfplots}
\usepackage{graphicx}
\begin{document}
   \begin{pycode}
       from pylab import *
       t = arange(0.0, 2.0, 0.01)
       s = sin(2*pi*t)
       plot(t, s)
       grid(True)
       # MATLAB style
       xticklines = getp(gca(), 'xticklines')
       yticklines = getp(gca(), 'yticklines')
       xgridlines = getp(gca(), 'xgridlines')
       ygridlines = getp(gca(), 'ygridlines')
       xticklabels = getp(gca(), 'xticklabels')
       yticklabels = getp(gca(), 'yticklabels')
       setp(xticklines, 'linewidth', 3)
       setp(yticklines, 'linewidth', 3)
       setp(xgridlines, 'linestyle', '-')
       setp(ygridlines, 'linestyle', '-')
       setp(yticklabels, 'color', 'r', fontsize='medium')
       setp(xticklabels, 'color', 'r', fontsize='medium')
       plt.savefig('figure.png',dpi=200)        
   \end{pycode}
\IfFileExists{figure.png}{
   \includegraphics{figure}
}{}
\end{document}

Pero para compilalo, debemos de chamar aos tres comandos, pero por separado. Cando remate un executamos o outro:

plx *.tex

ptx *.tex

plx *.tex

​

Canle RSS