From 7d92414d5d4c881404bdecd4042afdabd414b996 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sat, 27 Nov 2021 15:24:40 -0500 Subject: Update --- ...l--babel-for-academics--asilata-bapat--main.vtt | 802 +++++++++++++++++++++ 1 file changed, 802 insertions(+) create mode 100644 2021/captions/emacsconf-2021-babel--babel-for-academics--asilata-bapat--main.vtt (limited to '2021/captions') diff --git a/2021/captions/emacsconf-2021-babel--babel-for-academics--asilata-bapat--main.vtt b/2021/captions/emacsconf-2021-babel--babel-for-academics--asilata-bapat--main.vtt new file mode 100644 index 00000000..5b4a23c5 --- /dev/null +++ b/2021/captions/emacsconf-2021-babel--babel-for-academics--asilata-bapat--main.vtt @@ -0,0 +1,802 @@ +WEBVTT + +00:00.799 --> 00:02.560 +Hi! My name is Asilata Bapat, + +00:02.560 --> 00:04.960 +and I'm talking about Babel for academics. + +00:04.960 --> 00:06.879 +So, I'm an academic at a university, + +00:06.879 --> 00:09.040 +and I use Emacs, Org mode, and Babel + +00:09.040 --> 00:11.280 +for a whole bunch of work related tasks. + +00:11.280 --> 00:12.559 +And there are many other tools + +00:12.559 --> 00:14.240 +that one could use to help with + +00:14.240 --> 00:15.200 +this workflow. + +00:15.200 --> 00:16.597 +I won't be going through all of these, + +00:16.597 --> 00:18.160 +and the ones that I've listed are just + +00:18.160 --> 00:20.240 +a few of the many that are available. + +00:20.240 --> 00:22.000 +Today, I'll really be talking about + +00:22.000 --> 00:24.080 +my teaching workflow. + +00:24.080 --> 00:27.840 +Let's just dive right in to a demo. + +00:27.840 --> 00:29.243 +So, the first file that I want to + +00:29.243 --> 00:31.599 +show you is the notes and admin file. + +00:31.599 --> 00:33.040 +From this file, I'll generate + +00:33.040 --> 00:35.440 +a nice-looking PDF document of notes, + +00:35.440 --> 00:36.963 +and I'll also keep track of some + +00:36.963 --> 00:38.399 +course admin. + +00:38.399 --> 00:43.200 +So, the file that I have here is this one, + +00:43.200 --> 00:44.719 +and all of the files that I'm going to + +00:44.719 --> 00:46.320 +show you today are taken from a course + +00:46.320 --> 00:48.096 +that I'm teaching at the moment + +00:48.096 --> 00:49.680 +this semester. + +00:49.680 --> 00:53.147 +What I want to do is export this + +00:53.147 --> 00:55.520 +entire document to LaTeX + +00:55.520 --> 00:56.320 +because this is where + +00:56.320 --> 00:58.800 +I'll be writing my course notes. + +00:58.800 --> 01:00.480 +But before I do that, + +01:00.480 --> 01:03.199 +I have some setup that I want to do, + +01:03.199 --> 01:05.199 +and you'll notice some of these headings + +01:05.199 --> 01:06.509 +are tagged as noexport, + +01:06.509 --> 01:08.400 +and they won't be exported. + +01:08.400 --> 01:11.680 +The startup setting I'll skip, + +01:11.680 --> 01:13.499 +and then the main thing here + +01:13.499 --> 01:14.880 +is the LaTeX setup. + +01:14.880 --> 01:18.560 +So, I'm using these #+ option lines, + +01:18.560 --> 01:21.360 +and I've told Org that + +01:21.360 --> 01:23.280 +I want to use an unusual LaTeX class, + +01:23.280 --> 01:24.880 +I'll have to tell Org about it later, + +01:24.880 --> 01:26.240 +I'll do that in a moment, + +01:26.240 --> 01:27.001 +and I have some + +01:27.001 --> 01:29.600 +LaTeX header lines, and so on. + +01:29.600 --> 01:31.360 +And then I have some export settings, + +01:31.360 --> 01:32.941 +the first export setting is + +01:32.941 --> 01:35.119 +to export into a different directory, + +01:35.119 --> 01:36.799 +not just at the same level + +01:36.799 --> 01:38.560 +because I want everything to go into + +01:38.560 --> 01:39.716 +the artifacts directory, + +01:39.716 --> 01:41.360 +and then I can ignore that artifacts + +01:41.360 --> 01:44.399 +directory using Git. + +01:44.399 --> 01:45.600 +This is the first + +01:45.600 --> 01:47.280 +source code block that we see, + +01:47.280 --> 01:49.759 +which is the Babel side of things, + +01:49.759 --> 01:52.079 +and I've called it export-setup. + +01:52.079 --> 01:55.759 +The way I write it is, #+begin_src, + +01:55.759 --> 01:56.965 +the language that I want to use, + +01:56.965 --> 01:58.159 +which is emacs-lisp, + +01:58.159 --> 01:59.600 +and maybe some options, + +01:59.600 --> 02:01.119 +and this is collapsed at the moment, + +02:01.119 --> 02:03.600 +if I expand it, you'll see + +02:03.600 --> 02:05.155 +inside here, this is really + +02:05.155 --> 02:07.600 +just Elisp, Emacs Lisp. + +02:07.600 --> 02:09.592 +So, the first thing I've done is, + +02:09.592 --> 02:12.440 +I've added this LaTeX class + +02:12.440 --> 02:15.360 +to the list of known LaTeX classes. + +02:15.360 --> 02:17.433 +And the second thing I've done is, + +02:17.433 --> 02:19.599 +I have locally set the value of + +02:19.599 --> 02:21.112 +org-latex-pdf-process, + +02:21.112 --> 02:24.720 +which is the compiler, to something…, + +02:24.720 --> 02:27.200 +this command is complicated I guess, + +02:27.200 --> 02:29.440 +but what the main thing it's doing + +02:29.440 --> 02:32.160 +is that it's moving the generated output…, + +02:32.160 --> 02:34.160 +sorry, the generated image files + +02:34.160 --> 02:35.169 +to the output directory, + +02:35.169 --> 02:37.519 +so that everything can remain + +02:37.519 --> 02:39.680 +inside of this artifacts directory, + +02:39.680 --> 02:41.519 +and maybe it's doing some other things. + +02:41.519 --> 02:43.680 +And then there are some other + +02:43.680 --> 02:47.120 +setup options that I'll skip. + +02:47.120 --> 02:49.360 +So, this is a source code block, + +02:49.360 --> 02:50.640 +inside of the source code block + +02:50.640 --> 02:52.319 +everything is basically Emacs Lisp. + +02:52.319 --> 02:54.640 +How do I evaluate this? + +02:54.640 --> 02:56.319 +I just press Control c Control c (C-c C-c), + +02:56.319 --> 02:57.920 +and it evaluates everything, + +02:57.920 --> 03:00.319 +but if I want to automate the evaluation, + +03:00.319 --> 03:02.080 +there's one other thing I can do. + +03:02.080 --> 03:04.658 +So, let me jump down to + +03:04.658 --> 03:06.720 +the local variables section. + +03:06.720 --> 03:09.740 +In this local variable section + +03:09.740 --> 03:11.680 +I have an eval block, + +03:11.680 --> 03:14.681 +so, I've added a certain hook to the + +03:14.681 --> 03:16.879 +org-export-before-processing-hook, + +03:16.879 --> 03:18.319 +and that just resolves + +03:18.319 --> 03:19.519 +this reference from this file. + +03:19.519 --> 03:23.040 +It looks for a code block titled + +03:23.040 --> 03:24.859 +export-setup, and it runs it + +03:24.859 --> 03:26.000 +right before exporting, + +03:26.000 --> 03:29.200 +and this is all local to this buffer. + +03:29.200 --> 03:30.799 +So, before I export, + +03:30.799 --> 03:34.000 +it'll then read the correct options. + +03:34.000 --> 03:37.519 +And after this setup, + +03:37.519 --> 03:39.760 +I have the course plan, + +03:39.760 --> 03:41.599 +which is just what goes into my agenda + +03:41.599 --> 03:43.360 +as to-dos, I'll skip that. + +03:43.360 --> 03:45.519 +And after that, I have the actual notes, + +03:45.519 --> 03:48.640 +and what they actually look like…, + +03:48.640 --> 03:54.400 +so, this is what they actually look like, + +03:54.400 --> 03:57.040 +nicely LaTeXed with diagrams and so on, + +03:57.040 --> 03:57.920 +everything generated + +03:57.920 --> 04:00.720 +from that single Org file. + +04:00.720 --> 04:04.480 +I'll say more about diagrams later. + +04:04.480 --> 04:06.080 +I also have to write assignments + +04:06.080 --> 04:07.260 +and assignment solutions, + +04:07.260 --> 04:10.239 +so let me jump to that. + +04:10.239 --> 04:11.840 +Again, this is a very similar file, + +04:11.840 --> 04:14.080 +but I want to now export + +04:14.080 --> 04:15.760 +different headings to different files. + +04:15.760 --> 04:16.639 +This is not going to be + +04:16.639 --> 04:18.320 +exported all at once. + +04:18.320 --> 04:19.759 +So, again I have some setup, + +04:19.759 --> 04:22.400 +some general setup that I'll skip, + +04:22.400 --> 04:25.120 +export setup just like before, + +04:25.120 --> 04:29.280 +code setup for Python, really, + +04:29.280 --> 04:31.280 +I have a various…, a bunch of different + +04:31.280 --> 04:33.199 +languages here, so Shell and Python, + +04:33.199 --> 04:35.967 +and some helper functions. + +04:36.088 --> 04:38.160 +So, let me jump to this one called + +04:38.160 --> 04:39.756 +togglesolutions, this is again + +04:39.756 --> 04:41.919 +an Emacs Lisp code block. + +04:41.919 --> 04:43.600 +What this does is, + +04:43.600 --> 04:48.632 +it tells LaTeX to either toggle the + +04:48.632 --> 04:50.336 +display of solutions on, or off + +04:50.336 --> 04:53.096 +based on what the tag is + +04:53.096 --> 04:54.240 +for that particular assignment. + +04:54.240 --> 04:57.520 +So, whether if the assignment + +04:57.520 --> 04:58.800 +is tagged as solved, + +04:58.800 --> 05:00.240 +then the solution should be displayed, + +05:00.240 --> 05:03.280 +otherwise they shouldn't be. + +05:03.280 --> 05:05.447 +And here most of the assignments + +05:05.447 --> 05:07.120 +are tagged as solved, + +05:07.120 --> 05:08.880 +so in this case if I export this, + +05:08.880 --> 05:11.840 +the solutions will be displayed. + +05:11.840 --> 05:20.800 +Let's look at that. + +05:20.800 --> 05:23.919 +So, I see the solutions blocks, + +05:23.919 --> 05:27.036 +and this is because it's calling + +05:27.036 --> 05:29.919 +the toggle solutions piece of code. + +05:29.919 --> 05:32.240 +And the properties, + +05:32.240 --> 05:33.840 +if I expand this properties drawer, + +05:33.840 --> 05:39.280 +you see this output file name + +05:39.280 --> 05:41.440 +has a homework one dash solved, + +05:41.440 --> 05:43.360 +so it has a solved suffix, + +05:43.360 --> 05:45.912 +and this is related to the fact that + +05:45.912 --> 05:47.680 +I have a solved tag up here. + +05:47.680 --> 05:48.960 +So, let's see what happens + +05:48.960 --> 05:51.199 +if I delete the solved tag, + +05:51.199 --> 05:52.639 +so nothing's happened yet, + +05:52.639 --> 05:54.000 +but if I save the file, + +05:54.000 --> 05:55.919 +then suddenly this homework one + +05:55.919 --> 05:58.240 +dash solved becomes homework one, + +05:58.240 --> 06:00.080 +and this is desired behavior, + +06:00.080 --> 06:02.084 +this is what I want because + +06:02.084 --> 06:03.222 +I want to keep the solved + +06:03.222 --> 06:04.497 +and unsolved files separate. + +06:04.497 --> 06:07.120 +So, once again, if I put in + +06:07.120 --> 06:09.440 +the solved tag, and if I save, + +06:09.440 --> 06:11.440 +I get back the different file name. + +06:11.440 --> 06:12.720 +And how did I achieve this? + +06:12.720 --> 06:16.479 +This is again back in the setup section, + +06:16.479 --> 06:19.280 +it's the process-export-filenames block. + +06:19.280 --> 06:21.120 +It's some big piece of Elisp + +06:21.120 --> 06:22.349 +that I won't go through, + +06:22.349 --> 06:24.240 +but basically it's mapping over + +06:24.240 --> 06:26.720 +Org entries, and it's either + +06:26.720 --> 06:30.080 +adding or removing this solved suffix + +06:30.080 --> 06:34.560 +based on what tag it sees. + +06:34.560 --> 06:36.781 +Okay, when does this + +06:36.781 --> 06:37.919 +code block get evaluated? + +06:37.919 --> 06:39.840 +Well, I want it to be evaluated + +06:39.840 --> 06:41.039 +right before I save + +06:41.039 --> 06:43.199 +because I change something, + +06:43.199 --> 06:45.840 +I save, and I want the properties + +06:45.840 --> 06:49.199 +to be get updated accordingly. + +06:49.199 --> 06:51.364 +If I go down to the + +06:51.364 --> 06:52.639 +local variables section again. + +06:52.639 --> 06:55.840 +Again, I have a local variables + +06:55.840 --> 06:56.800 +section here, + +06:56.800 --> 06:58.479 +and I'm evaluating this Elisp, + +06:58.479 --> 07:01.199 +which is setting the before-save-hook + +07:01.199 --> 07:04.240 +to resolve the process-export-filenames + +07:04.240 --> 07:05.716 +function, and so that's what + +07:05.716 --> 07:09.199 +gives me that functionality. + +07:09.199 --> 07:12.720 +And finally, + +07:12.720 --> 07:16.240 +I have some skeletons, which are…. + +07:16.240 --> 07:19.360 +Emacs has this skeleton language, + +07:19.360 --> 07:22.240 +which is a rudimentary templating language. + +07:22.240 --> 07:24.220 +So, I've defined some templates + +07:24.220 --> 07:26.319 +for my assignment and worksheet + +07:26.319 --> 07:29.440 +in this little Emacs Lisp block, + +07:29.440 --> 07:31.120 +which I think I usually just evaluate + +07:31.120 --> 07:33.280 +manually, and then if I just call it, + +07:33.280 --> 07:35.199 +I get a nice-looking skeleton + +07:35.199 --> 07:37.360 +that gives me this assignment. + +07:37.360 --> 07:40.080 +One thing I want to show you + +07:40.080 --> 07:43.199 +in these assignments, or I mean, + +07:43.199 --> 07:44.720 +in this file in particular, + +07:44.720 --> 07:46.560 +are these dot source code blocks. + +07:46.560 --> 07:49.840 +So, I've had to type in or draw in + +07:49.840 --> 07:52.000 +some graphs in this assignment, + +07:52.000 --> 07:54.720 +and I can do that right from Org. + +07:54.720 --> 07:56.400 +So, this is some piece of code + +07:56.400 --> 07:59.199 +that's creating a file, + +07:59.199 --> 08:00.879 +which has this name, + +08:00.879 --> 08:05.840 +and if I evaluate this block, + +08:05.840 --> 08:10.720 +I see a results drawer with this file. + +08:10.720 --> 08:12.711 +And this is a PNG file, + +08:12.711 --> 08:13.759 +which now gets embedded + +08:13.759 --> 08:15.680 +into my LaTeX document. + +08:15.680 --> 08:16.639 +So, this is nice, + +08:16.639 --> 08:18.720 +I can actually delete this from here, + +08:18.720 --> 08:20.479 +and when I export, + +08:20.479 --> 08:23.919 +the file will get attached automatically. + +08:23.919 --> 08:26.639 +And similarly, + +08:26.639 --> 08:28.800 +in some other assignments here, + +08:28.800 --> 08:30.639 +I have some Python source, + +08:30.639 --> 08:33.284 +so I've had to type in + +08:33.284 --> 08:34.527 +some complicated matrices, + +08:34.527 --> 08:36.128 +and some complicated matrix products, + +08:36.128 --> 08:36.640 +and so on, + +08:36.640 --> 08:38.000 +which I didn't want to do by hand, + +08:38.000 --> 08:39.760 +so that I didn't introduce errors, + +08:39.760 --> 08:41.599 +so I've written some Python code. + +08:41.599 --> 08:44.240 +If I Control c Control c (C-c C-c) + +08:44.240 --> 08:45.920 +on this block, you'll notice, + +08:45.920 --> 08:47.120 +it's in the session matrix, + +08:47.120 --> 08:49.200 +so it's using the previous, + +08:49.200 --> 08:52.399 +the same kind of session. + +08:52.399 --> 08:55.440 +And you'll see that the results, + +08:55.440 --> 08:57.760 +because of the way I chose to format them, + +08:57.760 --> 08:59.920 +look like a nice drawer with + +08:59.920 --> 09:01.600 +nicely formatted LaTeX. + +09:01.600 --> 09:03.920 +Once again these results + +09:03.920 --> 09:05.519 +I can cut from the file, + +09:05.519 --> 09:07.600 +and the file will get exported…, + +09:07.600 --> 09:09.200 +when the file gets exported, + +09:09.200 --> 09:10.480 +these source code blocks will get + +09:10.480 --> 09:12.000 +evaluated, and the answer + +09:12.000 --> 09:19.200 +will show up in the file. + +09:19.200 --> 09:20.097 +And finally, + +09:20.097 --> 09:21.363 +the last thing I want to show you + +09:21.363 --> 09:23.531 +very briefly is the web page + +09:23.531 --> 09:26.720 +for this course. + +09:26.720 --> 09:28.399 +The only thing I want to show you here + +09:28.399 --> 09:30.399 +is that I have a Python source code block, + +09:30.399 --> 09:33.279 +which pulls in my handwritten course notes, + +09:33.279 --> 09:36.399 +and makes them into a nice-looking list + +09:36.399 --> 09:38.880 +with a nice-looking order, + +09:38.880 --> 09:41.680 +and then just exports as HTML. + +09:41.680 --> 09:44.600 +So, this is what + +09:44.600 --> 09:46.080 +the web page looks like, + +09:46.080 --> 09:48.880 +and you can see it at this URL. + +09:48.880 --> 09:49.892 +If you go click on + +09:49.892 --> 09:52.800 +the 2021 link at this URL. + +09:52.800 --> 09:54.880 +So, that's all that I wanted to say. + +09:54.880 --> 09:58.360 +Thank you very much! -- cgit v1.2.3