包含“丰富”课程版本的最佳方式

包含“丰富”课程版本的最佳方式

我正在学习当老师,我正在准备一份文件,这是一门针对学校学生的课程。经验丰富的老师会对我的工作和教学技能进行评估。我的课程必须为他们提供额外的信息,

  1. 我的学生将看不到
  2. 我的老师可以方便地与课程一起阅读,以了解有关我为什么/如何以某种方式组织课程的更多信息

起初,我考虑编写双页 PDF:所有正面都包含学生课程,所有反面都包含教学和额外注释。这样,如果我只打印两页,我就能得到我的课程的学生版本!打印所有页面的正面和反面将在每个“反面”页面上提供关于下一个正面内容的更丰富的视图。

但手动执行此操作非常麻烦:我需要手动完成课程页面(清除页面),然后添加教学笔记,然后再次清除页面以继续课程。如果我必须添加超过 1 页的额外内容,则必须重新考虑我的所有页面逻辑。

您能否推荐一些方法,让我可以专心编写课程,只包括额外的教学笔记,并能够“隐藏”它们,不让学生看到,同时为教师提供更“完整”的版本?手动分页符是唯一的选择吗?设想一些可以“放在一边”并启用/禁用的脚注格式?

非常感谢!

答案1

新版本(教师注释在单独页面上)

我使用newfile包将教师评语的文本(在环境中给出teachersonlyBox)写入单独的文件\jobname.teachers。其内容使用命令插入\instertteacherspages,并使用 before 和 after 将其放在单独的页面上\clearpage。也可以有多页教师笔记(见下面的示例)。当然,您也可以只使用\instertteacherspages末尾的一次将所有笔记一次性插入到末尾。

您还可以定义除盒子之外的其他东西,就像我在下面的旧版本中所做的那样。

代码

\documentclass{article}

\usepackage{lipsum}
\usepackage{environ}
\usepackage{tcolorbox}
\usepackage{newfile}
\newoutputstream{teachers}

\newtoggle{teachersversion}
\toggletrue{teachersversion} % comment out for students version

\iftoggle{teachersversion}{%
    \openoutputfile{\jobname.teachers}{teachers}
    \NewEnviron{teachersonlyBox}{
        \addtostream{teachers}{
            \begin{tcolorbox}[
                colframe = red!20,
                colback  = red!10,
                coltitle = black,
                title = {comment for teachers},
            ]
                \BODY
            \end{tcolorbox}
        }
    }
}{
    \NewEnviron{teachersonlyBox}{}
}

\newcommand{\instertteacherspages}{
    \iftoggle{teachersversion}{%
        \closeoutputstream{teachers}
        \clearpage
        \input{\jobname.teachers}
        \clearpage
        \openoutputfile{\jobname.teachers}{teachers}
    }{%
    }
}

\begin{document}

\lipsum[1-3]

\begin{teachersonlyBox}
    \lipsum[2]
\end{teachersonlyBox}

\lipsum[3-5]

\begin{teachersonlyBox}
    \lipsum[5]
\end{teachersonlyBox}

\instertteacherspages

\lipsum[6-7]

\begin{teachersonlyBox}
    \lipsum[8-11]
\end{teachersonlyBox}

\lipsum[8]

\begin{teachersonlyBox}
    \lipsum[9]
\end{teachersonlyBox}

\instertteacherspages

\end{document}

结果

老师版本:

在此处输入图片描述

学生版本:

在此处输入图片描述

旧版本(中间有老师的注释)

一个简单的方法是,为教师版本的文本块定义一个命令\teachersonly,然后根据您想要的版本更改定义。使用一些突出显示(如颜色或框)可能会很有用,因此我在示例中使用了红色文本。

我还添加了一个teachersonlyBox环境,用 围绕文本添加一个框。如有必要,tcolorbox我使用包来排除环境内容。comment

或者使用\teachersfootnote使脚注仅对教师可见。

代码

\documentclass{article}

\usepackage{tcolorbox}

\newtoggle{teachersversion}
\toggletrue{teachersversion} % comment out for students version

\iftoggle{teachersversion}{%
    \newcommand{\teachersonly}[1]{\textcolor{red}{#1}}
    \newenvironment{teachersonlyBox}{
        \begin{tcolorbox}[
            colframe = red!20,
            colback  = red!10,
            coltitle = black,
            title = {comment for teachers},
        ]
    }{
        \end{tcolorbox}
    }
    \newcommand{\teachersfootnote}[1]{%
        \textcolor{red}{\footnote{\textcolor{red}{teacher's note: #1}}}%
    }
}{%
    \usepackage{comment}
    \newcommand{\teachersonly}[1]{}
    \excludecomment{teachersonlyBox}
    \newcommand{\teachersfootnote}[1]{}
}

\begin{document}

visible for all

\teachersonly{comments for teachers}

visible for all\teachersfootnote{foo}

\teachersonly{comments for teachers}

\begin{teachersonlyBox}
    comments for teachers
    comments for teachers
\end{teachersonlyBox}

\end{document}

结果

教师版:

在此处输入图片描述

学生版本:

在此处输入图片描述

答案2

我实际上会推荐一种不同的解决方案。通常,.tex格式不是一种很好的源格式(因为没有 TeX 就无法正确解析它)。因此,如果您需要两个.pdfs,则需要两个.tex-files。我个人的建议如下:以不同的格式存储信息,例如.xml.dtx(参见下面的示例),然后使用它们生成两个不同的.tex-files,然后分别进行编译。

例如.dtx .dtx.tex可用于生成多个源文件的格式文件。您可以找到更多在这篇 TUG 文章中这里这里以及 Google 上的更多信息。

步骤1。创建一个名为enr.dtx

\documentclass{article}

\begin{document}

\textbf{Problem 1.} What is ${ 2+2 }$?

% \iffalse
%<*teacher>
% \fi
  \textbf{Answer.} 4.
  
% \iffalse
%</teacher>
% \fi
\textbf{Problem 2.} What is ${ 3 + 3 }$?

% \iffalse
%<*teacher>
% \fi
  \textbf{Answer.} 6.
  
% \iffalse
%</teacher>
% \fi
% \iffalse
%<*stud>
% \fi
  This is something only the students will see.
% \iffalse
%</stud>
% \fi
\end{document}

%\Finale

标签包围的所有内容<*teacher>...</teacher>只有老师才能看到。

第2步。创建文件enr.ins

\input l3docstrip

\keepsilent
\askforoverwritefalse

\generate{\file{\jobname-stud.tex}{\from{\jobname.dtx}{stud}}}

\generate{\file{\jobname-teacher.tex}{\from{\jobname.dtx}{teacher}}}

\endbatchfile

步骤3..ins像这样运行文件: pdftex enr.ins。这将产生两个文件:enr-teacher.tex

\documentclass{article}

\begin{document}

\textbf{Problem 1.} What is ${ 2+2 }$?

  \textbf{Answer.} 4.

\textbf{Problem 2.} What is ${ 3 + 3 }$?

  \textbf{Answer.} 6.

\end{document}

enr-stud.tex

\documentclass{article}

\begin{document}

\textbf{Problem 1.} What is ${ 2+2 }$?

\textbf{Problem 2.} What is ${ 3 + 3 }$?

  This is something only the students will see.
\end{document}

请注意,我从文件中省略了一些注释。

步骤4。.tex现在像平常一样编译这两个文件。

笔记。如果你是 TeX 新手,这可能有点复杂,但我真的建议使用与此类似的方法。你也可以使用.xml.html文件格式,然后使用例如名为的 Python 库来处理它们Beautiful Soup

相关内容