github - how - markdown code format
Github con sabor a Markdown y pygments destacando en Jekyll (3)
Editar: ahora es más fácil
a partir de Jekyll> = 0.12.1 redcarpet2 es soportado nativamente por Jekyll, por lo que puedes simplemente configurar tu configuración para markdown: redcarpet
y estarás listo para ir con GFM / bloques de código cercados sin el resto de este juego de palabras ...
Respuesta original
Solicitas explícitamente el descuento con sabor a Github, así que supongo que no estás buscando respuestas que creen bloques de código con el formato líquido sin descuento:
{% highlight python %}
def yourfunction():
print "Hello World!"
{% endhighlight %}
pero preferiría poder escribir algo con bloques de código cercados:
```python
def yourfunction():
print "Hello World!"
```
etc. Para esto, querrás usar el analizador de rebajas redcarpet.
El descuento con sabor a Github usa un analizador de rebajas llamado "Redcarpet" 1 . Irónicamente, aunque el descuento con sabor a Github usa redcarpet2 , este analizador de marcado no es compatible con Jekyll por defecto. En cambio, puede agregar esto como un complemento instalando esa gema de rubí
gem install redcarpet
y luego agregando el plugin de redcarpet2 Jekyll . (Instalar un complemento en Jekyll equivale a colocar el script .rb
ruby dado en ese repositorio en su directorio _plugins
. Puede estar en un subdirectorio de _plugins
también).
Luego, como se explica en la documentación allí, edite su _config.yml
para usar _config.yml
:
markdown: redcarpet2
redcarpet:
extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]
que agrega las extensiones comunes proporcionadas por github-flavor-markdown aka redcarpet2 (Bueno, casi. Esto no hará cosas específicas de github como identificar problemas por número, o confirma por hash, por lo que técnicamente no son lo mismo).
Tener el complemento significa, por el momento, crear su sitio localmente y copiar el _site
a github si está alojando su sitio allí, ya que redcarpet2 no está disponible en la versión Github del motor jekyll (vea este tema abierto) en Jekyll)
Nota : por cierto, no necesita todos los editores de rebajas que ha especificado en su _config.yml
. Para obtener un ejemplo básico con redcarpet2, es posible que desee ver esta config y el directorio de jekyll asociado que la acompaña.
Implementé mi blog de Jekyll en un VPS. Ahora me gustaría añadir Markdown con sabor a Github, usando Pygments highlighting, pero no sé qué archivos tengo que editar y cómo.
Hasta el momento, el único archivo que he configurado es _config.yml
que se ve así:
1 safe: false
2 auto: false
3 server: false
4 server_port: 4000
5 baseurl: /
6 url: http://localhost:4000
7
8 source: .
9 destination: ./_site
10 plugins: ./_plugins
11
12 future: true
13 lsi: false
14 pygments: false
15 markdown: maruku
16 permalink: date
17
18 maruku:
19 use_tex: false
20 use_divs: false
21 png_engine: blahtex
22 png_dir: images/latex
23 png_url: /images/latex
24
25 rdiscount:
26 extensions: []
27
28 kramdown:
29 auto_ids: true,
30 footnote_nr: 1
31 entity_output: as_char
32 toc_levels: 1..6
33 use_coderay: false
34
35 coderay:
36 coderay_wrap: div
37 coderay_line_numbers: inline
38 coderay_line_numbers_start: 1
39 coderay_tab_width: 4
40 coderay_bold_every: 10
41 coderay_css: style
¿Cómo configuro correctamente Jekyll para usar el resaltado Markdown y Pygments con sabor a Github?
En el cambio de archivo de configuración
pygments: false
a
pygments: true
Esto significará que cuando escriba secciones de código en el archivo de rebajas (gran recurso http://daringfireball.net/projects/markdown/ ) usarán el estilo de los pygments. Asegúrate de haber instalado, este es un error que cometí. Además, una vez que esté instalado, deberá crear un archivo css para que se realice el diseño (parece obvio, pero cometí este error).
pygmentize -S default -f html > stylesheets/pygments.css
Puede cambiar el valor predeterminado a cualquiera de los temas que se encuentran aquí:
http://pygments.org/demo/35195/
En lo que respecta al descuento, he leído que para que los pygments funcionen es necesario marcarlos para que sean maruku, que ya has configurado en el archivo de configuración.
Espero que esto ayude, he descubierto que Jekyll es una excelente plataforma de blogs pero muy poco documentada.
Las mejores partes de Jekyll son, como se dice here ,
... Toma un directorio de plantillas (que representa la forma cruda de un sitio web), lo ejecuta a través de Textile o Markdown y convertidores de líquidos, y escupe un sitio web completo, estático ...
Eso significa que obtienes Markdown y pygments destacando por defecto.
Puede descartar o utilizar el _config.yaml predeterminado para esta configuración. Con su configuración existente, es posible que desee establecer pygments en true: pygments: true
.
Esto es lo que haces para
Recuperación : solo asigne un nombre a su archivo como * .markdown, por ejemplo
2012-12-01-my-post.markdown
y colóquelo en cualquier lugar dentro del directorio raíz. Normalmente, lo colocarías en _posts.Cuando jekyll analiza este archivo, lo pasará a través del filtro de reducción. Como una ventaja adicional, puedes guardar como * .textile y analiza usando textile . Y, por supuesto, puede mantenerlo .html para que no se realice ningún análisis de reducción.
pygments : solo haz esto con tu código:
{% highlight python %} def yourfunction(): print "Hello World!" {% endhighlight %}
También obtienes lienzos de ropa haciendo:
{% highlight python linenos %} {% endhighlight %}
Editar: Y también, necesitarás generar la hoja de estilos de sintaxis usando el comando
pygmentize -S default -f html > style.css
como se menciona here y por @ joshuahornby10. Incluya style.css en su html, obviamente. Entonces, su código será sintaxis-resaltado con pygments.
Ah, y no necesita cambiar ninguna configuración en _config.yaml para que esto funcione. Simplemente ejecute su sitio usando jekyll --server --auto
y vea si se ve bien. Nota al costado, cuando edite el archivo _config, tendrá que detener la ejecución automática y volver a ejecutar jekyll para que se produzca cualquier cambio.