2016-05-23 10 views
1

LaTeXドキュメントを生成するために2番目のJinja環境を作成します。 This snippetFlask.create_jinja_environmentを使用しますが、カスタムローダを使用します。スニペットのようにenvを作成するにはどうすればよいですか?テンプレートはアプリのテンプレートがあり、同じ場所からロードされるようにcreate_jinja_environment使用するスニペットFlaskアプリで2番目のJinja環境を作成する

LATEX_SUBS = (
    (re.compile(r'\\'), r'\\textbackslash'), 
    (re.compile(r'([{}_#%&$])'), r'\\\1'), 
    (re.compile(r'~'), r'\~{}'), 
    (re.compile(r'\^'), r'\^{}'), 
    (re.compile(r'"'), r"''"), 
    (re.compile(r'\.\.\.+'), r'\\ldots'), 
) 

def escape_tex(value): 
    newval = value 
    for pattern, replacement in LATEX_SUBS: 
     newval = pattern.sub(replacement, newval) 
    return newval 

texenv = app.create_jinja_environment() 
texenv.block_start_string = '((*' 
texenv.block_end_string = '*))' 
texenv.variable_start_string = '(((' 
texenv.variable_end_string = ')))' 
texenv.comment_start_string = '((=' 
texenv.comment_end_string = '=))' 
texenv.filters['escape_tex'] = escape_tex 

答えて

0

。これはほとんどの場合、LaTeXテンプレートを使ってアプリケーションのテンプレートフォルダにディレクトリを作成するだけです。

create_jinja_environmentを使用することはできますが、スニペットがenvの他の属性を置き換えるのと同じようにローダーを置き換えることができます。

texenv = app.create_jinja_environment() 
texenv.loader = FileSystemLoader('/path/to/latex/templates') 
+0

ありがとうございました!私は標準的な問題があります:すべてのFlask .pyファイルでこの環境にアクセスしたい場合、 'env'を' g'( 'g.env = env')に追加する必要がありますか? – kkoommbb

+0

いいえ、必要な場所にインポートする必要があります。 – davidism

関連する問題