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

How do I format title text using Pelican?

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

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

Blah blah ...

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

因此,我认为 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 的一部分)。基于此,看起来您需要做的就是确保您的 FORMATTED_FIELDS 设置中有 title

Thanks, quite helpful! I did this, but now for some reason the <p></p> that Pelican wraps the formatted text in has an enormous margin. – Eli Rose Sep 8 '15 at 2:26

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

例如:

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