如何使用Pelican格式化标题文本?

时间:2015-09-08 01:32:38

标签: python markdown pelican

我使用Pelican和Markdown。我将博客文章创建为foo.md个文件,如下所示:

Title: Light, by Kelly Link
Date: 2015-09-07 21:18

Blah blah ...

我希望标题中的单词用斜体字表示,但我不能在Title:字段中使用markdown(如果我写*Light*, by Kelly Link它的字面解释。为了做到这一点,我必须改变主题吗?

2 个答案:

答案 0 :(得分:4)

因此,我相信,Pelican中相关的代码部分来自readers.py(从第183行开始):

def _parse_metadata(self, meta):                                               
    """Return the dict containing document metadata"""                         
    formatted_fields = self.settings['FORMATTED_FIELDS']                       

    output = {}                                                                
    for name, value in meta.items():                                           
        name = name.lower()                                                    
        if name in formatted_fields:                                           
            # handle summary metadata as markdown                              
            # summary metadata is special case and join all list values        
            summary_values = "\n".join(value)                                  
            # reset the markdown instance to clear any state                   
            self._md.reset()                                                   
            summary = self._md.convert(summary_values)                         
            output[name] = self.process_metadata(name, summary)   

简而言之,Pelican正在考虑是否应该在编写Markdown字段之前对其进行解析(titlemeta dict的一部分)。基于此,看起来您需要做的就是确保title设置中有FORMATTED_FIELDS

答案 1 :(得分:2)

  

谢谢,非常有帮助!我这样做了,但是现在由于某种原因,Pelican包装格式化文本的<p></p>有很大的余地。 - Eli Rose 9月8日&15; 15:2:26

您通常可以通过将主题的html页面中的<p></p>变量修改为title来避免title|striptags换行。这解决了Typogrify有时会创建的其他几个问题(例如标题中的全部大写部分)。

例如:

{% for p in PAGES %}
    <li{% if p == page %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title|striptags }}</a></li>
相关问题