title: SmartyPants Extension
prev_title: Sane Lists Extension
prev_url:   sane_lists.html
next_title: Table of Contents Extension
next_url:   toc.html

SmartyPants
===========

Summary
-------

The SmartyPants extension converts ASCII dashes, quotes and ellipses to
their HTML entity equivalents.

ASCII symbol | Replacements    | HTML Entities
------------ | --------------- | -------------------
`'`          | ‘ ’ | `‘` `’`
`"`          | “ ” | `“` `”`
`<< >>`      | &laquo; &raquo; | `&laquo;` `&raquo;`
`...`        | &hellip;        | `&hellip;`
`--`         | &ndash;         | `&ndash;`
`---`        | &mdash;         | `&mdash;`

Using the configuration option 'substitutions' you can overwrite the
default substitutions. Just pass a dict mapping (a subset of) the following
keys to the substitution strings.

    'mdash', 'ndash', 'ellipsis',
    'left-angle-quote', 'right-angle-quote',
    'left-single-quote', 'right-single-quote',
    'left-double-quote', 'right-double-quote'
    
Use e.g. the following config to get correct quotes for the German language:

    extensionConfigs = {
        'smarty': [('substitutions', {
                    'left-single-quote': '&sbquo;', # sb is not a typo!
                    'right-single-quote': '&lsquo;',
                    'left-double-quote': '&bdquo;',
                    'right-double-quote': '&ldquo;'
                    })]
    }

!!! note
    This extension reimplements the Python [SmartyPants] 
    library by intregated it into the markdown parser.
    While this does not provide any additional features,
    it does offer a few advantages. Notably, it will not 
    try to work on highlighted code blocks (using the 
    [CodeHilite] Extension) like the third party library 
    has been known to do.
    
[SmartyPants]: http://pythonhosted.org/smartypants/
[CodeHilite]: code_hilite.html

Usage
-----

See [Extensions](index.html) for general extension usage, specify `smarty`
as the name of the extension.

See the [Library Reference](../reference.html#extensions) for information about
configuring extensions.

The following options are provided to configure the output:

Option                | Default value | Description
------                | ------------- | -----------
`smart_dashes`        | enabled       | whether to convert dashes
`smart_quotes`        | enabled       | whether to convert straight quotes
`smart_angled_quotes` | disabled      | whether to convert angled quotes
`smart_ellipses`      | enabled       | whether to convert ellipses
`substitutions`       | {}            | overwrite default substitutions

Further reading
---------------

SmartyPants extension is based on the original SmartyPants implementation
by John Gruber. Please read it's [documentation][1] for details.

[1]: http://daringfireball.net/projects/smartypants/