Как избежать компиляции некоторых моих новых команд в латексе

Как избежать компиляции некоторых моих новых команд в латексе

Я пишу экзамен для своих студентов и определил 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

Вот одно быстрое и грубое решение второго вопроса и ссылка на более продвинутые решения (комментарии выше также содержат полезные ссылки для обоих вопросов):

а) Создайте два основных файла, в которых вы (1) указываете команды с пробелами и (2) указываете те же команды как пустые команды (вы также можете просто добавить что-то вроде \renewcommand{\rep}{}и закомментировать это).

ИЛИ

б) Используйте параметры для вашего документа и используйте Makefile. Посмотрите на ответы наПередача параметров в документдля вдохновения. Вот пример того, как может выглядеть такой Makefile и как ваш .tex-файл может его использовать:

Makefile:

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}'

main.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}

Связанный контент