如何在 LaTeX 中创建分步带注释的编程教程?

如何在 LaTeX 中创建分步带注释的编程教程?

(问题灵感来自如何在 LaTeX 中创建填字游戏?并提供解决方案)

如何以最舒适的方式在 LaTeX 中制作带注释的分步编程教程(我使用 pdfLaTeX,但我也接受 LuaTeX 解决方案)?最好从带注释的源代码开始?或者以其他方式,比逐张幻灯片打字更省力。

我的意思是以演示形式进行的问答教程(我不知道这是否beamer是演示的唯一解决方案,但我听说它很受欢迎)。

以下是此类演示的示例:

*-------------------------------------------*
|      How to implement Main function?      |
|                                           |
|                                           |
| (1)?                                      |
|                                           |
|                                           |
|                                           |
|                                           |
|    (2)?                                   |
| (1)                                       |
|                                           |
| (1) ... ?                                 |
| (2) ... ?                                 |
*-------------------------------------------*

*-------------------------------------------*
|              Main function                |
|                                           |
|                                           |
| int main(){ (1)                           |
|                                           |
|                                           |
|                                           |
|                                           |
|    return 0; (2)                          |
| } (1)                                     |
|                                           |
| (1) ...                                   |
| (2) ...                                   |
*-------------------------------------------*

*-------------------------------------------*
|        How to perform Computation?        |
|                                           |
|                                           |
| int main(){                               |
|    (3)?                                   |
|                                           |
|    (4)?                                   |
|                                           |
|    return 0;                              |
| }                                         |
|                                           |
| (3) ...?                                  |
| (4) ...?                                  |
*-------------------------------------------*

*-------------------------------------------*
|              Computation                  |
|                                           |
|                                           |
| int main(){                               |
|    long a,b,c; (3)                        |
|                                           |
|    c = a * b; (4)                         |
|                                           |
|    return 0;                              |
| }                                         |
|                                           |
| (3) ...                                   |
| (4) ...                                   |
*-------------------------------------------*

*-------------------------------------------*
|            Input & Output  ?              |
|                                           |
| (5) ?                                     |
| int main(){                               |
|    long a,b,c;                            |
|    (6) ?                                  |
|    c = a * b;                             |
|    (6) ?                                  |
|    return 0;                              |
| }                                         |
|                                           |
| (5) ...?                                  |
| (6) ...?                                  |
*-------------------------------------------*

*-------------------------------------------*
|            Input & Output                 |
|                                           |
| #include <cstdio> (5)                     |
| int main(){                               |
|    long a,b,c;                            |
|    scanf("%ld%ld", &a, &b); (6)           |
|    c = a * b;                             |
|    printf("%ld\n", c); (6)                |
|    return 0;                              |
| }                                         |
|                                           |
| (5) ...                                   |
| (6) ...                                   |
*-------------------------------------------*

答案1

beamer可以按照下列思路构建一个交互式版本:

\documentclass{beamer}

\begin{document}

\begin{frame}[fragile]%
\begin{semiverbatim}
\frametitle{Input \&\ Output}
\#include <cstdio>
\only<1>{(1)?}\only<2->{int main() \{}
   \only<3>{(3)?}\only<4->{long a,b,c;}
   \only<4>{(4)?}\only<5->{std::scanf("\%ld\%ld", \&a, \&b);}
   \only<5>{(5)?}\only<6->{c = a * b;}
   \only<6>{(6)?}\only<7->{std::printf("\%ld\textbackslash n", c);}
   \only<2>{(2)?}\only<3->{return 0;}
 \}
\end{semiverbatim}
\end{frame}

\end{document}

在此处输入图片描述

相关内容