From ab2bd4cffa9c463136d6684de261c889da3de560 Mon Sep 17 00:00:00 2001 From: Dibri Nsofor Date: Sun, 4 Aug 2024 22:51:14 -0700 Subject: [PATCH 1/5] report for any type Signed-off-by: Dibri Nsofor --- any24/ACM-Reference-Format.bst | 3081 ++++++++++++++++ any24/Makefile | 8 + any24/README.md | 19 + ...8EC651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 7 + ...1C7378BDBA577FD135D92EEF2DC5DC6546C.pygtex | 7 + ...579651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 11 + ...7EA651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 10 + ...7A4651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 11 + ...7DF651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 6 + ...A4E651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 6 + ...052651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 3 + ...7EB378BDBA577FD135D92EEF2DC5DC6546C.pygtex | 9 + ...D17651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 3 + ...303651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 11 + ...20C651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 8 + ...2D4651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 8 + ...301651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 4 + ...97C378BDBA577FD135D92EEF2DC5DC6546C.pygtex | 8 + ...DDF651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 9 + ...38A651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 3 + ...1C9651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 13 + ...9CC651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 7 + ...A8C651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 3 + ...995651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 6 + ...DE6651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 7 + ...A04651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 14 + ...8EC651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 13 + ...624651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 3 + ...1C0651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 11 + ...F92651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 6 + ...359651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 14 + ...6C1651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 4 + ...0C2651AEA050AD4F7CB11B80E65FF8C849D.pygtex | 16 + any24/_minted-paper/colorful.pygstyle | 102 + any24/acmart.cls | 3219 +++++++++++++++++ any24/bib.bib | 768 ++++ any24/dibri-sample-notes.txt | 0 any24/paper.pdf | Bin 0 -> 900892 bytes any24/paper.synctex.gz | Bin 0 -> 58460 bytes any24/paper.tex | 359 ++ any24/src/images/telemetry.pdf | Bin 0 -> 470183 bytes any24/src/images/telemetry.svg | 1 + any24/svg-inkscape/telemetry_svg-tex.pdf | Bin 0 -> 2045618 bytes any24/svg-inkscape/telemetry_svg-tex.pdf_tex | 58 + 44 files changed, 7856 insertions(+) create mode 100644 any24/ACM-Reference-Format.bst create mode 100644 any24/Makefile create mode 100644 any24/README.md create mode 100644 any24/_minted-paper/007F73A2DCCFCF999CB2FE1A24B038EC651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/07002287823B3FA153F00E2EB253A1C7378BDBA577FD135D92EEF2DC5DC6546C.pygtex create mode 100644 any24/_minted-paper/09C4B8FFBADE3C4EB58B86656FF29579651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/19D99B720C6EB70359962010589197EA651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/1B339EE5DCF0788E5E7B87E73E9577A4651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/2647181C4DB5B0D52C23944F2DD037DF651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/368EE8E8CB23C53BD8E47E8BD6C0DA4E651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/506E2A1FBDF40CEF0738ECEB81231052651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/50EA346C5F0D765EACBA8F0D1A6CC7EB378BDBA577FD135D92EEF2DC5DC6546C.pygtex create mode 100644 any24/_minted-paper/5705028345A0514A8047B5835A838D17651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/5C0189A0E040C697F3712A0F81240303651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/5D793CD300A912D6CE6675586AA9520C651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/67E249F7E2940313B0B8FDB045BDD2D4651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/6CEE1CA0F271C989CCE5253B0A726301651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/6F936CED8B9336E1328140F99554E97C378BDBA577FD135D92EEF2DC5DC6546C.pygtex create mode 100644 any24/_minted-paper/77C1B46741E7FC1F1B32CF22762A4DDF651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/8509B9F3331252E6B79B1E882E1DF38A651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/870E54712DD052399D340BE02DAE91C9651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/9971CA71F6035A26ABAC89D8FA9199CC651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/9CBFC984A1B53D775519CAE7A2ED9A8C651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/A42E72045C2735D0616126B7A6FD3995651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/ACF988212E180BFB2008B34278E94DE6651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/C04750934797102FE6B5738D57921A04651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/C3F1A2BF069B513247D6BB089161F8EC651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/C496D8445969FD3B15C92A07A3DBB624651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/C57EC5DD8216367326AFBEBB3971D1C0651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/EBE9F4F545739AEF49E3039A7B0B0F92651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/F425539BF9625EEC98CE49D9D5D75359651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/FA3B78669E00577D77CD3613AE8856C1651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/FB338F741220E4994548DCDB857960C2651AEA050AD4F7CB11B80E65FF8C849D.pygtex create mode 100644 any24/_minted-paper/colorful.pygstyle create mode 100644 any24/acmart.cls create mode 100644 any24/bib.bib create mode 100644 any24/dibri-sample-notes.txt create mode 100644 any24/paper.pdf create mode 100644 any24/paper.synctex.gz create mode 100644 any24/paper.tex create mode 100644 any24/src/images/telemetry.pdf create mode 100644 any24/src/images/telemetry.svg create mode 100644 any24/svg-inkscape/telemetry_svg-tex.pdf create mode 100644 any24/svg-inkscape/telemetry_svg-tex.pdf_tex diff --git a/any24/ACM-Reference-Format.bst b/any24/ACM-Reference-Format.bst new file mode 100644 index 0000000..7984639 --- /dev/null +++ b/any24/ACM-Reference-Format.bst @@ -0,0 +1,3081 @@ +%%% -*-BibTeX-*- +%%% ==================================================================== +%%% @BibTeX-style-file{ +%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray", +%%% version = "2.1", +%%% acmart-version = "1.79", +%%% date = "14 June 2017", +%%% filename = "ACM-Reference-Format.bst", +%%% email = "borisv@lk.net, boris@varphi.com", +%%% codetable = "ISO/ASCII", +%%% keywords = "ACM Transactions bibliography style; BibTeX", +%%% license = "public domain", +%%% supported = "yes", +%%% abstract = "", +%%% } +%%% ==================================================================== + +%%% Revision history: see source in git + +ENTRY + { address + advisor + archiveprefix + author + booktitle + chapter + city + date + edition + editor + eprint + eprinttype + eprintclass + howpublished + institution + journal + key + location + month + note + number + organization + pages + primaryclass + publisher + school + series + title + type + volume + year + % New keys recognized + issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra + articleno + eid + day % UTAH: needed for newspapers, weeklies, bi-weeklies + doi % UTAH + url % UTAH + bookpages % UTAH + numpages + lastaccessed % UTAH: used only for @Misc{...} + coden % UTAH + isbn % UTAH + isbn-13 % UTAH + issn % UTAH + lccn % UTAH + distinctURL % whether to print url if doi is present + } + {} + { label.year extra.label sort.year sort.label basic.label.year} + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib + +INTEGERS { nameptr namesleft numnames } + +INTEGERS { multiresult } + +INTEGERS { len } + +INTEGERS { last.extra.num } + +STRINGS { s t t.org u } + +STRINGS { last.label next.extra } + +STRINGS { p1 p2 p3 page.count } + + +FUNCTION { not } +{ + { #0 } + { #1 } + if$ +} + +FUNCTION { and } +{ + 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION { or } +{ + { pop$ #1 } + 'skip$ + if$ +} + + +FUNCTION { dump.stack.1 } +{ + duplicate$ "STACK[top] = [" swap$ * "]" * warning$ +} + +FUNCTION { dump.stack.2 } +{ + duplicate$ "STACK[top ] = [" swap$ * "]" * warning$ + swap$ + duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$ + swap$ +} + +FUNCTION { empty.or.unknown } +{ + %% Examine the top stack entry, and push 1 if it is empty, or + %% consists only of whitespace, or is a string beginning with two + %% queries (??), and otherwise, push 0. + %% + %% This function provides a replacement for empty$, with the + %% convenient feature that unknown values marked by two leading + %% queries are treated the same as missing values, and thus, do not + %% appear in the output .bbl file, and yet, their presence in .bib + %% file(s) serves to mark values which are temporarily missing, but + %% are expected to be filled in eventually once more data is + %% obtained. The TeX User Group and BibNet bibliography archives + %% make extensive use of this practice. + %% + %% An empty string cannot serve the same purpose, because just as in + %% statistics data processing, an unknown value is not the same as an + %% empty value. + %% + %% At entry: stack = ... top:[string] + %% At exit: stack = ... top:[0 or 1] + + duplicate$ empty$ + { pop$ #1 } + { #1 #2 substring$ "??" = } + if$ +} + +FUNCTION { empty.or.zero } +{ + %% Examine the top entry and push 1 if it is empty, or is zero + duplicate$ empty$ + { pop$ #1 } + { "0" = } + if$ +} + + +FUNCTION { writeln } +{ + %% In BibTeX style files, the sequences + %% + %% ... "one" "two" output + %% ... "one" "two" output.xxx + %% + %% ship "one" to the output file, possibly following by punctuation, + %% leaving the stack with + %% + %% ... "two" + %% + %% There is thus a one-string lag in output processing that must be + %% carefully handled to avoid duplicating a string in the output + %% file. Unless otherwise noted, all output.xxx functions leave + %% just one new string on the stack, and that model should be born + %% in mind when reading or writing function code. + %% + %% BibTeX's asynchronous buffering of output from strings from the + %% stack is confusing because newline$ bypasses the buffer. It + %% would have been so much easier for newline to be a character + %% rather than a state of the output-in-progress. + %% + %% The documentation in btxhak.dvi is WRONG: it says + %% + %% newline$ Writes onto the bbl file what's accumulated in the + %% output buffer. It writes a blank line if and only + %% if the output buffer is empty. Since write$ does + %% reasonable line breaking, you should use this + %% function only when you want a blank line or an + %% explicit line break. + %% + %% write$ Pops the top (string) literal and writes it on the + %% output buffer (which will result in stuff being + %% written onto the bbl file when the buffer fills + %% up). + %% + %% Examination of the BibTeX source code shows that write$ does + %% indeed behave as claimed, but newline$ sends a newline character + %% directly to the output file, leaving the stack unchanged. The + %% first line "Writes onto ... buffer." is therefore wrong. + %% + %% The original BibTeX style files almost always use "write$ newline$" + %% in that order, so it makes sense to hide that pair in a private + %% function like this one, named after a statement in Pascal, + %% the programming language embedded in the BibTeX Web program. + + write$ % output top-of-stack string + newline$ % immediate write of newline (not via stack) +} + +FUNCTION { init.state.consts } +{ + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +FUNCTION { output.nonnull } +{ % Stack in: ... R S T Stack out: ... R T File out: S + 's := + output.state mid.sentence = + { + ", " * write$ + } + { + output.state after.block = + { + add.period$ writeln + "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output.nonnull.dot.space } +{ % Stack in: ... R S T Stack out: ... R T File out: S + 's := + output.state mid.sentence = % { ". " * write$ } + { + ". " * write$ + } + { + output.state after.block = + { + add.period$ writeln "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output.nonnull.remove } +{ % Stack in: ... R S T Stack out: ... R T File out: S + 's := + output.state mid.sentence = + { + " " * write$ + } + { + output.state after.block = + { + add.period$ writeln "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output.nonnull.removenospace } +{ % Stack in: ... R S T Stack out: ... R T File out: S + 's := + output.state mid.sentence = + { + "" * write$ + } + { + output.state after.block = + { + add.period$ writeln "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output } +{ % discard top token if empty, else like output.nonnull + duplicate$ empty.or.unknown + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION { output.dot.space } +{ % discard top token if empty, else like output.nonnull.dot.space + duplicate$ empty.or.unknown + 'pop$ + 'output.nonnull.dot.space + if$ +} + +FUNCTION { output.removenospace } +{ % discard top token if empty, else like output.nonnull.removenospace + duplicate$ empty.or.unknown + 'pop$ + 'output.nonnull.removenospace + if$ +} + +FUNCTION { output.check } +{ % like output, but warn if key name on top-of-stack is not set + 't := + duplicate$ empty.or.unknown + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION { bibinfo.output.check } +{ % like output.check, adding bibinfo field + 't := + duplicate$ empty.or.unknown + { pop$ "empty " t * " in " * cite$ * warning$ } + { "\bibinfo{" t "}{" * * swap$ * "}" * + output.nonnull } + if$ +} + +FUNCTION { output.check.dot.space } +{ % like output.dot.space, but warn if key name on top-of-stack is not set + 't := + duplicate$ empty.or.unknown + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.dot.space + if$ +} + +FUNCTION { fin.block } +{ % functionally, but not logically, identical to fin.entry + add.period$ + writeln +} + +FUNCTION { fin.entry } +{ + add.period$ + writeln +} + +FUNCTION { new.sentence } +{ % update sentence state, with neither output nor stack change + output.state after.block = + 'skip$ + { + output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION { fin.sentence } +{ + add.period$ + write$ + new.sentence + "" +} + +FUNCTION { new.block } +{ + output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION { output.coden } % UTAH +{ % output non-empty CODEN as one-line sentence (stack untouched) + coden empty.or.unknown + { } + { "\showCODEN{" coden * "}" * writeln } + if$ +} + +% +% Sometimes articleno starts with the word 'Article' or 'Paper. +% (this is a bug of acmdl, sigh) +% We strip them. We assume eid or articleno is already on stack +% + +FUNCTION { strip.articleno.or.eid } +{ + 't := + t #1 #7 substring$ "Article" = + {t #8 t text.length$ substring$ 't :=} + { } + if$ + t #1 #7 substring$ "article" = + {t #8 t text.length$ substring$ 't :=} + { } + if$ + t #1 #5 substring$ "Paper" = + {t #6 t text.length$ substring$ 't :=} + { } + if$ + t #1 #5 substring$ "paper" = + {t #6 t text.length$ substring$ 't :=} + { } + if$ + % Strip any left trailing space or ~ + t #1 #1 substring$ " " = + {t #2 t text.length$ substring$ 't :=} + { } + if$ + t #1 #1 substring$ "~" = + {t #2 t text.length$ substring$ 't :=} + { } + if$ + t +} + + +FUNCTION { format.articleno } +{ + articleno empty.or.unknown not eid empty.or.unknown not and + { "Both articleno and eid are defined for " cite$ * warning$ } + 'skip$ + if$ + articleno empty.or.unknown eid empty.or.unknown and + { "" } + { + numpages empty.or.unknown + { "articleno or eid field, but no numpages field, in " + cite$ * warning$ } + { } + if$ + eid empty.or.unknown + { "Article \bibinfo{articleno}{" articleno strip.articleno.or.eid * "}" * } + { "Article \bibinfo{articleno}{" eid strip.articleno.or.eid * "}" * } + if$ + } + if$ +} + +FUNCTION { format.year } +{ % push year string or "[n.\,d.]" onto output stack + %% Because year is a mandatory field, we always force SOMETHING + %% to be output + "\bibinfo{year}{" + year empty.or.unknown + { "[n.\,d.]" } + { year } + if$ + * "}" * +} + +FUNCTION { format.day.month } +{ % push "day month " or "month " or "" onto output stack + day empty.or.unknown + { + month empty.or.unknown + { "" } + { "\bibinfo{date}{" month * "} " *} + if$ + } + { + month empty.or.unknown + { "" } + { "\bibinfo{date}{" day * " " * month * "} " *} + if$ + } + if$ +} + +FUNCTION { format.day.month.year } % UTAH +{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)" + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.) + % acm-*.bst addition: prefix parenthesized date string with + % ", Article nnn " + articleno empty.or.unknown eid empty.or.unknown and + { "" } + { output.state after.block = + {", " format.articleno * } + { format.articleno } + if$ + } + if$ + " (" * format.day.month * format.year * ")" * +} + +FUNCTION { output.day.month.year } % UTAH +{ % if month is empty value, do nothing; else output stack top and + % leave with new top string "(MON.)" or "(DD MON.)" + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.) + format.day.month.year + output.nonnull.remove +} + +FUNCTION { strip.doi } % UTAH +{ % Strip any Web address prefix to recover the bare DOI, leaving the + % result on the output stack, as recommended by CrossRef DOI + % documentation. + % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to + % "10.1145/1534530.1534545". A suitable URL is later typeset and + % displayed as the LAST item in the reference list entry. Publisher Web + % sites wrap this with a suitable link to a real URL to resolve the DOI, + % and the master https://doi.org/ address is preferred, since publisher- + % specific URLs can disappear in response to economic events. All + % journals are encouraged by the DOI authorities to use that typeset + % format and link procedures for uniformity across all publications that + % include DOIs in reference lists. + % The numeric prefix is guaranteed to start with "10.", so we use + % that as a test. + % 2017-02-04 Added stripping of https:// (Boris) + doi #1 #3 substring$ "10." = + { doi } + { + doi 't := % get modifiable copy of DOI + + % Change https:// to http:// to strip both prefixes (BV) + + t #1 #8 substring$ "https://" = + { "http://" t #9 t text.length$ #8 - substring$ * 't := } + { } + if$ + + t #1 #7 substring$ "http://" = + { + t #8 t text.length$ #7 - substring$ 't := + + "INTERNAL STYLE-FILE ERROR" 's := + + % search for next "/" and assign its suffix to s + + { t text.length$ } + { + t #1 #1 substring$ "/" = + { + % save rest of string as true DOI (should be 10.xxxx/yyyy) + t #2 t text.length$ #1 - substring$ 's := + "" 't := % empty string t terminates the loop + } + { + % discard first character and continue loop: t <= substring(t,2,last) + t #2 t text.length$ #1 - substring$ 't := + } + if$ + } + while$ + + % check for valid DOI (should be 10.xxxx/yyyy) + s #1 #3 substring$ "10." = + { } + { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ } + if$ + + s % push the stripped DOI on the output stack + + } + { + "unrecognized DOI value [" doi * "]" * warning$ + doi % push the unrecognized original DOI on the output stack + } + if$ + } + if$ +} + +% +% Change by BV: added standard prefix to URL +% +FUNCTION { output.doi } % UTAH +{ % output non-empty DOI as one-line sentence (stack untouched) + doi empty.or.unknown + { } + { + %% Use \urldef here for the same reason it is used in output.url, + %% see output.url for further discussion. + "\urldef\tempurl%" writeln + "\url{https://doi.org/" strip.doi * "}" * writeln + "\showDOI{\tempurl}" writeln + } + if$ +} + +FUNCTION { output.isbn } % UTAH +{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched) + show-isbn-10-and-13 + { + %% show both 10- and 13-digit ISBNs + isbn empty.or.unknown + { } + { + "\showISBNx{" isbn * "}" * writeln + } + if$ + isbn-13 empty.or.unknown + { } + { + "\showISBNxiii{" isbn-13 * "}" * writeln + } + if$ + } + { + %% show 10-digit ISBNs only if 13-digit ISBNs not available + isbn-13 empty.or.unknown + { + isbn empty.or.unknown + { } + { + "\showISBNx{" isbn * "}" * writeln + } + if$ + } + { + "\showISBNxiii{" isbn-13 * "}" * writeln + } + if$ + } + if$ +} + +FUNCTION { output.issn } % UTAH +{ % output non-empty ISSN as one-line sentence (stack untouched) + issn empty.or.unknown + { } + { "\showISSN{" issn * "}" * writeln } + if$ +} + +FUNCTION { output.issue } +{ % output non-empty issue number as a one-line sentence (stack untouched) + issue empty.or.unknown + { } + { "Issue " issue * "." * writeln } + if$ +} + +FUNCTION { output.lccn } % UTAH +{ % return with stack untouched + lccn empty.or.unknown + { } + { "\showLCCN{" lccn * "}" * writeln } + if$ +} + +FUNCTION { output.note } % UTAH +{ % return with stack empty + note empty.or.unknown + { } + { "\shownote{" note * "}" add.period$ * writeln } + if$ +} + +FUNCTION { output.note.check } % UTAH +{ % return with stack empty + note empty.or.unknown + { "empty note in " cite$ * warning$ } + { "\shownote{" note * "}" add.period$ * writeln } + if$ +} + +FUNCTION { output.eprint } % +{ % return with stack empty + eprint empty.or.unknown + { } + { "\showeprint" + archiveprefix empty.or.unknown + { eprinttype empty.or.unknown + { } + { "[" eprinttype "]" * * * } + if$ + } + { "[" archiveprefix "l" change.case$ "]" * * * } + if$ + "{" eprint "}" * * * + primaryclass empty.or.unknown + { eprintclass empty.or.unknown + { } + { "~[" eprintclass "]" * * * } + if$ + } + { "~[" primaryclass "]" * * * } + if$ + writeln + } + if$ +} + + +% +% Changes by BV 2011/04/15. Do not output +% url if doi is defined +% +% +% Changes by BV 2021/11/26. Output url even if doi is defined +% if distinctURL is not zero. +% +FUNCTION { output.url } % UTAH +{ % return with stack untouched + % output URL and associated lastaccessed fields + doi empty.or.unknown distinctURL empty.or.zero not or + { + url empty.or.unknown + { } + { + %% Use \urldef, outside \showURL, so that %nn, #, etc in URLs work + %% correctly. Put the actual URL on its own line to reduce the + %% likelihood of BibTeX's nasty line wrapping after column 79. + %% \url{} can undo this, but if that doesn't work for some reason + %% the .bbl file would have to be repaired manually. + "\urldef\tempurl%" writeln + "\url{" url * "}" * writeln + + "\showURL{%" writeln + lastaccessed empty.or.unknown + { "" } + { "Retrieved " lastaccessed * " from " * } + if$ + "\tempurl}" * writeln + } + if$ + } + { } + if$ +} + +FUNCTION { output.year.check } +{ % warn if year empty, output top string and leave " YEAR