diff --git a/layouts/partials/cite-book.html b/layouts/partials/cite-book.html
new file mode 100644
index 0000000..1b6ecfa
--- /dev/null
+++ b/layouts/partials/cite-book.html
@@ -0,0 +1,24 @@
+{{- $author := .author -}}
+{{- $chapter := .chapter -}}
+{{- $title := .title -}}
+{{- $editor := .editor -}}
+{{- $edition := .edition -}}
+{{- $publisher := .publisher -}}
+{{- $year := .year -}}
+{{- $page := .page -}}
+{{- $pageEnd := .pageEnd -}}
+{{- $isbn := .isbn -}}
+{{- $url := .url -}}
+{{- $urlArchived := .urlArchived -}}
+{{- $urlArchivedDate := .urlArchivedDate -}}
+
+{{- if $author }}{{ $author }}, {{ end -}}
+{{- if $chapter }}"{{ $chapter }}" in {{ end -}}
+{{- if $title }}{{ $title }}{{ end -}}
+{{- if $editor }}, ed. {{ $editor }}{{ end -}}
+{{- if $edition }}, {{ $edition }} {{ if $editor }}edn.{{ else }}ed.{{ end }}{{ end -}}
+{{- if or $publisher $year }} ({{ $publisher }}{{ if and $publisher $year }}, {{ end }}{{ $year }}){{ end -}}
+{{- if $page }}, {{ if $pageEnd }}pp. {{ $page }}-{{ $pageEnd }}{{ else }}p. {{ $page }}{{ end }}{{ end -}}
+{{- if $isbn }}. ISBN {{ $isbn }}{{ end -}}
+{{- if $url }}. Link{{ end -}}
+{{- if $urlArchived }} (Archived{{ with $urlArchivedDate }} on {{ . }}{{ end }}){{ end -}}
diff --git a/layouts/shortcodes/cite-book.html b/layouts/shortcodes/cite-book.html
index a0124a4..cf3d572 100644
--- a/layouts/shortcodes/cite-book.html
+++ b/layouts/shortcodes/cite-book.html
@@ -28,34 +28,25 @@ author and title.
year="2001"
page="429"
page-end="449"
- isbn="0072376902"
+ isbn="978-0072376906"
url="http://www.mhhe.com/patt"
url-archived="https://web.archive.org/web/20170615060857/http://www.mhhe.com/engcs/compsci/patt/"
url-archived-date="June 15, 2017"
>}}
*/ -}}
-{{- $author := .Get "author" -}}
-{{- $chapter := .Get "chapter" -}}
-{{- $title := .Get "title" -}}
-{{- $editor := .Get "editor" -}}
-{{- $edition := .Get "edition" -}}
-{{- $publisher := .Get "publisher" -}}
-{{- $year := .Get "year" -}}
-{{- $page := .Get "page" -}}
-{{- $pageEnd := .Get "page-end" -}}
-{{- $isbn := .Get "isbn" -}}
-{{- $url := .Get "url" -}}
-{{- $urlArchived := .Get "url-archived" -}}
-{{- $urlArchivedDate := .Get "url-archived-date" -}}
-
-{{- if $author }}{{ $author }}, {{ end -}}
-{{- if $chapter }}"{{ $chapter }}" in {{ end -}}
-{{- if $title }}{{ $title }}{{ end -}}
-{{- if $editor }}, ed. {{ $editor }}{{ end -}}
-{{- if $edition }}, {{ $edition }} {{ if $editor }}edn.{{ else }}ed.{{ end }}{{ end -}}
-{{- if or $publisher $year }} ({{ $publisher }}{{ if and $publisher $year }}, {{ end }}{{ $year }}){{ end -}}
-{{- if $page }}, {{ if $pageEnd }}pp. {{ $page }}-{{ $pageEnd }}{{ else }}p. {{ $page }}{{ end }}{{ end -}}
-{{- if $isbn }}. ISBN {{ $isbn }}{{ end -}}
-{{- if $url }}. Link{{ end -}}
-{{- if $urlArchived }} (Archived{{ with $urlArchivedDate }} on {{ . }}{{ end }}){{ end -}}
+{{ partial "cite-book.html" (dict
+ "author" (.Get "author")
+ "chapter" (.Get "chapter")
+ "title" (.Get "title")
+ "editor" (.Get "editor")
+ "edition" (.Get "edition")
+ "publisher" (.Get "publisher")
+ "year" (.Get "year")
+ "page" (.Get "page")
+ "pageEnd" (.Get "page-end")
+ "isbn" (.Get "isbn")
+ "url" (.Get "url")
+ "urlArchived" (.Get "url-archived")
+ "urlArchivedDate" (.Get "url-archived-date")
+) }}
diff --git a/layouts/shortcodes/cite-ics.html b/layouts/shortcodes/cite-ics.html
new file mode 100644
index 0000000..806ee0a
--- /dev/null
+++ b/layouts/shortcodes/cite-ics.html
@@ -0,0 +1,73 @@
+{{- /*
+cite-ics - Shortcode for citing Introduction to Computing Systems by Patt & Patel.
+Pre-fills author, title, publisher, year, ISBN, and URLs based on the edition.
+
+@param {string} edition Edition of the book ("1", "2", or "3").
+@param {string} chapter Chapter title.
+@param {string} page Page number (single) or start of range.
+@param {string} page-end End of page range (if citing multiple pages).
+
+@example {{< cite-ics edition="1" chapter="Appendix A: The LC-2 ISA" page="429" page-end="449" >}}
+*/ -}}
+
+{{- $edition := .Get "edition" -}}
+{{- $chapter := .Get "chapter" -}}
+{{- $page := .Get "page" -}}
+{{- $pageEnd := .Get "page-end" -}}
+
+{{- $author := "Patt, Yale N. and Patel, Sanjay J." -}}
+{{- $publisher := "McGraw-Hill" -}}
+
+{{- $editionString := "" -}}
+{{- $title := "" -}}
+{{- $year := "" -}}
+{{- $isbn := "" -}}
+{{- $url := "" -}}
+{{- $urlArchived := "" -}}
+{{- $urlArchivedDate := "" -}}
+
+{{- if eq $edition "1" -}}
+ {{- $editionString = "1st" -}}
+
+ {{- $title = "Introduction to Computing Systems: from Bits and Gates to C and Beyond" -}}
+ {{- $year = "2001" -}}
+ {{- $isbn = "978-0072376906" -}}
+ {{- $url = "http://www.mhhe.com/patt" -}}
+ {{- $urlArchived = "https://web.archive.org/web/20170615060857/http://www.mhhe.com/engcs/compsci/patt/" -}}
+ {{- $urlArchivedDate = "June 15, 2017" -}}
+{{- else if eq $edition "2" -}}
+ {{- $editionString = "2nd" -}}
+
+ {{- /* https://icourse.club/uploads/files/647434676ec33b68392bf82c3a014751e8e2345a.pdf */ -}}
+
+ {{- $title = "Introduction to Computing Systems: from Bits and Gates to C and Beyond" -}}
+ {{- $year = "2004" -}}
+ {{- $isbn = "978-0071245012" -}}
+ {{- $url = "http://www.mhhe.com/patt2" -}}
+{{- else if eq $edition "3" -}}
+ {{- $editionString = "3rd" -}}
+
+ {{- /* https://icourse.club/uploads/files/96a2b94d4be48285f2605d843a1e6db37da9a944.pdf */ -}}
+
+ {{- $title = "Introduction to Computing Systems: from Bits and Gates to C/C++ and Beyond" -}}
+ {{- $year = "2020" -}}
+ {{- $isbn = "978-1260150537" -}}
+ {{- $url = "http://www.mhhe.com/patt3" -}}
+{{- else -}}
+ {{ errorf "cite-ics: edition must be 1, 2, or 3, got '%s'" $edition }}
+{{- end -}}
+
+{{ partial "cite-book.html" (dict
+ "author" $author
+ "title" $title
+ "chapter" $chapter
+ "edition" $editionString
+ "publisher" $publisher
+ "year" $year
+ "page" $page
+ "pageEnd" $pageEnd
+ "isbn" $isbn
+ "url" $url
+ "urlArchived" $urlArchived
+ "urlArchivedDate" $urlArchivedDate
+) }}