2010-01-27 6 views
6

Soy un gran admirador de Markdown (usándolo en casi todos mis proyectos de PHP) pero no soy un fan de su producción limitada. Gran parte del renderizado es un poco demasiado simple, y realmente no me permite mucho control o libertad con respecto a su diseño. Por ejemplo, puedo insertar una imagen:Expansión de Markdown PHP para aceptar nombres de clases de CSS

 
![Alt Text](path/to/image.jpg) 
This is my image! 

Pero eso simplemente se convierte en:

<p> 
    <img src="path/to/image.jpg" alt="Alt Text" /> This is my image! 
</p> 

Supongamos que quería flotar mi imagen a la derecha? Actualmente no puedo agregar ninguna clase a la sintaxis, pero ¿no sería una buena característica? Quisiera poder dar salida:

<p> 
    <img src="path/to/image.jpg" alt="Alt Text" class="alignright caption"> 
    This is my image! 
</p> 

El soporte para una o más clases de CSS sería fenomenal. Mi pregunta es sobre la mejor forma de implementar este soporte en la versión PHP de Markdown.

Ideas?

Respuesta

8

de rebajas no tiene sintaxis en la versión de la base de apoyo CSS class nombres, estilos en línea, o id atributos. Dependiendo de lo que esté haciendo, puede encontrar que Textile es la mejor solución para usted. De alguna manera es similar a Markdown, y en otros es bastante diferente. Por ejemplo, para obtener la salida que mencionaste anteriormente en tu pregunta, usarías esta cadena Textil:

(subtítulo alignright) path/to/image.jpg (Texto Alt)! Esta es mi imagen!

lo que se traduciría a esto:

<p> 
    <img src="path/to/image.jpg" alt="Alt Text" class="alignright caption"> 
    This is my image! 
</p> 

También puede aplicar estilos en línea (horror de horrores) usando {}

Puede play with the syntax en su página de demostración en vivo.

Tuve algunos problemas para encontrar un analizador de Textiles para PHP, por lo que su kilometraje en esta respuesta puede no ser tanto como esperaba. Encontré this snippet, pero seguramente no puede ser todo.

+0

+1 Nunca he oído hablar de Textile. Bonito. Esto puede ser exactamente lo que he estado buscando desde el principio. – Sampson

4

No existe la "mejor manera" de implementar esto en Markdown; simplemente dejarías de usar Markdown (en cambio, tienes tu propia creación).

Afortunadamente, Markdown no restringe su control o libertad tanto como usted piensa.

El descuento no es un reemplazo para HTML, o incluso cerca de él. Su sintaxis es muy pequeña, correspondiendo solo a un subconjunto muy pequeño de etiquetas HTML. La idea es no para crear una sintaxis que facilite la inserción de etiquetas HTML. En mi opinión, las etiquetas HTML ya son fáciles de insertar. La idea de Markdown es facilitar la lectura, la escritura y la edición de la prosa. HTML es un formato de publicación ; Markdown es un formato de escritura . Por lo tanto, la sintaxis de formato de Markdown solo resuelve problemas que pueden transmitirse en texto sin formato.

Para cualquier marcado que no esté cubierto por la sintaxis de Markdown, simplemente use HTML. No hay necesidad de prefabricarlo o delimitarlo para indicar que está cambiando de Markdown a HTML; solo usa las etiquetas.

Fuente: Markdown Syntax Documentation - Inline HTML

+1

@AlexBarrett: con todo el debido respeto, esto no responde mi pregunta de cómo ampliar el descuento para incluir la capacidad de proporcionar nombres de clase CSS a los elementos. – Sampson

+1

De hecho, no es así. _En mi opinión_, hacerlo sería una confusión de ideas. –

2

Mira la información en este enlace:

http://www.pingtrip.com/weblog/2008/04/adding-custom-tags-to-markdown

Usted podría utilizar esa técnica exacta para realizar un lapso o div 'bloque' que tendría el estilo aplicado. Parece que funciona en múltiples líneas sin problema.

Sería más difícil incluir el nombre de clase en la etiqueta, pero por cuánto no puedo decir en este momento. Voy a hacer eso eventualmente, publicaré los resultados aquí si lo hago.

Me pregunto por qué tanta gente solo dice "Markdown no es para that"? Markdown es demasiado útil para limitarse a blogs y comentarios de foros.

EDIT:

Para hacer más claro sin seguir el enlace:

Puede crear etiquetas personalizadas que le permiten definir cadenas de inicio y final y el texto de reemplazo. Por ejemplo:

-s% nombre de clase%
Aquí es su
customly estilo
la escritura de reducción del precio
s-

que podría ser muy fácilmente implementado para aplicar un bloque SPAN/div de una cierta clase /carné de identidad. Siga el enlace para ver un ejemplo de implementación de cuadros de "Advertencia" y "Nota".

+0

Es un truco, pero responde la pregunta, y estoy de acuerdo: ¡Markdown es demasiado útil para sufrir esta limitación! Además, mi caso de uso particular requiere que use Markdown, no Textile, que toma un enfoque bastante diferente al marcado ligero. –

Cuestiones relacionadas