(问题灵感来自如何在 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}