Django模板和乳胶

时间:2013-11-25 13:47:57

标签: django templates latex

我想使用Latex用我的Django模板创建PDF文件。

但是,当它生成PDF文件时,某些字符没有以良好的方式编码,特别是'(撇号):Latex停止编译,如果我忽略错误,输出就是&#39。

我是法国人,所以我的Python文件是UTF-8,我的数据库是UTF8-general-CI,我将这些软件包用于Latex: [utf8] {inputenc} [T1] {fontenc} [francais] {babel} {lmodern}

生成所有法语口音,所以我不知道问题出在哪里?

有什么想法吗?

以下是我的观点:

# -*- coding: utf-8 -*-
...
def results_contact(request, checkup_id):
    ...
    title = get_object_or_404(Checkup, pk=checkup_id).name
    ...

    template_file = 'activities/results.tex'

    t = loader.get_template(template_file)
    context = Context({
              ...
              "title":    title,
              ...
              })

    ...
    f.write(smart_str(t.render(context)))
    ...
    return HttpResponseRedirect('/download_file/upload/checkups/%s.pdf' % basename)

我的模板:

\documentclass[11pt]{lettre}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{lmodern}
...

\begin{document}
\begin{letter}{...}
\name{My name}
\address{My address}
\lieu{My city}
...
\conc{ {{ title }} } %here is my variable
...
\end{letter}
\end{document}

例如,如果title = Visite d'Adam,则输出为

  

Objet:Visite d&#39Adam

这是日志:

! Misplaced alignment tab character &.
<argument> Visite d&
                        ##39;embauche
l.35 \conc{ Visite d&#39;Adam }
?

1 个答案:

答案 0 :(得分:9)

这是automatic HTML escaping的结果。由于您没有生成HTML,因此可以turn this feature off

{% autoescape off %}
    \documentclass[11pt]{lettre}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[francais]{babel}
    \usepackage{lmodern}
    ...

    \begin{document}
        \begin{letter}{...}
            \name{My name}
            \address{My address}
            \lieu{My city}
            ...
            \conc{ {{ title }} }
        ...
        \end{letter}
    \end{document}
{% endautoescape %}