Des macros LaTeX pour markdown
tlàl : J’ai fait un système simple de macros pour mon blog. Par exemple, il me suffit d’écrire %latex et ça affiche LaTeX.
J’ai ajouter un système de macro pour mon système de blog. Lorsqu’on est habitué à LaTeX et que l’on commence à écrire des articles un peu conséquent avec des notations mathématiques, les macros deviennent vite quelque chose d’indispensable.
Dans l’entête de mes fichiers j’écris simplement:
macros: test: "This is a macro test" latex: '<span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span>'
Puis dans le corps ça va remplacer :
- %test par This is a macro test ;
- et %latex par LaTeX
Le code est assez simple.
Pour les utilisateurs de nanoc
il suffit de copier le fichier suivant dans le répertoire lib
.
# usage: # --- # ... # macros: # test: "passed test" # --- # ... # Here is a This is a macro test. # class Macros < Nanoc3::Filter identifier :falacy attr_accessor :macro def initialize(arg) super @macro={} @macro[:tlal] = %{<span class="sc"><abbr title="Trop long à lire">tlàl</abbr> : </span>} @macro[:tldr] = %{<span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span>} if @item.nil? if not arg.nil? @macro.merge!( arg ) end else if not @item[:macros].nil? @macro.merge!( @item[:macros] ) end end end def macro_value_for(macro_name) if macro_name.nil? or macro_name=="" or @macro[macro_name.intern].nil? return %{%#{macro_name}} end return @macro[macro_name.intern] end def run(content, params={}) content.gsub(/%(\w*)/) do |m| if m != '%' macro_value_for($1) else m end end end end
Les macros peuvent être vraiment utiles. Lisez cet article par exemple.
commentaires
Écrit le : 26/10/2010
modifié le : 02/09/2011