jekyll-theme-endless 0.15.1 → 0.15.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 232335a620d6e542099dd2c2cbeb88184152c656a899e049ec01b80215425df3
4
- data.tar.gz: 8ee1212d877c99381758aa41bc6758f92370bba58ee3eea30199e12b5f35ebe4
3
+ metadata.gz: 3383d69bf49acfb0cd4677219777a55f6a68c2840074276792ed70f89e1700e3
4
+ data.tar.gz: 90b8d1d5ffa62dd6e33840ca2615abb8f25a7d1d99e040eb574de8193ac2210f
5
5
  SHA512:
6
- metadata.gz: 2e50c2cdf8e32e0ec73f021410198645774e1427a5cfa542f3d8fce9e6eebed2c4ec630e53f88f090160c3cc16e605a56419d7f2ae4630c35c3a9ad4ac76bbce
7
- data.tar.gz: 2452c5e1a536ed6e06fd5e483b8224c70fb4fc7551b3368783a4ddb1f5e0ca6db2b92762be9e6a70c74cffd098b1b58e7852303c8628fdc43e6e22c942265a0b
6
+ metadata.gz: 53ab9e6a8b36460d300d51f92cfa9e0f8ae80760282059cac932600fe08122d21d617ba401b57a5f88e5a3c9a3bee25c95a2ae8a4363f77fc3489f93ebf15dce
7
+ data.tar.gz: e78303fa54384fe39d521a8bb4abb8ef5b23d69b89c78c7fb3a556f5784caedb5ae1bd353a58c9816f48dcf32c6c4075ccb7722695c8a0688856a80d28817a3b
data/README.adoc CHANGED
@@ -4,6 +4,7 @@
4
4
  :toc: preamble
5
5
  :toclevels: 3
6
6
  :page-summary: "Explore the documentation for jekyll-theme-endless: a Jekyll theme for AsciiDoc blogging, featuring tag cloud, code highlighting, responsive design, and more."
7
+ :page-permalink: /documentation/
7
8
 
8
9
 
9
10
 
@@ -119,20 +120,27 @@ CAUTION: If you want to use special characters in your tags, you need to create
119
120
 
120
121
  == Usage
121
122
 
122
- Here I describe available layouts, includes, SASS- and other assets.
123
+ Here I describe available _layouts_, _includes_, SASS- and other _assets_.
123
124
 
124
125
  To copy all the files of the theme into a folder,
125
126
  you can use the following command (in the root directory of your Jekyll project):
126
127
 
127
128
  [source,bash]
128
129
  ----
129
- cp -r $(bundle show jekyll-theme-endless)/ .
130
+ cp -r "$(bundle show jekyll-theme-endless)" .
130
131
  ----
131
132
 
132
133
  This will copy the theme-folder containing all its files into the current directory.
133
134
  From there, you can selectively move files to your project and modify them as needed.
134
135
  Your (modified) copy will afterwards overwrite the contents provided by the theme.
135
136
 
137
+ If you only want to copy the example pages (like the AsciiDoc showroom) to your project, use:
138
+
139
+ [source,bash]
140
+ ----
141
+ cp -r "$(bundle show jekyll-theme-endless)/pages_examples" .
142
+ ----
143
+
136
144
  NOTE: Whenever you create custom versions of files in this theme, consider whether they might also be useful for others. In that case, you could contribute the changes to the project. Feel free to contact me about it.
137
145
 
138
146
 
@@ -469,7 +477,7 @@ Generates a list containing blog posts.
469
477
 
470
478
  `_includes/function_post-in-list-long.html`::
471
479
  Generates the code to display a single post in the list of blog posts.
472
- An entry consists of the title of the blog post )linked to the article),
480
+ An entry consists of the title of the blog post (linked to the article),
473
481
  a summary, the creation date and a list of tags associates with the post.
474
482
 
475
483
 
@@ -481,11 +489,35 @@ If a permalink is configured for the article, this is indicated by an icon.
481
489
 
482
490
 
483
491
 
492
+ `_includes/function_post-in-list-recent.html`::
493
+ Generates the code to display a single post in the list of recent blog posts.
494
+ An entry consists only of the title of the blog post (linked to the article).
495
+
496
+
497
+
498
+ `_includes/function_post-in-list-duplicate-tags.html`::
499
+ Generates the code to display a single post in the list of blog posts that have duplicate tags.
500
+ An entry consists of the blog post title (linked to the article) and a list of tags
501
+ that are mentioned multiple times in the tag list, along with their frequency.
502
+
503
+
504
+
484
505
  `_includes/function_tag-cloud.html`::
485
506
  Generates a tag cloud.
486
507
 
487
508
 
488
509
 
510
+ `_includes/function_tag-list.html`::
511
+ Generates a formatted list of tags.
512
+ This is e.g. used to display the tags of a blog post.
513
+
514
+
515
+
516
+ `_includes/function_tag.html`::
517
+ Generates the code for a tag-"pill" in a `<li>`-Element.
518
+
519
+
520
+
489
521
  `_includes/content_footer-powered-by.html`::
490
522
 
491
523
  Contains the information at the very bottom right of the footer, where the powered-by details are displayed.
@@ -513,12 +545,6 @@ username_linkedin: XXXX
513
545
 
514
546
 
515
547
 
516
- `_includes/function_tag-list.html`::
517
- Generates a formatted list of tags.
518
- This is e.g. used to display the tags of a blog post.
519
-
520
-
521
-
522
548
  `_includes/function_show-dates.html`::
523
549
  +
524
550
  --
@@ -632,6 +658,35 @@ I use, for example:
632
658
 
633
659
 
634
660
 
661
+ [[Dockerfile]]
662
+ === Dockerfile
663
+
664
+ This repository includes a `Dockerfile` that defines a custom *Docker image*,
665
+ built and stored in the GitLab Docker registry during the CI/CD process.
666
+ This image provides an optimized environment for building your Jekyll site with all necessary tools pre-installed, including:
667
+
668
+ * An SSH client, enabling deployment to your own server
669
+ * Dependency managers like Yarn, for handling JavaScript and CSS dependencies
670
+ * Tools for generating graphics from text-based diagrams, such as Graphviz, Ditaa, and PlantUML
671
+
672
+ If you are using GitLab CI/CD, you can easily leverage this pre-built image
673
+ by adding the following `image:` line to your `.gitlab-ci.yml` file:
674
+
675
+ [source, yml]
676
+ ----
677
+ # Use the pre-built Docker image provided by 'jekyll-theme-endless'
678
+ image: "registry.gitlab.com/jekyll-theme-endless/jekyll-theme-endless.gitlab.io:latest"
679
+ ----
680
+
681
+ By using this Docker image, you avoid the need to install each required tool individually
682
+ in a separate base image (such as `ruby:latest`) during every build process.
683
+ This approach not only simplifies your CI/CD configuration but also reduces build times,
684
+ as all necessary dependencies are already bundled into a single, reusable image.
685
+
686
+
687
+
688
+
689
+
635
690
  == Settings
636
691
 
637
692
  === Language
@@ -667,7 +722,13 @@ To set up your environment to develop this theme:
667
722
  The theme is setup just like a normal Jekyll site!
668
723
  To test the theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`.
669
724
  This starts a Jekyll server using your theme.
670
- To test the theme *with example-data*, run `bundle exec jekyll serve --config _config.yml,_data.yml`.
725
+ To test the theme *with example-data*, run:
726
+
727
+ [source, bash]
728
+ ----
729
+ bundle exec jekyll serve --config _config.yml,_data.yml
730
+ ----
731
+
671
732
  Values for theme specific configurations are stored in `_data.yml` and not in the themes `_config.yml`.
672
733
  Since the `_config.yml` is shipped with the gem,
673
734
  the users of your theme would otherwise have to unset the values in their own `config.yml`.
data/_config.yml CHANGED
@@ -48,12 +48,6 @@ asciidoctor:
48
48
  # https://github.com/asciidoctor/jekyll-asciidoc#font-based-admonition-and-inline-icons
49
49
  icons: font
50
50
 
51
- # Keep files generated by AsciiDoctor-diagram during the build process
52
- # https://github.com/asciidoctor/jekyll-asciidoc#preserving-generated-images
53
- # The paths in keep_files must not have a / at the beginning or end.
54
- keep_files:
55
- - _diagrams
56
-
57
51
 
58
52
 
59
53
 
@@ -79,6 +73,19 @@ plugins:
79
73
  - jekyll-feed
80
74
  - asciidoctor-diagram
81
75
 
76
+
77
+
78
+ # Keep files generated by AsciiDoctor-diagram during the build process
79
+ # https://github.com/asciidoctor/jekyll-asciidoc#preserving-generated-images
80
+ # The paths in keep_files must not have a / at the beginning or end.
81
+ # Note: Settings like `keep_files`, `exclude`, `include`, and some others
82
+ # are not automatically inherited by the project using the theme
83
+ # and must be explicitly defined in the project's `_config.yml`.
84
+ keep_files:
85
+ - _diagrams
86
+
87
+
88
+
82
89
  # Exclude files from processing.
83
90
  #
84
91
  # Excluded items can be processed by explicitly listing the directories or
@@ -107,8 +114,6 @@ exclude:
107
114
 
108
115
 
109
116
 
110
-
111
-
112
117
  # compressed: Produces minified CSS in a single line, with no spaces or comments, for the smallest file size.
113
118
  # expanded: Outputs fully expanded CSS with indentation, making it easy to read but larger in size.
114
119
  # nested: Generates CSS with nested indentation, resembling the structure of the Sass code, for improved readability.
@@ -11,16 +11,23 @@ It typically includes blog navigation, such as 'Recent Articles' or 'Tag Cloud,'
11
11
  </p>
12
12
 
13
13
  <!-- Recent Posts -->
14
+ {% comment %}Create an empty array.{% endcomment %}
15
+ {% assign postlist = "" | split:"" %}
16
+
17
+ {% for post in site.posts offset: 0 limit: 5 %}
18
+ {% comment %}
19
+ 'title' is not escaped, as the value should already be escaped by the AsciiDoc processor.
20
+ {% endcomment %}
21
+ {% assign postlist = postlist | push: post %}
22
+ {% endfor %}
23
+
14
24
  <h4>Recent Posts:</h4>
15
- <ul>
16
- {% assign postlist = site.posts | sort:"date" | reverse %}
17
- {% for post in postlist offset: 0 limit: 5 %}
18
- {% comment %}
19
- 'title' is not escaped, as the value should already be escaped by the AsciiDoc processor.
20
- {% endcomment %}
21
- <li><a href="{{ post.url | relative_url }}">{{ post.title }}</a></li>
22
- {% endfor %}
23
- </ul>
25
+ {% include function_list-posts.html
26
+ postlist=postlist
27
+ postlist-css-class="post-list-short"
28
+ postlist-format-function="function_post-in-list-recent.html"
29
+ %}
30
+
24
31
 
25
32
  <!-- Tag Cloud -->
26
33
  <h4>Tag Cloud:</h4>
@@ -0,0 +1,40 @@
1
+ {% comment %}
2
+ Processes a single post for display in the list of articles with duplicate tags.
3
+ Expects a post object as a parameter.
4
+
5
+ Call via:
6
+ ----
7
+ <li>
8
+ {% include function_post-in-list-duplicate-tags.html
9
+ post=current_post
10
+ %}
11
+ </li>
12
+ ----
13
+ {% endcomment %}
14
+
15
+
16
+ {% assign post = include.post %}
17
+ <time itemprop="datePublished" datetime="{{ post.date | date: '%Y-%m-%d' }}">
18
+ {{ post.date | date: '%Y-%m-%d' }}
19
+ </time>:
20
+
21
+ {% comment %}
22
+ 'title' is not escaped, as the value should already be escaped by the AsciiDoc processor.
23
+ {% endcomment %}
24
+ <a href="{{ post.url | relative_url }}" itemprop="url">
25
+ <span itemprop="headline">{{ post.title }}</span>
26
+ </a>
27
+
28
+ {% assign grouped_tags = include.post.tags | group_by_exp: "x", "x" %}
29
+ <ul class="list-inline">
30
+ {% for group in grouped_tags %}
31
+ {% assign tag_count = group.items | size %}
32
+ {% if tag_count > 1 %}
33
+ {% assign additional_string = group.items | size | append: '×' %}
34
+ {% include function_tag.html
35
+ tag = group.name
36
+ add = additional_string
37
+ %}
38
+ {% endif %}
39
+ {% endfor %}
40
+ </ul>
@@ -0,0 +1,21 @@
1
+ {% comment %}
2
+ Processes a single post for display in the list of recent articles.
3
+ Expects a post object as a parameter.
4
+
5
+ Call via:
6
+ ----
7
+ <li>
8
+ {% include function_post-in-list-recent.html
9
+ post=current_post
10
+ %}
11
+ </li>
12
+ ----
13
+ {% endcomment %}
14
+
15
+ {% comment %}
16
+ 'title' is not escaped, as the value should already be escaped by the AsciiDoc processor.
17
+ {% endcomment %}
18
+ <a href="{{ include.post.url | relative_url }}" itemprop="url">
19
+ <span itemprop="headline">{{ include.post.title }}</span>
20
+ </a>
21
+
@@ -34,7 +34,7 @@ Assumption: Non of the tags occurs more than one million times.
34
34
  {% assign max = 0 %}
35
35
 
36
36
  {% for tag in tags_sorted %}
37
- {% assign postsWithThisTag = site.tags[tag] | size %}
37
+ {% assign postsWithThisTag = site.tags[tag] | uniq | size %}
38
38
  {% if postsWithThisTag > max %}
39
39
  {% assign max = postsWithThisTag %}
40
40
  {% endif %}
@@ -63,7 +63,7 @@ Assumption: Non of the tags occurs more than one million times.
63
63
  To be on the safe side, create a float (times: 1.0)
64
64
  {% endcomment %}
65
65
 
66
- {% assign number = site.tags[tag] | size %}
66
+ {% assign number = site.tags[tag] | uniq | size %}
67
67
  {% comment %}
68
68
  Tags that only occur once, should be displayed smaller than 100% in the tag cloud.
69
69
  {% endcomment %}
@@ -1,24 +1,20 @@
1
1
  {% comment %}
2
- Generates an unsorted list of tags.
2
+ Generates an unsorted list of unique tags.
3
3
  Requires an array of tags beeing provided via the parameter `tags`.
4
4
  {% endcomment %}
5
- {% assign asize = include.tags | size %}
5
+ {% assign tags_uniq = include.tags | uniq %}
6
+
7
+ {% assign asize = tags_uniq | size %}
6
8
  {% if asize > 0 %}
7
9
  {% comment %}
8
- Generate a comma-separated keyword list from page.tags for the schema.org annotation of the blog post.
10
+ Generate a comma-separated keyword list from tags_uniq for the schema.org annotation of the blog post.
9
11
  {% endcomment %}
10
- <meta itemprop="keywords" content="{{ page.tags | join: ', ' | escape }}" />
12
+ <meta itemprop="keywords" content="{{ tags_uniq | join: ', ' | escape }}" />
11
13
  <ul class="list-inline">
12
- {% for current_tag in include.tags %}
13
- <li class="list-inline-item mx-0 my-0"><a
14
- class="badge badge-pill badge-secondary"
15
- {% comment %}
16
- Here 'tag' Is NOT escaped, since the plugin generates
17
- files for tag-pages with filenames using the unescaped tag.
18
- {% endcomment %}
19
- {% assign tag_dir = site.tag_dir | default: 'tags' %}
20
- href="{{ '/' | append: tag_dir | append: '/' | append: current_tag | relative_url }}"
21
- >{{ current_tag | escape }}</a></li>
14
+ {% for current_tag in tags_uniq %}
15
+ {% include function_tag.html
16
+ tag=current_tag
17
+ %}
22
18
  {% endfor %}
23
19
  </ul>
24
20
  {% endif %}
@@ -0,0 +1,24 @@
1
+ {% comment %}
2
+ Outputs a linked tag as a pill.
3
+
4
+ Call via:
5
+ ----
6
+ <li>
7
+ {% include function_tag.html
8
+ tag=current_tag
9
+ add="7*"
10
+ %}
11
+ </li>
12
+ ----
13
+ {% endcomment %}
14
+ <li class="list-inline-item mx-0 my-0">{{ include.add }}<a
15
+ class="badge badge-pill badge-secondary"
16
+ {% comment %}
17
+ Here 'tag' Is NOT escaped, since the plugin generates
18
+ files for tag-pages with filenames using the unescaped tag.
19
+ {% endcomment %}
20
+ {% assign tag_dir = site.tag_dir | default: 'tags' %}
21
+ href="{{ '/' | append: tag_dir | append: '/' | append: include.tag | relative_url }}"
22
+ >{{ include.tag | escape }}</a>
23
+ </li>
24
+
@@ -23,6 +23,20 @@ layout: page
23
23
 
24
24
 
25
25
 
26
+ {% comment %}Create an empty array.{% endcomment %}
27
+ {% assign posts_with_duplicate_tags = "" | split:"" %}
28
+
29
+ {% for post in site.posts %}
30
+ {% assign n_tags = post.tags | size %}
31
+ {% assign n_unique_tags = post.tags | uniq | size %}
32
+
33
+ {% if n_tags != n_unique_tags %}
34
+ {% assign posts_with_duplicate_tags = posts_with_duplicate_tags | push: post %}
35
+ {% endif %}
36
+ {% endfor %}
37
+
38
+
39
+
26
40
  {% comment %}Create an empty array.{% endcomment %}
27
41
  {% assign tags_without_description = "" | split:"" %}
28
42
  {% assign number_of_tags_with_description = 0 %}
@@ -103,6 +117,23 @@ Bei Änderungen auch den entsprechenden Blog-Eintrag vom 28.10.2020 anpassen!
103
117
 
104
118
 
105
119
 
120
+ {% assign number_pwdt = posts_with_duplicate_tags | size %}
121
+ {% if number_pwdt > 0 %}
122
+ <h3>Posts with duplicate tags</h3>
123
+ <p>
124
+ <em>This can be useful for debugging purpose, since every tag should occur only once in a post.</em>
125
+ </p>
126
+
127
+ {% include function_list-posts.html
128
+ postlist=posts_with_duplicate_tags
129
+ postlist-css-class = "post-list-short"
130
+ postlist-format-function = "function_post-in-list-duplicate-tags.html"
131
+ %}
132
+
133
+ {% endif %}
134
+
135
+
136
+
106
137
  {% assign number_twd = tags_without_description | size %}
107
138
  {% if number_twd > 0 %}
108
139
  <h3>Tags without description</h3>
@@ -14,6 +14,9 @@ div.admonitionblock {
14
14
  padding: .75em .25em;
15
15
  border-width: 0;
16
16
  }
17
+ td.content {
18
+ padding-right: .75em;
19
+ }
17
20
  }
18
21
  /* See:
19
22
  * https://github.com/asciidoctor/jekyll-asciidoc#font-based-admonition-and-inline-icons
@@ -85,7 +85,9 @@ module Jekyll
85
85
  self.data['tag'] = tag
86
86
 
87
87
  # Make `site.tags[tag]` available as `page.postlist` in the layout
88
- self.data['postlist'] = site.tags[tag] || []
88
+ # The use of `uniq` ensures that an entry does not appear twice in the list of "posts tagged with this tag"
89
+ # if a tag has been accidentally entered twice in the tag list of a post.
90
+ self.data['postlist'] = (site.tags[tag] || []).uniq
89
91
 
90
92
  #puts "[DEBUG] Loaded self.data: #{self.data.inspect}"
91
93
  end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Endless
3
- VERSION = '0.15.1'
3
+ VERSION = '0.15.3'
4
4
  end
5
5
  end
@@ -0,0 +1,14 @@
1
+ ---
2
+ published: false
3
+ ---
4
+ <!DOCTYPE html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="UTF-8">
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+ <title>Document</title>
10
+ </head>
11
+ <body>
12
+ HTML boilerplate code.
13
+ </body>
14
+ </html>
@@ -0,0 +1,548 @@
1
+ = AsciiDoc showroom
2
+ :page-menu_label: AsciiDoc
3
+ :page-menu_position: 200
4
+ :page-permalink: /asciidoc-showroom/
5
+ // Enable support for experimental features like "keyboard shortcuts"
6
+ :experimental:
7
+ // Enable support for mathematical expressions
8
+ :stem:
9
+ :toc: preamble
10
+ :toclevels: 5
11
+ :page-summary: "Discover the AsciiDoc showroom: See what's possible with AsciiDoc in this theme, including code, tables, lists, quotes, and more for advanced formatting."
12
+
13
+
14
+
15
+ Here are a few examples to demonstrate what AsciiDoc, as a markup language, has to offer.
16
+ Its capabilities far exceed those of Markdown.
17
+ Thus, this page will only cover a small portion to give you a sense of what's possible.
18
+
19
+ Checking out the source code of this page can also help you get started with AsciiDoc.
20
+ For more information, you can refer to the official AsciiDoc and Asciidoctor documentation.
21
+
22
+ * https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/[AsciiDoc Syntax Quick Reference]
23
+ * https://docs.asciidoctor.org/asciidoctor/latest/[Asciidoctor Documentation]
24
+ * https://docs.asciidoctor.org/asciidoc/latest/[AsciiDoc Language Documentation]
25
+
26
+
27
+
28
+
29
+
30
+ == Source code listings
31
+
32
+ .Python source code (language is shown in the upper right corner):
33
+ [source, python]
34
+ ----
35
+ # Python code
36
+ def greet(name):
37
+ print(f"Hello, {name}!")
38
+
39
+ greet('World')
40
+ ----
41
+
42
+ .Code block with an unknown language (language info ist not shown):
43
+ [source]
44
+ ----
45
+ Start
46
+ Set counter to 0
47
+ While counter < 5 do
48
+ Print "This is loop iteration", counter
49
+ Increment counter by 1
50
+ End
51
+ ----
52
+
53
+ // For detailed information see:
54
+ // https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#literals-and-source-code
55
+ .Python code block with annotations.
56
+ [source,python]
57
+ ----
58
+ def square(number):// <1>
59
+ return number ** 2
60
+
61
+ result = square(4)// <2>
62
+ print(result)// <3>
63
+ ----
64
+ <1> The function `square` calculates the square of a given number.
65
+ <2> The function is called with the number 4, and the result is stored in `result`.
66
+ <3> The result is printed to the console.
67
+
68
+ You can also directly insert source code from a file into your AsciiDoc document.
69
+ This way, you can display the same code in multiple places but only need to update it in one location.
70
+ You can even embed production code directly.
71
+
72
+ // Includes the code of the file "showroom-asciidoc-code.html" starting from line 4.
73
+ .Source code of the AsciiDoc Showroom:
74
+ [source, html]
75
+ ----
76
+ include::showroom-asciidoc-code.html[lines=4..]
77
+ ----
78
+
79
+
80
+
81
+
82
+
83
+ == Text formatting
84
+
85
+ * Text with *strong* significance to me
86
+ * _Emphasized_ text
87
+ * *_Combination_* of both
88
+ * You can also format parts of a word:
89
+ ** **C**reate, **R**ead, **U**pdate, and **D**elete (CRUD)
90
+ ** Counter__clock__wise
91
+ ** ``string``s
92
+ * ^super^script
93
+ * ~sub~script
94
+ * [.line-through]#This is strikethrough text#
95
+ * [.underline]#This is underlined text#
96
+ * `monospace text`
97
+
98
+
99
+
100
+
101
+
102
+ [[links]]
103
+ == Links
104
+
105
+ * https://example.com
106
+ * https://example.com[Link to example.com]
107
+ * test@example.com
108
+ * mailto:test@example.com[send a test message to example.com]
109
+ // Link to a page with a permalink.
110
+ * In AsciiDoc, you can easily add links to other articles: link:/asciidoc-example/[Example post for AsciiDoc with explanations].
111
+ // Link to the section on the page marked with the anchor [[admonition]].
112
+ * You can also link to sections on the page using link anchors: link:#admonition[Link to the section: "Adminition blocks" on this page]
113
+
114
+
115
+
116
+
117
+
118
+ == Keyboard shortcuts and menu paths
119
+
120
+ kbd:[Ctrl + Alt + Del]
121
+
122
+ menu:View[Appearance > Full Screen]
123
+
124
+
125
+
126
+
127
+
128
+ [[admonition]]
129
+ == Admonition blocks
130
+
131
+ TIP: Admonition: `TIP`.
132
+
133
+ IMPORTANT: Admonition: `IMPORTANT`.
134
+
135
+ [NOTE]
136
+ ====
137
+ Admonition blocks (here shown for the admonition: `NOTE`) can contain several lines and complex content like:
138
+
139
+ .A list with several items.
140
+ - one
141
+ - two
142
+ - three
143
+
144
+ .Another paragraph.
145
+
146
+ .And even blocks with source code.
147
+ [source, java]
148
+ ----
149
+ public class HelloWorld {
150
+ public static void main(String[] args) {
151
+ System.out.println("Hello, World!");
152
+ }
153
+ }
154
+ ----
155
+ ====
156
+
157
+ CAUTION: Admonition: `CAUTION`.
158
+
159
+ WARNING: Admonition: `WARNING`.
160
+
161
+
162
+
163
+
164
+
165
+ == Tables
166
+
167
+ .A simple table
168
+ [options="header", cols="3*"]
169
+ |===
170
+ | Name
171
+ | Age
172
+ | City
173
+
174
+ | Max Mustermann
175
+ | 30
176
+ | Berlin
177
+
178
+ // The cells in AsciiDoc can be in the same row or shifted
179
+ | John Doe | 45 | New York
180
+
181
+ | Maria Musterfrau | 28
182
+
183
+
184
+ // They can be also separated by blank lines.
185
+ | München
186
+ |===
187
+
188
+
189
+
190
+ .Table showcasing AsciiDoc table capabilities
191
+ [options="header", cols="<.<3,^2,>2"]
192
+ |===
193
+ | Feature | Description | Example
194
+
195
+ | **Bold and Italics** | Supports *italic* and **bold** text formatting | _Italic_ and *bold* formatting
196
+ 3+| **This cell spans 3 columns**
197
+
198
+ .2+| **This cell spans 2 rows** | First row of the spanned cell | Another cell
199
+ // In the following, I manually corrected the disrupted cell count and
200
+ // the resulting formatting issues caused by the colspanning for each individual cell.
201
+ ^| Second row of the spanned cell >| Another cell
202
+
203
+ // Cells do not have to be placed side by side; they can simply be written one above the other:
204
+ | **Links**
205
+ | Supports links within the table
206
+ | https://example.com[Example Link]
207
+
208
+ |===
209
+
210
+
211
+
212
+
213
+
214
+ == Images
215
+
216
+ // AsciiDoc commands are not stripped/processed when used within `alt=""`.
217
+ :pic_1_src: /assets/images/tree-3822149_640.jpg
218
+ :pic_1_title: Image by https://pixabay.com/de/users/jplenio-7645255/[jplenio] published on https://pixabay.com/de/[Pixabay].
219
+ :pic_1_alt: The sun setting next to the trunk of an old tree.
220
+ image::{pic_1_src}[link="{pic_1_src}", title="{pic_1_title}", alt="{pic_1_alt}"]
221
+
222
+
223
+
224
+
225
+
226
+ == Lists
227
+
228
+ === Unordered
229
+
230
+ * Item 1
231
+ * Item 2
232
+ ** Item 2.1
233
+ ** Item 2.2
234
+ ** Item 2.3
235
+ * Item 3
236
+
237
+ === Numbered
238
+
239
+ . Numbered item 1
240
+ . Numbered item 2
241
+ .. Numbered item 2.1
242
+ .. Numbered item 2.2
243
+ .. Numbered item 2.3
244
+ . Numbered item 3
245
+
246
+ === Checklist
247
+
248
+ * [*] checked: `* [*]`
249
+ * [x] checked: `* [x]` (lower case x!)
250
+ - [*] checked: `- [*]`
251
+ - [x] checked: `- [x]`
252
+ - [ ] unchecked: `- [ ]`
253
+ * [ ] unchecked: `* [ ]`
254
+ ** item without checkbox
255
+ ** [ ] unchecked item on level 2: `** [ ]`
256
+ *** [x] checked item on level 3: `*** [x]`
257
+
258
+
259
+
260
+
261
+
262
+ == Quotes
263
+
264
+ Fully annotated quote:
265
+
266
+ .After being searched for Lorem ipsum:
267
+ [quote, Wikipedia, published on https://en.wikipedia.org/wiki/Lorem_ipsum]
268
+ ____
269
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
270
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
271
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
272
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
273
+ ____
274
+
275
+ Quotation lacking attribution and further information:
276
+ ____
277
+ Veni, vidi, vici.
278
+ ____
279
+
280
+
281
+
282
+
283
+
284
+ == Glossary
285
+
286
+ Glossary entries can also contain lists, quotations, code-blocks, ...
287
+
288
+ Lorem ipsum::
289
+
290
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
291
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
292
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
293
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
294
+
295
+ Lorem ipsum (with code block)::
296
+
297
+ A common form of Lorem ipsum in a code block.
298
+ +
299
+ [source, text]
300
+ ----
301
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
302
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
303
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
304
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
305
+ ----
306
+
307
+ Lorem ipsum (with list)::
308
+
309
+ * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
310
+ * Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
311
+ * Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
312
+ * Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
313
+
314
+
315
+
316
+
317
+
318
+ == Table of contents (TOC)
319
+
320
+ As you can see at the top of this page, AsciiDoc can also generate a table of contents for you.
321
+
322
+ You can enable this directly in the AsciiDoc page attributes.
323
+ For this page I used:
324
+
325
+ [source, asciidoc]
326
+ ----
327
+ :toc: preamble
328
+ :toclevels: 5
329
+ ----
330
+
331
+ // == Level 1 corresponds to <h2>
332
+
333
+ === Level 2 corresponds to <h3>
334
+
335
+ ==== Level 3 corresponds to <h4>
336
+
337
+ ===== Level 4 corresponds to <h5>
338
+
339
+ ====== Level 5 corresponds to <h6>
340
+
341
+
342
+
343
+
344
+
345
+ [[stem]]
346
+ == Using Mathematical Formulas (STEM)
347
+
348
+ In this blog, you can easily https://asciidoctor.org/docs/user-manual/#stem[use STEM]
349
+ (**S**cience, **T**echnology, **E**ngineering and **M**ath) expressions in your pages and posts.
350
+ To do this, simply add the `:stem:` attribute to the document header of your page or post
351
+ (You can also https://github.com/asciidoctor/jekyll-asciidoc#enabling-stem-support[enable it for all posts] in your `_config.yml`):
352
+
353
+ [source, asciidoc]
354
+ ----
355
+ = Page Title
356
+ :stem:
357
+ ----
358
+
359
+ Two syntaxes for the formulas are are available:
360
+
361
+ * http://asciimath.org/[AsciiMathML] (AsciiMath is the *default*)
362
+ * https://en.wikibooks.org/wiki/LaTeX/Mathematics[TeX and LaTeX]
363
+
364
+
365
+
366
+
367
+
368
+ === Examples using AsciiMath
369
+
370
+ *Inline Command*: (here `asciimath:[[[a,b\],[c,d\]\]((n),(k))].`)
371
+
372
+ asciimath:[[[a,b\],[c,d\]\]((n),(k))].
373
+
374
+
375
+
376
+ *Block command*:
377
+
378
+ .The formula for the sum of cubes.
379
+ [asciimath]
380
+ ++++
381
+ sum_(i=1)^n i^3=((n(n+1))/2)^2
382
+ ++++
383
+
384
+ .The AsciiDoc code using AsciiMath that was used to create the above formula for the sum of cubes.
385
+ [source, asciidoc]
386
+ ----
387
+ [asciimath]
388
+ ++++
389
+ sum_(i=1)^n i^3=((n(n+1))/2)^2
390
+ ++++
391
+ ----
392
+
393
+
394
+
395
+
396
+
397
+ === Examples using LaTeX
398
+
399
+ *Inline command* (here: `latexmath:[C = \alpha + \beta Y^{\gamma} + \epsilon]`):
400
+
401
+ latexmath:[C = \alpha + \beta Y^{\gamma} + \epsilon]
402
+
403
+
404
+
405
+ *Block command*:
406
+
407
+ .Exponential Decay: The limit of the exponential function latexmath:[exp(-x)] as latexmath:[x] approaches infinity is zero.
408
+ [latexmath]
409
+ ++++
410
+ \lim\limits_{x \to \infty} \exp(-x) = 0
411
+ ++++
412
+
413
+ .The AsciiDoc code for the exponential decay equation shown above, written in LaTeX syntax.
414
+ [source, asciidoc]
415
+ ----
416
+ [latexmath]
417
+ ++++
418
+ \lim\limits_{x \to \infty} \exp(-x) = 0
419
+ ++++
420
+ ----
421
+
422
+
423
+
424
+
425
+
426
+ [[diagram]]
427
+ == Ascii Diagrams
428
+
429
+ Text-based diagrams enable easy integration with version control systems, as they are saved in plain text.
430
+ This format avoids binary files, making *changes visible in diffs*, so you can track updates precisely over time.
431
+ Additionally, because they are text, *different themes and styles can be applied* without needing to redesign the diagram.
432
+ Another benefit is that these diagrams can be generated automatically during the build process,
433
+ eliminating the need for graphics editors or manual exports to specific formats.
434
+ This makes them *ideal for automated workflows* and consistent documentation across projects.
435
+
436
+ Asciidoctor Diagram supports a https://docs.asciidoctor.org/diagram-extension/latest/[wide range of text-based diagram types]
437
+ making it a versatile choice for creating diagrams directly within documentation.
438
+
439
+
440
+
441
+ === Ditaa
442
+
443
+ Ideal for converting ASCII art into diagrams, especially useful for quick sketches and block diagrams.
444
+
445
+ .Example of a Ditaa diagram illustrating the flow of processing in Asciidoctor Diagram, where a text document is converted through Asciidoctor with Ditaa to produce a PNG output, showcasing the transformation from plain text to visually structured output.
446
+ [ditaa,, svg]
447
+ ....
448
+ +-------------+
449
+ | Asciidoctor |-------+
450
+ | diagram | |
451
+ +-------------+ | PNG out
452
+ ^ |
453
+ | ditaa in |
454
+ | v
455
+ +--------+ +--------+----+ /---------------\
456
+ | |---+ Asciidoctor +--->| |
457
+ | Text | +-------------+ | Beautiful |
458
+ |Document| | !magic! | | Output |
459
+ | {d}| | | | |
460
+ +---+----+ +-------------+ \---------------/
461
+ : ^
462
+ | Lots of work |
463
+ +-----------------------------------+
464
+ ....
465
+
466
+ Check the AsciiDoc source of this page to see that the diagram is clearly recognizable even in the text.
467
+ This is a unique feature of Ditaa.
468
+
469
+
470
+ .Example of a table-style diagram in Ditaa, illustrating a 2x2 matrix layout with labeled cells and placeholder mathematical expressions, showcasing how different background colors can be applied to each cell.(Parameter: a=4, b=6);
471
+ [ditaa,, svg]
472
+ ....
473
+ +------+---------+
474
+ |cF00 |cFF0 |
475
+ | a² | a×b |
476
+ | | |
477
+ | | |
478
+ +------+---------+
479
+ |cFF0 |c0F0 |
480
+ | | |
481
+ | b×a | b² |
482
+ | | |
483
+ | | |
484
+ | | |
485
+ +------+---------+
486
+ ....
487
+
488
+
489
+
490
+ === PlantUML
491
+
492
+ Great for creating UML diagrams like class diagrams, sequence diagrams, and activity diagrams.
493
+
494
+ .Example of a class diagram in PlantUML, depicting a hierarchy where `DiagramBlock` and `BlockProcessor` classes are related, with `DiagramBlock` having subclasses `DitaaBlock` and `PlantUmlBlock`.
495
+ [plantuml, , svg]
496
+ ....
497
+ class BlockProcessor
498
+ class DiagramBlock
499
+ class DitaaBlock
500
+ class PlantUmlBlock
501
+
502
+ BlockProcessor <|-- DiagramBlock
503
+ DiagramBlock <|-- DitaaBlock
504
+ DiagramBlock <|-- PlantUmlBlock
505
+ ....
506
+
507
+ .Example of a sequence diagram in PlantUML, showing an interaction where Bob greets Alice with 'hello,' and Alice responds with 'hi.'
508
+ [plantuml,, format="svg", id="myDiagram", width="200px"]
509
+ ----
510
+ Bob->Alice : hello
511
+ Alice --> Bob : hi
512
+ ----
513
+
514
+
515
+
516
+ === Graphviz
517
+
518
+ Useful for directed and undirected graphs, including flowcharts, state diagrams, and dependency graphs.
519
+
520
+ .Example of a directed graph in Graphviz, illustrating nodes with connections, including a self-loop on node b and cyclical paths between nodes.
521
+ [graphviz,,svg]
522
+ ....
523
+ digraph g {
524
+ a -> b
525
+ b -> c
526
+ b -> d
527
+ b -> b
528
+ c -> d
529
+ d -> a
530
+ }
531
+ ....
532
+
533
+
534
+
535
+ === Lilypond
536
+
537
+ LilyPond is a music engraving program that enables users to create beautifully typeset sheet music through a text-based input system, focusing on producing high-quality, professional-looking scores suitable for publication.
538
+
539
+ // The output format SVG is not supported by LilyPond.
540
+ .Example of a melody in LilyPond notation, demonstrating a simple sequence of notes with pitches relative to the starting note c'.
541
+ [lilypond]
542
+ ....
543
+ \version "2.22.1"
544
+ \relative c' { f d f a d f e d cis a cis e a g f e }
545
+ ....
546
+
547
+
548
+
@@ -0,0 +1,194 @@
1
+ ---
2
+ layout: page
3
+ menu_label: Markdown
4
+ menu_position: 150
5
+ permalink: /markdown-showroom/
6
+ summary: "Explore the Markdown showroom: See Markdown's capabilities in this theme, including code, tables, lists, links, and quotes for clean, simple formatting."
7
+ ---
8
+ # Markdown showroom
9
+
10
+ Here are a few examples in Markdown.
11
+ While Markdown has significantly fewer features compared to other markup languages like AsciiDoc,
12
+ it still offers a simple and efficient way to write and format blog posts.
13
+ It's especially useful for quickly creating clean, readable content without much overhead.
14
+ Jekyll uses **Kramdown** as its Markdown processor.
15
+ Therefore, you can also use Kramdown syntax.
16
+
17
+ For more information, you can check out
18
+
19
+ * [The official Markdown syntax guide](https://daringfireball.net/projects/markdown/syntax)
20
+ * [Wikipedia article about Markdown](https://en.wikipedia.org/wiki/Markdown)
21
+ * [Kramdown Syntax](https://kramdown.gettalong.org/syntax.html)
22
+ * [Kramdown Quick Reference](https://kramdown.gettalong.org/quickref.html)
23
+ * [Kramdown Cheat Sheet](https://aoterodelaroza.github.io/devnotes/kramdown-cheatsheet/)
24
+
25
+
26
+
27
+ ## Source code listings
28
+
29
+ Python source code:
30
+
31
+ ```python
32
+ # Python code
33
+ def greet(name):
34
+ print(f"Hello, {name}!")
35
+
36
+ greet('World')
37
+ ```
38
+
39
+ Ruby code listings using Kramdown syntax:
40
+
41
+ ~~~
42
+ puts "Hello! What's your name?"
43
+ # gets user input and removes the newline
44
+ name = gets.chomp
45
+ puts "Hi, #{name}!"
46
+ ~~~
47
+ {: .language-ruby}
48
+
49
+
50
+ ~~~ ruby
51
+ # Define the function
52
+ def square(number)
53
+ number * number
54
+ end
55
+
56
+ # Use the function
57
+ puts "Enter a number to square:"
58
+ num = gets.chomp.to_i
59
+ result = square(num)
60
+
61
+ puts "The square of #{num} is #{result}"
62
+ ~~~
63
+
64
+
65
+
66
+
67
+ ## Text formatting
68
+
69
+ * Text with **strong** significance to me
70
+ * *Emphasized* text
71
+ * ***Combination*** of both
72
+ * You can also format parts of a word:
73
+ * **C**reate, **R**ead, **U**pdate, and **D**elete (CRUD)
74
+ * Counter*clock*wise
75
+ * `string`s
76
+ * ~~This is strikethrough text~~
77
+ * `monospace text`
78
+
79
+
80
+
81
+
82
+
83
+ ## Links
84
+
85
+ * <https://example.com>
86
+ * [Link to example.com](https://example.com)
87
+ * <mailto:test@example.com>
88
+ * [send a test message to example.com](mailto:test@example.com)
89
+
90
+
91
+
92
+
93
+
94
+ ## Tables
95
+
96
+ A simple table:
97
+
98
+ | Name | Age | City |
99
+ |------------------|-------|-------------|
100
+ | Max Mustermann | 30 | Berlin |
101
+ | Maria Musterfrau | 28 | München |
102
+ | John Doe | 45 | New York |
103
+
104
+
105
+
106
+ A table with alignment and some markdown features:
107
+
108
+ | Left | Center | Right |
109
+ |:--------------|:-------------:|--------------:|
110
+ | Text A | Text B | Text C |
111
+ | AAAAAAAAAAAAA | BBBBBBBBBBBBB | CCCCCCCCCCCCC |
112
+ | **Formatting** | _is_ | ***supported*** |
113
+ | Links | are also supported | [https://example.com](https://example.com) |
114
+
115
+ <!--
116
+ Cells in Markdown do not need to have the same width.
117
+ However, rows must not be separated by blank lines.
118
+ At the end of the table, there must be a blank line.
119
+ -->
120
+
121
+
122
+
123
+
124
+
125
+ ## Lists
126
+
127
+ ### Unordered
128
+
129
+ - Item 1
130
+ - Item 2
131
+ - Item 2.1
132
+ - Item 2.2
133
+ - Item 2.3
134
+ - Item 3
135
+
136
+ ### Numbered
137
+
138
+ 1. Numbered item 1
139
+ 2. Numbered item 2
140
+ 7. Numbered item 2.1
141
+ 6. Numbered item 2.2
142
+ 9. Numbered item 2.3
143
+ 666. Numbered item 3
144
+
145
+ ### Checklist
146
+
147
+ * [x] checked: `* [x]` (lower case x)
148
+ * [X] checked: `* [X]` (or upper case X)
149
+ - [x] checked: `- [x]`
150
+ - [ ] unchecked: `- [ ]`
151
+ * [ ] unchecked: `* [ ]`
152
+ * item without checkbox
153
+ * [ ] unchecked item on level 2: `* [ ]`
154
+ * [x] checked item on level 3: `* [x]`
155
+
156
+
157
+
158
+
159
+ ## Images
160
+
161
+ ![Alterntive Text for the image](/assets/images/tree-3822149_640.jpg "Title of the image.")
162
+
163
+
164
+
165
+
166
+
167
+ ## Quotes
168
+
169
+ > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
170
+ > Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
171
+ > Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
172
+ >
173
+ > Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
174
+
175
+
176
+
177
+
178
+
179
+ ## Glossary
180
+
181
+ Term 1
182
+ : Definition for Term 1.
183
+
184
+ Term 2
185
+ : Definition for Term 2.
186
+ Text can have multiple lines.
187
+ They can also contain lists ...
188
+ * item 1
189
+ * item 2
190
+ * item 3
191
+ > ... and they can also contain quotes.
192
+
193
+
194
+ : Another definition for Term 2.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-endless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.1
4
+ version: 0.15.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Boekhoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-11 00:00:00.000000000 Z
11
+ date: 2024-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll-asciidoc
@@ -112,12 +112,15 @@ files:
112
112
  - _includes/content_footer-usernames.html
113
113
  - _includes/function_list-pages.html
114
114
  - _includes/function_list-posts.html
115
+ - _includes/function_post-in-list-duplicate-tags.html
115
116
  - _includes/function_post-in-list-long.html
117
+ - _includes/function_post-in-list-recent.html
116
118
  - _includes/function_post-in-list-short.html
117
119
  - _includes/function_show-dates.html
118
120
  - _includes/function_show-prev-next-navigation.html
119
121
  - _includes/function_tag-cloud.html
120
122
  - _includes/function_tag-list.html
123
+ - _includes/function_tag.html
121
124
  - _layouts/default-minimal.html
122
125
  - _layouts/default.html
123
126
  - _layouts/html.html
@@ -154,6 +157,9 @@ files:
154
157
  - lib/jekyll-theme-endless.rb
155
158
  - lib/jekyll-theme-endless/generate-tagpages.rb
156
159
  - lib/jekyll-theme-endless/version.rb
160
+ - pages_examples/showroom-asciidoc-code.html
161
+ - pages_examples/showroom-asciidoc.adoc
162
+ - pages_examples/showroom-markdown.md
157
163
  homepage: https://gitlab.com/jekyll-theme-endless/jekyll-theme-endless.gitlab.io
158
164
  licenses:
159
165
  - MIT