我正在尝试使用makefile来编译我在LaTex中的故事。我正在尝试使用变量来完成我的故事的文件名。如果我只是运行make,它就可以了。但是,我需要能够从make运行特定命令。
pdflatex "\\def\\isdraft{1} \\input{FMPGC.tex}"
我如何从PROJ + OBJS创建变量,以便我可以执行类似于下面尝试的操作。如果我为make draft运行下面的代码,它就会失败并且显示它在FMPGC和tex之间添加了很多空格。
我如何将两个变量与"。"这对之间的符号所以我可以在下面的命令中编译我的故事。我也试过没有逃避\符号,这似乎没有效果。
# This makefile compiles my story using LaTex
# Author:
#
# VARS - Variables to be changed for reuse of my script
PROJ = "FMPGC" # The name of the project
OBJS = "tex" # The extension for the content
AUXS = "aux" # The aux extensions
CHAP = "chapters/" # The chapters
FOO = $(PROJ) += "."
F002 = $(FOO) += $(OBJS)
# Configuration:
CC = pdflatex # The compiler
# Rules
all:
$(CC) $(PROJ).$(OBJS)
draft:
$(CC) "\\def\\isdraft{1} \\input{$(FOO2)}"
目前的错误来自于它现在没有向变量输入任何内容 -
pdflatex "\\def\\isdraft{1} \\input{}"
以下似乎是确切的问题。
<*> \def\isdraft{1} F
MPGC.tex
----------------更新了制作文件
# This makefile compiles my story using LaTex
# Author:
#
# VARS - Variables to be changed for reuse of my script
# The name of the project
PROJ:=FMPGC
# The extension for the content
OBJS:=tex
# The aux extensions
AUXS:=aux
# The chapters
CHAP:=chapters/
# Configuration:
# The compiler
CC=pdflatex
# Rules
all:
$(CC) $(PROJ).$(OBJS);
draft:
$(CC) "\def\isdraft{1} $(PROJ).$(OBJS)";
更新错误----
pdflatex "\def\isdraft{1} FMPGC.tex";
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
LaTeX2e <2014/05/01>
Babel <3.9k> and hyphenation patterns for 21 languages loaded.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
<*> \def\isdraft{1} F
MPGC.tex
?
! Emergency stop.
...
<*> \def\isdraft{1} F
MPGC.tex
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on texput.log.
答案 0 :(得分:2)
在GNU make Manual的The Two Flavors of Variables部分,我们找到:
如果你将空格放在变量值的末尾,最好在行尾添加类似的注释以使你的意图清晰。相反,如果你不想在变量值的末尾加上任何空格字符,你必须记住不要在一些空格之后在行尾添加随机注释,例如:
dir := /foo/bar # directory to put the frobs in
这里变量dir的值是'/ foo / bar'(有四个尾随空格),这可能不是意图。 (想象一下这个定义的'$(dir)/ file'之类的东西!)
答案 1 :(得分:0)
感谢@Etan Reisner,我在查看文档后能够修复它。
我的make文件现在看起来像这样 -
# This makefile compiles my story using LaTex
# Author:
#
# VARS - Variables to be changed for reuse of my script
# The name of the project
PROJ:=FMPGC
# The extension for the content
OBJS:=tex
# The aux extensions
AUXS:=aux
# The chapters
CHAP:=chapters/
# Configuration:
# The compiler
CC=pdflatex
# Rules
all:
$(CC) $(PROJ).$(OBJS);
draft:
$(CC) "\def\isdraft{1} \input{$(PROJ).$(OBJS)}";
我现在可以编译我的文档,并添加我的变量以便在LaTex中使用。