--- weight: 4 title: "Theme Documentation - Extended Shortcodes" date: 2020-03-03T16:29:41+08:00 lastmod: 2020-03-03T16:29:41+08:00 draft: false description: "uBlogger theme provides multiple shortcodes on top of built-in ones in Hugo." resources: - name: "featured-image" src: "featured-image.jpg" - name: "featured-image-preview" src: "featured-image-preview.jpg" tags: ["shortcodes"] categories: ["documentation"] --- **uBlogger** theme provides multiple shortcodes on top of built-in ones in Hugo. ## 1 style {{< version 0.2.0 changed >}} {{< admonition >}} Hugo **extended** version is necessary for `style` shortcode. {{< /admonition >}} `style` is a shortcode to insert custom style in your post. The `style` shortcode has two positional parameters. The **first** one is the custom style content, which supports nesting syntax in [:(fab fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) and `&` referring to this parent HTML element. And the **second** one is the tag name of the HTML element wrapping the content you want to change style, and whose default value is `div`. Example `style` input: ```markdown {{}} This is a **right-aligned** paragraph. {{}} ``` The rendered output looks like this: {{< style "text-align:right; strong{color:#00b1ff;}" >}} This is a **right-aligned** paragraph. {{< /style >}} ## 2 link {{< version 0.2.0 >}} `link` shortcode is an alternative to [Markdown link syntax](../basic-markdown-syntax#links). `link` shortcode can provide some other features and can be used in code blocks. {{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. The `link` shortcode has the following named parameters: * **href** *[required]* (**first** positional parameter) Destination of the link. * **content** *[optional]* (**second** positional parameter) Content of the link, default value is the value of **href** parameter. *Markdown or HTML format is supported.* * **title** *[optional]* (**third** positional parameter) `title` attribute of the HTML `a` tag, which will be shown when hovering on the link. * **class** *[optional]* `class` attribute of the HTML `a` tag. * **rel** *[optional]* Additional `rel` attributes of the HTML `a` tag. Example `link` input: ```markdown {{}} Or {{}} {{}} Or {{}} {{}} Or {{}} ``` The rendered output looks like this: * {{< link "https://assemble.io" >}} * {{< link "mailto:contact@revolunet.com" >}} * {{< link "https://assemble.io" Assemble >}} Example `link` input with a title: ```markdown {{}} Or {{}} ``` The rendered output looks like this (hover over the link, there should be a tooltip): {{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} ## 3 image {#image} {{< version 0.2.0 changed >}} `image` shortcode is an alternative to [`figure` shortcode](../theme-documentation-built-in-shortcodes#figure). `image` shortcode can take full advantage of the dependent libraries of [lazysizes](https://github.com/aFarkas/lazysizes) and [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js). {{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. The `image` shortcode has the following named parameters: * **src** *[required]* (**first** positional parameter) URL of the image to be displayed. * **alt** *[optional]* (**second** positional parameter) Alternate text for the image if the image cannot be displayed, default value is the value of **src** parameter. *Markdown or HTML format is supported.* * **caption** *[optional]* (**third** positional parameter) Image caption. *Markdown or HTML format is supported.* * **title** *[optional]* Image title that will be shown when hovering on the image. * **class** *[optional]* `class` attribute of the HTML `figure` tag. * **src_s** *[optional]* URL of the image thumbnail, used for lightgallery, default value is the value of **src** parameter. * **src_l** *[optional]* URL of the HD image, used for lightgallery, default value is the value of **src** parameter. * **height** *[optional]* `height` attribute of the image. * **width** *[optional]* `width` attribute of the image. * **linked** *[optional]* Whether the image needs to be hyperlinked, default value is `true`. * **rel** *[optional]* Additional `rel` attributes of the HTML `a` tag, if **linked** parameter is set to `true`. Example `image` input: ```markdown {{}} ``` The rendered output looks like this: {{< image src="/images/lighthouse.jpg" caption="Lighthouse (`image`)" src_s="/images/lighthouse-small.jpg" src_l="/images/lighthouse-large.jpg" >}} ## 4 admonition The `admonition` shortcode supports **12** types of banners to help you put notice in your page. *Markdown or HTML format in the content is supported.* {{< admonition >}} A **note** banner {{< /admonition >}} {{< admonition abstract >}} An **abstract** banner {{< /admonition >}} {{< admonition info >}} A **info** banner {{< /admonition >}} {{< admonition tip >}} A **tip** banner {{< /admonition >}} {{< admonition success >}} A **success** banner {{< /admonition >}} {{< admonition question >}} A **question** banner {{< /admonition >}} {{< admonition warning >}} A **warning** banner {{< /admonition >}} {{< admonition failure >}} A **failure** banner {{< /admonition >}} {{< admonition danger >}} A **danger** banner {{< /admonition >}} {{< admonition bug >}} A **bug** banner {{< /admonition >}} {{< admonition example >}} An **example** banner {{< /admonition >}} {{< admonition quote >}} A **quote** banner {{< /admonition >}} The `admonition` shortcode has the following named parameters: * **type** *[optional]* (**first** positional parameter) Type of the `admonition` banner, default value is `note`. * **title** *[optional]* (**second** positional parameter) Title of the `admonition` banner, default value is the value of **type** parameter. * **open** *[optional]* (**third** positional parameter) {{< version 0.2.0 changed >}} Whether the content will be expandable by default, default value is `true`. Example `admonition` input: ```markdown {{}} A **tip** banner {{}} Or {{}} A **tip** banner {{}} ``` The rendered output looks like this: {{< admonition tip "This is a tip" false >}} A **tip** banner {{< /admonition >}} ## 5 mermaid [mermaid](https://mermaidjs.github.io/) is a library helping you to generate diagram and flowcharts from text, in a similar manner as Markdown. Just insert your mermaid code in the `mermaid` shortcode and that’s it. ### 5.1 Flowchart {#flowchart} Example **flowchart** `mermaid` input: ```markdown {{}} graph LR; A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two] {{}} ``` The rendered output looks like this: {{< mermaid >}} graph LR; A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two] {{< /mermaid >}} ### 5.2 Sequence Diagram {#sequence-diagram} Example **sequence diagram** `mermaid` input: ```markdown {{}} sequenceDiagram participant Alice participant Bob Alice->>John: Hello John, how are you? loop Healthcheck John->John: Fight against hypochondria end Note right of John: Rational thoughts
prevail... John-->Alice: Great! John->Bob: How about you? Bob-->John: Jolly good! {{}} ``` The rendered output looks like this: {{< mermaid >}} sequenceDiagram participant Alice participant Bob Alice->>John: Hello John, how are you? loop Healthcheck John->John: Fight against hypochondria end Note right of John: Rational thoughts
prevail... John-->Alice: Great! John->Bob: How about you? Bob-->John: Jolly good! {{< /mermaid >}} ### 5.3 GANTT {#gantt} Example **GANTT** `mermaid` input: ```markdown {{}} gantt dateFormat YYYY-MM-DD title Adding GANTT diagram functionality to mermaid section A section Completed task :done, des1, 2014-01-06,2014-01-08 Active task :active, des2, 2014-01-09, 3d Future task : des3, after des2, 5d Future task2 : des4, after des3, 5d section Critical tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison :crit, done, after des1, 2d Create tests for parser :crit, active, 3d Future task in critical line :crit, 5d Create tests for renderer :2d Add to mermaid :1d {{}} ``` The rendered output looks like this: {{< mermaid >}} gantt dateFormat YYYY-MM-DD title Adding GANTT diagram functionality to mermaid section A section Completed task :done, des1, 2014-01-06,2014-01-08 Active task :active, des2, 2014-01-09, 3d Future task : des3, after des2, 5d Future task2 : des4, after des3, 5d section Critical tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison :crit, done, after des1, 2d Create tests for parser :crit, active, 3d Future task in critical line :crit, 5d Create tests for renderer :2d Add to mermaid :1d {{< /mermaid >}} ### 5.4 Class Diagram {#class-diagram} Example **class diagram** `mermaid` input: ```markdown {{}} classDiagram Class01 <|-- AveryLongClass : Cool Class03 *-- Class04 Class05 o-- Class06 Class07 .. Class08 Class09 --> C2 : Where am i? Class09 --* C3 Class09 --|> Class07 Class07 : equals() Class07 : Object[] elementData Class01 : size() Class01 : int chimp Class01 : int gorilla Class08 <--> C2: Cool label {{}} ``` The rendered output looks like this: {{< mermaid >}} classDiagram Class01 <|-- AveryLongClass : Cool Class03 *-- Class04 Class05 o-- Class06 Class07 .. Class08 Class09 --> C2 : Where am i? Class09 --* C3 Class09 --|> Class07 Class07 : equals() Class07 : Object[] elementData Class01 : size() Class01 : int chimp Class01 : int gorilla Class08 <--> C2: Cool label {{< /mermaid >}} ### 5.5 State Diagram {#state-diagram} Example **state diagram** `mermaid` input: ```markdown {{}} stateDiagram [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*] {{}} ``` The rendered output looks like this: {{< mermaid >}} stateDiagram [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*] {{< /mermaid >}} ### 5.6 Git Graph {#git-graph} Example **git graph** `mermaid` input: ```markdown {{}} gitGraph: options { "nodeSpacing": 100, "nodeRadius": 10 } end commit branch newbranch checkout newbranch commit commit checkout master commit commit merge newbranch {{}} ``` The rendered output looks like this: {{< mermaid >}} gitGraph: options { "nodeSpacing": 100, "nodeRadius": 10 } end commit branch newbranch checkout newbranch commit commit checkout master commit commit merge newbranch {{< /mermaid >}} ### 5.7 Pie {#pie} Example **pie** `mermaid` input: ```markdown {{}} pie "Dogs" : 386 "Cats" : 85 "Rats" : 15 {{}} ``` The rendered output looks like this: {{< mermaid >}} pie "Dogs" : 386 "Cats" : 85 "Rats" : 15 {{< /mermaid >}} ## 6 echarts [ECharts](https://echarts.apache.org/) is a library helping you to generate interactive data visualization. uBlogger uses echarts version 5. The basic chart types ECharts supports include [line series](https://echarts.apache.org/en/option.html#series-line), [bar series](https://echarts.apache.org/en/option.html#series-line), [scatter series](https://echarts.apache.org/en/option.html#series-scatter), [pie charts](https://echarts.apache.org/en/option.html#series-pie), [candle-stick series](https://echarts.apache.org/en/option.html#series-candlestick), [boxplot series](https://echarts.apache.org/en/option.html#series-boxplot) for statistics, [map series](https://echarts.apache.org/en/option.html#series-map), [heatmap series](https://echarts.apache.org/en/option.html#series-heatmap), [lines series](https://echarts.apache.org/en/option.html#series-lines) for directional information, [graph series](https://echarts.apache.org/en/option.html#series-graph) for relationships, [treemap series](https://echarts.apache.org/en/option.html#series-treemap), [sunburst series](https://echarts.apache.org/en/option.html#series-sunburst), [parallel series](https://echarts.apache.org/en/option.html#series-parallel) for multi-dimensional data, [funnel series](https://echarts.apache.org/en/option.html#series-funnel), [gauge series](https://echarts.apache.org/en/option.html#series-gauge). And it's extremely easy to create a combinition of them with ECharts. See the [echarts gallery](https://echarts.apache.org/examples/en/index.html) for inspiration on what you can do with echarts. Just insert your ECharts option in `JSON`/`YAML`/`TOML` format in the `echarts` shortcode and that’s it. Example `echarts` input in `JSON` format: ```json {{}} { "title": { "text": "Summary Line Chart" }, "tooltip": { "trigger": "axis" }, "legend": { "show": true, "right": "5%" }, "grid": { "left": "3%", "right": "4%", "bottom": "3%", "containLabel": true }, "toolbox": { "feature": { "saveAsImage": {} } }, "xAxis": { "type": "category", "boundaryGap": false, "data": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] }, "yAxis": { "type": "value" }, "series": [ { "name": "Email", "type": "line", "stack": "total", "data": [120, 132, 101, 134, 90, 230, 210] }, { "name": "Affiliate", "type": "line", "stack": "total", "data": [220, 182, 191, 234, 290, 330, 310] }, { "name": "Video", "type": "line", "stack": "total", "data": [150, 232, 201, 154, 190, 330, 410] }, { "name": "Direct", "type": "line", "stack": "total", "data": [320, 332, 301, 334, 390, 330, 320] }, { "name": "Search Engine", "type": "line", "stack": "total", "data": [820, 932, 901, 934, 1290, 1330, 1320] } ] } {{}} ``` The same in `YAML` format: ```yaml {{}} title: text: Summary Line Chart tooltip: trigger: axis legend: show: true right: 5% grid: left: 3% right: 4% bottom: 3% containLabel: true toolbox: feature: saveAsImage: {} xAxis: type: category boundaryGap: false data: - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday - Sunday yAxis: type: value series: - name: Email type: line stack: total data: - 120 - 132 - 101 - 134 - 90 - 230 - 210 - name: Affiliate type: line stack: total data: - 220 - 182 - 191 - 234 - 290 - 330 - 310 - name: Video type: line stack: total data: - 150 - 232 - 201 - 154 - 190 - 330 - 410 - name: Direct type: line stack: total data: - 320 - 332 - 301 - 334 - 390 - 330 - 320 - name: Search Engine type: line stack: total data: - 820 - 932 - 901 - 934 - 1290 - 1330 - 1320 {{}} ``` The same in `TOML` format: ```toml {{}} [title] text = 'Summary Line Chart' [tooltip] trigger = 'axis' [legend] show = true right = '5%' [grid] left = '3%' right = '4%' bottom = '3%' containLabel = true [toolbox.feature.saveAsImage] [xAxis] type = 'category' boundaryGap = false data = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', ] [yAxis] type = 'value' [[series]] name = 'Email' type = 'line' stack = 'total' data = [ 120, 132, 101, 134, 90, 230, 210, ] [[series]] name = 'Affiliate' type = 'line' stack = 'total' data = [ 220, 182, 191, 234, 290, 330, 310, ] [[series]] name = 'Video' type = 'line' stack = 'total' data = [ 150, 232, 201, 154, 190, 330, 410, ] [[series]] name = 'Direct' type = 'line' stack = 'total' data = [ 320, 332, 301, 334, 390, 330, 320, ] [[series]] name = 'Search Engine' type = 'line' stack = 'total' data = [ 820, 932, 901, 934, 1290, 1330, 1320, ] {{}} ``` The rendered output looks like this: {{< echarts >}} { "title": { "text": "Summary Line Chart" }, "tooltip": { "trigger": "axis" }, "legend": { "show": true, "right": "5%" }, "grid": { "left": "3%", "right": "4%", "bottom": "3%", "containLabel": true }, "toolbox": { "feature": { "saveAsImage": {} } }, "xAxis": { "type": "category", "boundaryGap": false, "data": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] }, "yAxis": { "type": "value" }, "series": [ { "name": "Email", "type": "line", "stack": "total", "data": [120, 132, 101, 134, 90, 230, 210] }, { "name": "Affiliate", "type": "line", "stack": "total", "data": [220, 182, 191, 234, 290, 330, 310] }, { "name": "Video", "type": "line", "stack": "total", "data": [150, 232, 201, 154, 190, 330, 410] }, { "name": "Direct", "type": "line", "stack": "total", "data": [320, 332, 301, 334, 390, 330, 320] }, { "name": "Search Engine", "type": "line", "stack": "total", "data": [820, 932, 901, 934, 1290, 1330, 1320] } ] } {{< /echarts >}} Pro tip: build your graphs faster by picking an example from the [echarts gallery](https://echarts.apache.org/examples/en/index.html), and use the interactive editor to quickly adapt it to your desired graph. When you're done, you can copy the resulting graph specification and paste it over into the uBlogger shortcode. Just make sure you correct the JSON syntax by: 1. Removing the `option =` prefix to the graph specification. 1. Removing the `;` suffix to the graph specification. 1. Enclosing all symbols in quotes in the graph specification (e.g. `xAxis:` → `"xAxis":`). The `echarts` shortcode has also the following named parameters: * **width** *[optional]* (**first** positional parameter) {{< version 0.2.0 >}} Width of the data visualization, default value is `100%`. * **height** *[optional]* (**second** positional parameter) {{< version 0.2.0 >}} Height of the data visualization, default value is `30rem`. ## 7 mapbox {{< version 0.2.0 >}} [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) is a JavaScript library that uses WebGL to render interactive maps from [vector tiles](https://docs.mapbox.com/help/glossary/vector-tiles/) and [Mapbox styles](https://docs.mapbox.com/mapbox-gl-js/style-spec/). The `mapbox` shortcode has the following named parameters to use Mapbox GL JS: * **lng** *[required]* (**first** positional parameter) Longitude of the inital centerpoint of the map, measured in degrees. * **lat** *[required]* (**second** positional parameter) Latitude of the inital centerpoint of the map, measured in degrees. * **zoom** *[optional]* (**third** positional parameter) The initial zoom level of the map, default value is `10`. * **marked** *[optional]* (**fourth** positional parameter) Whether to add a marker at the inital centerpoint of the map, default value is `true`. * **light-style** *[optional]* (**fifth** positional parameter) Style for the light theme, default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). * **dark-style** *[optional]* (**sixth** positional parameter) Style for the dark theme, default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). * **navigation** *[optional]* Whether to add [NavigationControl](https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). * **geolocate** *[optional]* Whether to add [GeolocateControl](https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). * **scale** *[optional]* Whether to add [ScaleControl](https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). * **fullscreen** *[optional]* Whether to add [FullscreenControl](https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). * **width** *[optional]* Width of the map, default value is `100%`. * **height** *[optional]* Height of the map, default value is `20rem`. Example simple `mapbox` input: ```markdown {{}} Or {{}} ``` The rendered output looks like this: {{< mapbox 121.485 31.233 12 >}} Example `mapbox` input with the custom style: ```markdown {{}} Or {{}} ``` The rendered output looks like this: {{< mapbox -122.252 37.453 10 false "mapbox://styles/mapbox/navigation-preview-day-v4?optimize=true" "mapbox://styles/mapbox/navigation-preview-night-v4?optimize=true" >}} ## 8 music The `music` shortcode embeds a responsive music player based on [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS). There are three ways to use it the `music` shortcode. ### 8.1 Custom Music URL {#custom-music-url} {{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. The `music` shortcode has the following named parameters by custom music URL: * **server** *[required]* URL of the custom music. * **name** *[optional]* Name of the custom music. * **artist** *[optional]* Artist of the custom music. * **cover** *[required]* URL of the custom music cover. Example `music` input by custom music URL: ```markdown {{}} ``` The rendered output looks like this: {{< music url="/music/Wavelength.mp3" name=Wavelength artist=oldmanyoung cover="/images/Wavelength.jpg" >}} ### 8.2 Music Platform URL Automatic Identification {#automatic-identification} The `music` shortcode has one named parameter by music platform URL automatic identification: * **auto** *[required]* (**first** positional parameter) URL of the music platform URL for automatic identification, which supports `netease`, `tencent` and `xiami` music platform. Example `music` input by music platform URL automatic identification: ```markdown {{}} Or {{}} ``` The rendered output looks like this: {{< music auto="https://music.163.com/#/playlist?id=60198" >}} ### 8.3 Custom Server, Type and ID {#custom-server} The `music` shortcode has the following named parameters by custom music platform: * **server** *[required]* (**first** positional parameter) [`netease`, `tencent`, `kugou`, `xiami`, `baidu`] Music platform. * **type** *[required]* (**second** positional parameter) [`song`, `playlist`, `album`, `search`, `artist`] Type of the music. * **id** *[required]* (**third** positional parameter) Song ID, or playlist ID, or album ID, or search keyword, or artist ID. Example `music` input by custom music platform: ```markdown {{}} Or {{}} ``` The rendered output looks like this: {{< music netease song 1868553 >}} ### 8.4 Other Parameters {#other-parameters} The `music` shortcode has other named parameters applying to the above three ways: * **theme** *[optional]* {{< version 0.2.0 changed >}} Main color of the music player, default value is `#448aff`. * **fixed** *[optional]* Whether to enable fixed mode, default value is `false`. * **mini** *[optional]* Whether to enable mini mode, default value is `false`. * **autoplay** *[optional]* Whether to autoplay music, default value is `false`. * **volume** *[optional]* Default volume when the player is first opened, which will be remembered in the browser, default value is `0.7`. * **mutex** *[optional]* Whether to pause other players when this player starts playing, default value is `true`. The `music` shortcode has the following named parameters only applying to the type of music list: * **loop** *[optional]* [`all`, `one`, `none`] Loop mode of the music list, default value is `none`. * **order** *[optional]* [`list`, `random`] Play order of the music list, default value is `list`. * **list-folded** *[optional]* Whether the music list should be folded at first, default value is `false`. * **list-max-height** *[optional]* Max height of the music list, default value is `340px`. ## 9 bilibili {{< version 0.2.0 changed >}} The `bilibili` shortcode embeds a responsive video player for bilibili videos. When the video only has one part, only the BV `id` of the video is required, e.g.: ```code https://www.bilibili.com/video/BV1Sx411T7QQ ``` Example `bilibili` input: ```markdown {{}} Or {{}} ``` The rendered output looks like this: {{< bilibili id=BV1Sx411T7QQ >}} When the video has multiple parts, in addition to the BV `id` of the video, `p` is also required, whose default value is `1`, e.g.: ```code https://www.bilibili.com/video/BV1TJ411C7An?p=3 ``` Example `bilibili` input with `p`: ```markdown {{}} Or {{}} ``` The rendered output looks like this: {{< bilibili id=BV1TJ411C7An p=3 >}} ## 10 typeit The `typeit` shortcode provides typing animation based on [TypeIt](https://typeitjs.com/). Just insert your content in the `typeit` shortcode and that’s it. ### 10.1 Simple Content {#simple-content} Simple content is allowed in `Markdown` format and **without** rich block content such as images and more... Example `typeit` input: The rendered output looks like this: Alternatively, you can use custom **HTML tags**. Example `typeit` input with `h4` tag: The rendered output looks like this: ### 10.2 Code Content {#code-content} Code content is allowed and will be highlighted by named parameter `code` for the type of code language. Example `typeit` input with `code`: The rendered output looks like this: ### 10.3 Group Content {#group-content} All typing animations start at the same time by default. But sometimes you may want to start a set of `typeit` contents in order. A set of `typeit` contents with the same value of named parameter `group` will start typing animation in sequence. Example `typeit` input with `group`: The rendered output looks like this: ## 11 script {{< version 0.2.8 >}} `script` is a shortcode to insert custom **:(fab fa-js fa-fw): Javascript** in your post. {{< admonition >}} The script content can be guaranteed to be executed in order after all third-party libraries are loaded. So you are free to use third-party libraries. {{< /admonition >}} Example `script` input: ```markdown {{}} console.log('Hello uBlogger!'); {{}} ``` You can see the output in the console of the developer tool. {{< script >}} console.log('Hello uBlogger!'); {{< /script >}}