通过更改版本和作业名称进行两次编译

通过更改版本和作业名称进行两次编译

我一直在上课,我定义了一些命令来分离teacherstudent填充。结构与此处描述的相同邮政。MWE 位于末尾。

目前,我必须编译一次,更改输出的名称,更改file.tex为设置第二个版本,重新编译并重命名第二个输出。

我想通过将pdflatex编译命令更改texstudio为编译两次并自动更改version和相应的输出来让我的生活变得更好。

我读过在命令行中可以做到这一点Texstudio,我也读过在 bash 文件中也可以做到这一点邮政。说实话,我不会编写/使用/理解 bash,所以我更喜欢第一种方式。

我如何才能实现:

  • foo.tex使用该选项编译我的第一个\setversion{student}并将其重命名为foo_student.tex
  • 第二次编译(在同一次运行中)我的foo.tex选项\setversion{teacher}并将其重命名为foo_teacher.tex

到目前为止,我所做的是使用以下命令编译两次并创建两个具有不同名称但内容没有差异的 pdf: pdflatex -synctex=1 -interaction=nonstopmode -jobname=%_student main.tex | pdflatex -synctex=1 -interaction=nonstopmode -jobname=%_teacher main.tex

以下是 MWEmain.tex

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{etoolbox}

\newbool{studentversion}
\setbool{studentversion}{false}

\newcommand\setversion[1]{%
    \def\tempa{#1}%
    \def\tempb{student}%
    \ifx\tempa\tempb
        \setbool{studentversion}{true}%
    \else
        \def\tempb{teacher}%
        \ifx\tempa\tempb
            \setbool{studentversion}{false}%
        \else
            \errmessage{Unknown value for studentversion: #1}%
        \fi
    \fi
}

\newcommand{\ProfDifference}[2]%
{%
    \ifbool{studentversion}%
    {%%True (student version)
        #1
    }%
    {%%False (teacher version)
        #2
    }
}


\setversion{teacher}  %%Modify this line to change the version
\begin{document}

    The following text depends of the version :

    \ProfDifference{It's the student version.}{It's the teacher version.}
\end{document}

答案1

您可以执行以下操作:

将宏main.tex更改\setversion为:

\newcommand*\checkversion
  {%
    \begingroup
    \def\tempa{student}%
    \expandafter
    \endgroup
    \ifx\tempa\myversion
      \setbool{studentversion}{true}%
    \else
      \begingroup
      \def\tempa{teacher}%
      \expandafter
      \endgroup
      \ifx\tempa\myversion
        \setbool{studentversion}{false}%
      \else
        \errmessage{Unknown value for studentversion: \myversion}%
      \fi
    \fi
  }
\checkversion

pdflatex并将调用改为

pdflatex -synctex=1 -interaction=nonstopmode -jobname=%_student "\def\myversion{student}\input{main.tex}" | pdflatex -synctex=1 -interaction=nonstopmode -jobname=%_teacher "\def\myversion{teacher}\input{main.tex}" 

这样就可以了。(我不使用 TeXstudio,所以我不会测试这个,但我认为没有理由这不起作用)

相关内容