Skip to content

Instantly share code, notes, and snippets.

@dk949
Created May 23, 2024 18:17
Show Gist options
  • Select an option

  • Save dk949/b867b55e3665e31f704b2446a0254638 to your computer and use it in GitHub Desktop.

Select an option

Save dk949/b867b55e3665e31f704b2446a0254638 to your computer and use it in GitHub Desktop.
Extract speaker notes from a pandoc markdown document
# Extract speaker notes (with related headings) from a pandoc markdown document
# Produces valid markdown which can be compiled with pandoc
# Headings are also separated by hrules
# Example usage:
# awk -f get_notes.awk your_source.md | pandoc -f markdown -o your_notes.pdf
## Find the closing div for the notes
div_level && ($0 ~ ("^\\s{0,3}" div_level "\\s*$")) { in_notes = 0;}
## If currectly in notes div, print the line
in_notes { print; }
## Find start of the notes div and save the level (number of colons)
match($0, /^\s{0,3}(:{3,})\s+notes\s*$/, cap) {
in_notes = 1;
div_level = cap[1];
}
## Print all headings (if in notes div, the heading will have been printed)
## For all headings other than the first one, print a horizontal rule
!in_notes && $0 ~ /^\s{0,3}#{1,6}\s+[^\s].*$/ {
if (not_first) print "\n------------\n";
not_first = 1
gsub(/^\s+/, "", $0)
print
print "\n"
}
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
# binary, for any purpose, commercial or non-commercial, and by any
# means.
#
# In jurisdictions that recognize copyright laws, the author or authors
# of this software dedicate any and all copyright interest in the
# software to the public domain. We make this dedication for the benefit
# of the public at large and to the detriment of our heirs and
# successors. We intend this dedication to be an overt act of
# relinquishment in perpetuity of all present and future rights to this
# software under copyright law.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# For more information, please refer to <https://unlicense.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment