diff options
1 files changed, 0 insertions, 233 deletions
| -rw-r--r-- | awk-edits/Presentation.awk | 233 |
diff --git a/awk-edits/Presentation.awk b/awk-edits/Presentation.awk deleted file mode 100644 index 4d3826a..0000000 --- a/awk-edits/Presentation.awk +++ /dev/null @@ -1,233 +0,0 @@ -# .*(slides|teaching)/.*html -# -# == About == -# -# This is my way of making slide-based presentations. In short, it just groups -# Markdown formatting into rectangles and adds options for layout formatting. -# Inside each slide, normal element flow is respected. -# Each slide is the size of a landscape-oriented A4 sheet of paper. Light/dark -# mode settings are respected (of course). -# Currently, this is active only in pages under the "slides" folder. - -# -# == ftags == -# -# &&presentation Must appear before any other presentation ftags. -# It "loads" everything necessary for a presentation, that being -# the navigation bar and logic script (which also inserts the -# custom stylesheet). -# Can be only one per page. Also refer to -- Surroundings -- -# -# &&slide Everything following this tag is part of a slide. Each slide is -# presented in the order it appears in. -# &&/slide Ends (the last started) slide. -# -# &&clide Same as &&slide, but everything following is centered -# vertically. Uses flexbox. -# &&/slide Ends (the last started) clide. Not compatible with &&/slide! -# -# &&table Starts a table, where everything following it is formatted as a -# table cell in a row. -# &&ftable Same as &&table, but all colums have the same width. -# &&tarow Ends the last started row and begins a new row. -# Effectively everything following it is on a new row. -# &&/table Ends (the last started) (table row and) table or ftable. -# -# &&linebN Adds a line break (vertical spacing) of N (text) lines. -# Spacing is equivalent to N em. -# Available values for N: 1, 2, 3, 4, 5, 6, 7, 8, 9 -# -# &&fontSIZE Changes font size to SIZE, in pixels. Default size is 30px. -# Available values for SIZE: 18, 20, 22, 25, 27, 35 -# &&/font Text between &&fontSIZE and &&/font is sized accordingly -# -# &¢ered Center horizontally (only) text. -# &&/centered Text between &¢ered and &&/centered is aligned. -# -# &&fright Aligns following elements and text to the right. -# &&/fright Text between &&fright and &&/fright is aligned to the right -# -# &&cont Basic container with no properties. Useful if you need to group -# multiple elements into one table cell. -# &&/cont Ends (the last started) &&cont -# -# &&widthPER Sets the element's width to be PER percentage. Primarily made -# for images, since perfect scaling is impossible. -# Available values for PER: 5, 10, 15, 20, ..., 90, 95 -# &&/width Text between &&widthPER and &&/width is sized accordingly -# -# -- Surroundings -- -# -# As stated, there can only be one presentation per page. -# Everything that is around a presentation and it's slides is normally hidden -# during presenting mode and while printing. -# -# -- Placement/Flow -- -# -# All ftags can be placed on their own line, or in a line with other ftags. -# The only requirement is that such a line must start with an ftag, ftags in the -# middle of text aren't recognized. -# -# -- Regarding flex -- -# -# The older versions of the script, prior to commit -# 687ff3652e5695183ba1691e7d4b94470f8407b3 -# used extensively flexbox for element alignment. This was done with the hope that -# spacing out elements evenly and centering them would be very easy, which turned -# out to be false. -# -# Now, the only thing that uses flexbox is &&clide, and it only allows to center -# everything in the slide vertically. -# Vertical centerings for portions of elements can be done with &&linebN, which, -# though imperfect, does the job very well and should suffice. -# Evenly spacing out elements next to each other can be done with &&table and -# &&ftable. -# -# -- Example Usage -- -# -# Refer to src/talks/demo/index.md - -BEGIN { - # names is name of ftag, meaning if `names[i] = "examp"` the ftag will be &&examp - # ended specifies how the HTML tag is ended - # `ended[i] = 0` means no closing ftag (so no &&/examp) - # `ended[i] = 1` means &&/examp exists - # `ended[i] = 2` means self-closing, so no &&/examp, but &&examp includes the closing tag - # - # &&examp is usually replaced by `<div class="examp">` - # &&/examp is usually replaced by `</div>` - # in case ended[i] = 2, &&examp is replaced by `<div class="examp"></div>` - - # Main elements and exceptions to the normal replace format - names[ 1] = "presentation" - ended[ 1] = 0 - names[ 2] = "slide" - ended[ 2] = 1 - names[ 3] = "clide" - ended[ 3] = 1 - names[ 4] = "table" - ended[ 4] = 1 - names[ 5] = "ftable" - ended[ 5] = 0 - names[ 6] = "tarow" - ended[ 6] = 0 - names[ 7] = "/font" # all font ftags can be closed with a &&/font - ended[ 7] = 0 - - # Line breaks - names[ 8] = "lineb1" - ended[ 8] = 2 - names[ 9] = "lineb2" - ended[ 9] = 2 - names[10] = "lineb3" - ended[10] = 2 - names[11] = "lineb4" - ended[11] = 2 - names[12] = "lineb5" - ended[12] = 2 - names[13] = "lineb6" - ended[13] = 2 - names[14] = "lineb7" - ended[14] = 2 - names[15] = "lineb8" - ended[15] = 2 - names[16] = "lineb9" - ended[16] = 2 - - # Font sizes - names[17] = "font18" - ended[17] = 0 - names[18] = "font20" - ended[18] = 0 - names[19] = "font22" - ended[19] = 0 - names[20] = "font25" - ended[20] = 0 - names[21] = "font27" - ended[21] = 0 - names[22] = "font35" - ended[22] = 0 - - # Everything else - names[23] = "centered" - ended[23] = 1 - names[24] = "fright" - ended[24] = 1 - names[25] = "cont" - ended[25] = 1 - names[26] = "/width" - ended[26] = 0 - - nameslength = 26 # POSIX compatibility: length(names) isn't valid - - for (i = 95; i >= 5; i -= 5) { - nameslength++ - names[nameslength] = "width" i - ended[nameslength] = 0 - } - - pres = ORS \ -"<nav id=\"presentCont\">" ORS \ -" <span id=\"prevSlideBtn\" class=\"btn nodisplay\">\\←</span>" ORS \ -" <a id=\"slideIndex\" class=\"nodisplay\" href=\"#slide-0\">0</a>" ORS \ -" <span id=\"nextSlideBtn\" class=\"btn nodisplay\">\\→</span>" ORS \ -" <span id=\"articleBtn\" class=\"btn setting-btn\">Article view \\☲</span>" ORS \ -" <span id=\"presentBtn\" class=\"btn setting-btn\">Present \\⎚</span>" ORS \ -" <span id=\"printBtn\" class=\"btn setting-btn\">Print \\⎙</span>" ORS \ -" </nav><br><br>" ORS \ -" <script type=\"text/javascript\" src=\"/scripts/presentation.js\" crossorigin=\"anonymous\"></script>" - - for (i = 1; i <= nameslength; i++) { - pat[i] = "&&" names[i] - rep[i] = "<div class=\"" names[i] "\">" - - if (ended[i] == 1) { - cpat[i] = "&&/" names[i] - crep[i] = "</div>" - } - else if (ended[i] == 2) { - rep[i] = rep[i] "</div>" - } - } - - rep[ 1] = pres - rep[ 3] = "<div class=\"slide clide\"><div></div><div>" # flex-col + flex:1 + <div> - crep[3] = "</div><div></div></div>" # </div> + flex:1 + /flex-col - rep[ 4] = "<div class=\"layout-table\"><div class=\"layout-row\">" # <table><tr> (layout-row > * is td) - crep[4] = "</div></div>" # </tr><table> - rep[ 5] = "<div class=\"layout-table fixed-layout\"><div class=\"layout-row\">" # <table><tr> (layout-row > * is td) - rep[ 6] = "</div><div class=\"layout-row\">" # </tr><tr> - rep[ 7] = "</div>" # &&/font - rep[26] = "</div>" # &&/width - - presInsideCode = 0 - slideIndex = 0 -} - -function presentationSubstitute(ind) { - gsub(/(<p>|<\/p>)/, "") - if ((ind == 2 || ind == 3) && index($0, pat[ind]) != 0) { # &&slide or &&clide - gsub(pat[ind], "<div id=\"slide-" slideIndex "\"" substr(rep[ind], 5)) - slideIndex++ - } - else { - gsub(pat[ind], rep[ind]) - } - if (ended[ind] == 1) - gsub(cpat[ind], crep[ind]) -} - -/<code>/ { - presInsideCode = 1 -} - -/<\/code>/ { - presInsideCode = 0 -} - -presInsideCode == 0 && /^[ \t]*(<p>)?&&/ { - for (i = 1; i <= nameslength; i++) { - if (index($0, names[i]) != 0) - presentationSubstitute(i) - } -} |