Archivo de la etiqueta: código

Curso no convencional de LaTeX: píntame ese código

En este episodio vamos a hablar de resaltado de sintaxis, es decir, vamos a aprender a darle formato al código fuente que hayamos insertado en nuestro documento con la idea de que sea más fácil de leer.

Hay varios paquetes que nos permiten pintar de colorines nuestro código, está listings que he usado bastante, minted que tenía ganas de aprender a usar y LGrind que descubrí al escribir esto. Voy a hablar de los dos primeros que son los que controlo y sobre LGrind investigáis si os gusta, igual hasta hay más por ahí.

Lo fácil: listings

El paquete listings se utiliza de manera similar al resto de paquetes que hemos visto hasta ahora: lo cargamos, establecemos sus opciones y luego utilizamos los comandos que nos proporciona en el cuerpo del documento.

Seguir leyendo →

Lo que he aprendido: recetas en WordPress

No sé si os habéis fijado, pero las recetillas de pan del blog han cambiado de formato. Esto ha sido porque he descubierto que WordPress tiene un shortcode para formatear recetas. Los shortcodes de WordPress son parecidos a los BBCodes, es decir, unas etiquetas que nos permiten realizar tareas complejas con poco esfuerzo. Hablé de ellos cuando aprendí a añadir código a mis entradas.

Volviendo a las recetas, el shortcode en cuestión es recipe y nos genera una receta con su título, su foto y hasta la opción de imprimir. Esta etiqueta tiene diferentes atributos para mayor personalización: title, servings, difficulty, time, image, description y print. Todas ellas con un funcionamiento bastante evidente, pero de las que tenéis un ejemplo más abajo. La opción para imprimir aparece sola si usamos alguno de los atributos time, servings o difficulty, pero podemos activarla en cualquier caso si le asignamos el valor "true".

En el cuerpo de la receta podemos utilizar tres etiquetás más:

  • recipe-notes, donde añadiremos las notas a la receta, por ejemplo, el autor.
  • recipe-ingredients, donde pondremos los ingredientes necesarios, WordPress añadirá el título correspondiente según el idioma, en mi caso Ingredientes
  • recipe-directions, donde escribiremos el proceso. Tendrá como título en castellano Instrucciones

Dentro de la receta podemos usar también listas (ordenadas o no) y diferentes formatos como negrita o cursiva.

Aquí tenéis un ejemplo de uso:

[recipe title="Título de la receta" servings="X raciones" time="X mins" difficulty="fácil" image="http://libreshot.com/wp-content/uploads/2016/12/book-and-coffee.jpg" description="Descripción de la receta." print="true"]
[recipe-notes]
Notas
[/recipe-notes]

[recipe-ingredients]
- Ingrediente 1
– Ingrediente 2
[/recipe-ingredients]

[recipe-directions]
1. Paso 1
2. Paso 2
[/recipe-directions]

[/recipe]

Que crearía algo así:

Título de la receta

  • Partes: X raciones
  • Tiempo: X mins
  • Dificultad: fácil
  • Imprimir

Descripción de la receta.



Notas

Ingredientes

  • Ingrediente 1
  • Ingrediente 2

Direcciones

  1. Paso 1
  2. Paso 2

Tenéis un ejemplo de cómo queda una receta de verdad en el pan de einkorn.

¡Espero que os sea útil!

Referencias

Ayuda de WordPress

La imagen la he cogido de Libreshot un banco de imágenes en el dominio público.

Lo que he aprendido: código en WordPress

Estaba escribiendo otra entrada cuando me he dado cuenta de que en el tiempo que llevo con esto del blog he aprendido varias maneras diferentes de incrustar código en WordPress, así que he decidido compartirlas con vosotros.

Para ver los diferentes estilos vamos a usar mi función favorita escrita en mi lenguaje de programación favorito: el factorial recursivo en Python [1].

A continuación os muestro cuatro maneras de insertar el código en WordPress: usando html, BBCode, Markdown y Gist.

Html

Esta es la primera opción que encontré, consiste en usar la etiqueta <code>. Simplemente escribimos nuestro código entre esas etiquetas:

<code>
def factorial(n):
    z=1
    if n>1:
        z=n*factorial(n-1)
    return z
</code>

y WordPress muy amablemente nos lo pinta así:

def factorial(n):
z=1
if n>1:
z=n*factorial(n-1)
return z

Es una opción elegante y sencilla pero no pone colorines y destruye la indentación (cosa que para Python es muy mala) así que decidí continuar la búsqueda [2].

BBCode

Lo siguiente que descubrí fue el BBCode, es una cosa parecida a html pero que pinta el código de lo más multicolor. Habría que hacer esto:

[code language="python"]
def factorial(n):
z=1
if n>1:
z=n*factorial(n-1)
return z
[/code]

Y daría este resultado:

def factorial(n):
    z=1
    if n>1:
        z=n*factorial(n-1)
    return z

De lo más chulo. Todo lo que necesitáis saber sobre esto está en la ayuda de WordPress en esta página.

Por cierto, si queréis escapar BBCode meted todo el bloque entre corchetes, me ha llevado un rato averiguarlo. También se ha cargado la indentación, todo hay que decirlo.

Markdown

Esta es mi opción favorita básicamente porque uso Markdown[3] para el formato de las entradas del blog desde hace un tiempo. Me resulta de lo más cómodo porque solo con el teclado puedo escribir el contenido y dar formato. Very convenient que dirían los ingleses. Aquí hay dos opciones: con la comilla simple se puede poner código dentro del texto (útil para cuando queremos hablar de una variable) y con comillas triples se pueden crear bloques de código.

Por ejemplo, `variable` se ve como variable y este trozo de código:

```python
def factorial(n):
z=1
if n>1:
z=n*factorial(n-1)
return z
```

Quedaría así:

def factorial(n):
    z=1
    if n>1:
        z=n*factorial(n-1)
    return z

Como veis el resultado es el mismo que usando BBCode.

Gist

Esta opción probablemente sea la más profesional de todas. Es especialmente útil para la gente con cuenta en GitHub aunque cualquiera puede usarlo sin necesidad de registrarse. Consiste en ir a Gist escribir lo que sea que queramos, decirle que lenguaje estamos usando y darle a crear un gist. Ahora copiamos la dirección del gist, la pegamos en el editor de WordPress y listo. También se puede poner el código del gist entre etiquetas en lugar de usar la dirección. Por algún motivo a mí solo me funciona esta segunda opción, es decir:

[gist]da9586e6c23f9d75698a[/gist]

que queda:

Que es muy cuco él y hasta tiene un corazoncito. La documentación la tenéis aquí.

Espero que os haya sido útil y que esta completa locura con los formatos, las etiquetas y la indentación haya merecido la pena. Me contáis y eso 😉

Notas

[1] Este ejemplo está cogido directamente de Rosetta Code, una página en la que se muestra la implementación de diferentes algoritmos en diferentes lenguajes.

[2] Podéis leer más sobre html aquí y aquí

[3] Empecé a usar Markdown cuando descubrí su existencia en GitHub. Aquí tenéis una recopilación de recurso de Markdown con unas chuletillas de lo más elegante.

Lo que he aprendido: filtro de Wiener

Esta vez me he adentrado en el loco mundo de las señales y he descubierto el mágico filtro de Wiener. No me preguntéis que hace la movida por dentro porque no tengo la más remota idea, pero sé que vale para quitarle a una señal un ruido conocido (es para lo que yo lo he usado). Funciona según el siguiente diagrama y puede ser adaptativo o no, a gusto del consumidor:

Hasta donde yo llego, intenta minimizar el error, es decir, hacer que la salida del filtro y la señal sean lo más parecidas posibles. Para el caso de querer quitarle un ruido conocido a una señal, será el ruido y la señal con ruido. Entonces, el error será la parte de la señal de que no se parezca al ruido, osea, la señal sin ruido. Esto se puede implementar por ejemplo en Matlab:


function f = filtroWeiner(x,d,P)

% Filtro Wiener para quitarle a una señal ruido conocido
% Adaptado de: http://www.oocities.org/inigoku/tds0405-5.htm
%
% x = ruido, vector columna
% d = señal medida (señal + ruido), vector columna
% P = orden del filtro
%
% Nota: d y x deben detener la misma longitud

N = length(x);

% Wiener-Hopf (R·w=p)

r = xcorr(x);
R = toeplitz(r(N:N+P-1));

ptemp = xcorr(x,d);
p = ptemp(N:N+P-1);

w = R\p; % coeficientes que mejor filtran el ruido de la señal

% Filtro 

xrec = filter(w,1,x); % señal filtrada

f = d - xrec; % en este caso la señal sin ruido es el error

En la página web que aparece en el código podéis ver dibujillos que explican lo que hace el filtro pero lo mejor es probar uno mismo 🙂

Hasta aquí mi aportación al conocimiento universal, cuidadín con lo que hacéis con ello, que Wiener os está vigilando:

 Nota: todo esto lo aprendí gracias al señor que lleva este blog