我有一个在Heroku上托管的Django应用程序。在其中,我使用LaTeX编写的视图来动态生成pdf,并安装了Heroku LaTeX buildpack以使其工作。我的LaTeX视图如下。
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
的自定义文档类。通常我认为使用自定义类有两种选择。
将类文件(本例中为res.cls
)放在与.tex
文件相同的文件夹中。对我来说,那将是我的应用程序的模板文件夹。我试过这个,但pdflatex
找不到类文件。 (大概是因为它没有在模板文件夹中运行,而是在临时目录中运行?是否有办法将类文件复制到临时目录?)
将类文件放在具有结构localtexmf/tex/latex/res.cls
的另一个文件夹中,并使用this question答案中列出的方法使pdflatex
了解它。我已尝试使用heroku run bash
在Heroku上运行CLI说明,但它无法识别initexmf
,并且我不完全确定如何指定相关目录。
如何判断pdflatex
找到哪个类文件?
答案 0 :(得分:1)
只有2个想法,我不知道它是否会解决你的问题。
首先,尝试将~/texmf
文件夹放在initexmf
这是Linux系统中的默认本地文件夹中(我对Heroku知之甚少,但它主要是Linux系统,对吧?)。 / p>
其次,我通常使用texhash
而不是$ cd /path/to/codeigniter
$ composer update
,它可能在您的系统上可用?
答案 1 :(得分:1)
我最终找到another workaround来实现我的目标,但我找到的最直接的解决方案是在运行时更改OBJ = graphics.o chip8.o
# calling program "pkg-config" and store result in CFLAGS variable
CFLAGS = $(shell pkg-config --cflags glfw3)
# calling program "pkg-config" and store result in LDFLAGS variable
LDFLAGS = $(shell pkg-config --ldflags glfw3)
emulator: $(OBJ)
gcc -o emulator $(OBJ) $(LDFLAGS)
graphics.o: graphics.c graphics.h
gcc $(CFLAGS) -c graphics.c
chip8.o: chip8.c chip8.h
gcc $(CFLAGS) -c chip8.c
clean:
rm -f $(OBJ) emulator
,例如......
TEXMFHOME
...如果你有TEXMFHOME=/d pdflatex <filename>.tex
。
在tex.stackexchange.com上信用转到cfr以获取建议。