如何避免在 latex 中编译我的一些新命令

如何避免在 latex 中编译我的一些新命令

我正在为我的学生写一份考试试卷,并且定义了 3 个命令来插入空格,允许\dotfill他们写下他们的答案:\rep,,\replarge分别\repLarge用于简短和较长的答案:

\newcommand{\rep}{\noindent \dotfill 

 \noindent\dotfill

\noindent\dotfill

\noindent\dotfill

}
\newcommand{\repshort}\rep \rep 

\newcommand{\repLarge}\rep \rep \rep \rep

所以,我的问题是:

  1. 有什么方法可以改善这些命令吗?
  2. 如何在编译时生成两个 pdf 版本:一个带有使用命令生成的空格,另一个不带有空格?

答案1

这是第二个问题的一个快速而粗略的解决方案以及更高级解决方案的链接(上面的评论也包含这两个问题的有用链接):

a) 创建两个主文件,其中 (1) 提供带有空格的命令,(2) 提供与空命令相同的命令(您也可以只附加类似的内容\renewcommand{\rep}{}并将其注释掉)。

或者

b) 使用参数来定义文档并使用 Makefile。查看以下问题的答案向文档传递参数寻找一些灵感。下面是此类 Makefile 的示例,以及您的 .tex 文件如何使用它:

生成文件:

default: Exercise.pdf Solution.pdf

Exercise.pdf: *.tex
    -rm Exercise.pdf
    pdflatex -file-line-error --jobname=Exercise '\def\isexercise{1} \input{main.tex}'
    pdflatex -file-line-error --jobname=Exercise '\def\isexercise{1} \input{main.tex}'

Solution.pdf: *.tex
    -rm Solution.pdf
    pdflatex -file-line-error --jobname=Solution '\input{main.tex}'
    pdflatex -file-line-error --jobname=Solution '\input{main.tex}'

主要.tex:

\documentclass{article}

\newcommand{\rep}{}

\ifdefined\isexercise
  \renewcommand{\rep}{
        \noindent\dotfill 

        \noindent\dotfill

        \noindent\dotfill

        \noindent\dotfill
  }
\fi

\begin{document}

Exercise 1: \rep

\end{document}

相关内容