2017-03-12 22 views
3

私はHerokuでホストされているDjangoアプリを持っています。その中で、私はLaTeXで書かれたビューを使ってオンザフライでpdfを生成し、これを動作させるためにHeroku LaTeX buildpackをインストールしています。私のLaTeXビューは以下の通りです。LaTeX class on Herokuをインストールするには?

def pdf(request): 
    context = {} 
    template = get_template('cv/cv.tex') 
    rendered_tpl = template.render(context).encode('utf-8') 
    with tempfile.TemporaryDirectory() as tempdir: 
     process = Popen(
      ['pdflatex', '-output-directory', tempdir], 
      stdin=PIPE, 
      stdout=PIPE, 
     ) 
     out, err = process.communicate(rendered_tpl) 
     with open(os.path.join(tempdir, 'texput.pdf'), 'rb') as f: 
      pdf = f.read() 
    r = HttpResponse(content_type='application/pdf') 
    r.write(pdf) 
    return r 

私はcv.texで既存のドキュメントクラスの一つ(例えば。\documentclass{article})を使用するとき、これは正常に動作しますが、私はresというカスタムいずれかを使用したいと思います。私は通常、カスタムクラスを使用するための2つのオプションがあると信じています。

  1. .texファイルと同じフォルダに配置し(この場合res.cls)クラスファイルを。私にとっては、それは私のアプリのテンプレートフォルダにあります。私はこれを試しましたが、pdflatexはクラスファイルを見つけることができません。 (おそらく、テンプレートフォルダ内ではなく一時ディレクトリにあるので、クラスファイルを一時ディレクトリにコピーする方法がありますか?)

  2. クラスファイルを構造体localtexmf/tex/latex/res.clsthis questionの回答に記載されている方法を使用して、にそれを認識させます。私はheroku run bashを使用してHerokuでCLI命令を実行しようとしましたが、initexmfは認識されません。関連するディレクトリを指定する方法は完全にはわかりません。

クラスファイルを見つける場所を教えてください。

答えて

1

私は自分の目標を達成するためにanother workaroundを見つけてしまったが、私が見つけた最も簡単な解決策は、あなたが/d/tex/latex/res/res.clsを持っていた場合... ...例えば、実行時に

TEXMFHOME=/d pdflatex <filename>.tex 

TEXMFHOMEを変更することです。

クレジットは、tex.stackexchange.comのcfrにお送りします。

1

ちょうど2つのアイデアは、あなたの問題を解決するかどうかは分かりません。

最初に、localtexmfフォルダをLinuxシステムのデフォルトのローカルフォルダである~/texmfに入れてみてください(私はHerokuについてよく分かりませんが、主にLinuxシステムです)。

第2に、initexmfを使用する代わりに、私は通常texhashを使用していますが、ご使用のシステムで利用可能かもしれませんか?