Makefile为变量添加空格

时间:2015-04-16 23:50:47

标签: makefile latex pdflatex

我正在尝试使用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.

2 个答案:

答案 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中使用。