Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

domingo, 16 de abril de 2017

Error de Lyx: "No se puede encontrar un comando Latex para el caracter '-' "

Estaba copiando el siguiente texto desde un pdf a un documento de Lyx (versión 2.1.4):

αfi−1+fi +αfi+1=bfi+2−2fi+fi−24h 2 +a fi+1−2fi+fi−1 h

y luego de acomodarlo para que lyx pudiera interpretar las ecuaciones:

$$\alpha f'\textsubscript{i−1} + f'\textsubscript{i} +\alpha f'\textsubscript{i+1} = b(f\textsubscript{i+2} − f\textsubscript{i−2})/4h + a(f\textsubscript{i+1}−f\textsubscript{i−1})/2h$$

$$\beta f'\textsubscript{i−2} + \alpha f'\textsubscript{i−1} + f'\textsubscript{i} +\alpha f'\textsubscript{i+1} + \beta f'\textsubscript{i+2} = c(f_{i+3} − f\textsubscript{i−3})/6h + b(f\textsubscript{i+2} − f\textsubscript{i−2})/4h + a(f\textsubscript{i+1}−f\textsubscript{i−1})/2h$$



Lyx me tiraba este error:

Error de Lyx: "No se puede encontrar un comando Latex para el caracter '-' (código 0x)2212".


Agregarle al preámbulo

\usepackage{amsmath}
\usepackage{amssymb}

o cambiar el idioma a español o importar más módulos no solucionaron el problema. La solución la hallé en este link. Al copiar desde el pdf estaba también copiando un guión, no un signo menos. Tuve que reemplazar todos los guiones por los signos menos de mi teclado.
Y descubrí que no es necesario usar \textsubscript, se puede reemplazar con un guíon largo _. Mis ecuaciones finalmente quedan:

$$\alpha f'_{i-1}  + f'_{i} + \alpha f'_{i+1} = b(f_{i+2} - f_{i-2})/4h +a(f_{i+1} - f_{i-1})/2h$$

$$\beta f'_{i-2} + f'_{i-1} + f'_{i} +\alpha f'_{i+1} + \beta f'_{i+2} =c(f_{i+3} - f_{i-3})/6h + b(f_{i+2} - f_{i-2})/4h + a(f_{i+1}-f_{i-1})/2h$$



sábado, 1 de abril de 2017

System.IO.StreamWriter lanza una System.UnauthorizedAccessException

Estuve testeando el siguiente código:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(Path_to_Folder, true))
  {
     file.WriteLine("I'm a line to write");
  }


Y me lanzaba una System.UnauthorizedAccessException.
Esta excepción no sólo salta al intentar acceder a una carpeta protegida, también sale cuando Path_to_Folder apunta a una carpeta, no a un archivo. El código correcto es:

using (System.IO.StreamWriter file = new System.IO.StreamWriter((Path.Combine(Path_to_Folder, "a_file"), true))
 {               

     file.WriteLine("I'm a line to write");           
 }