# Code Blocks URL: /bengal/docs/build-sites/write/authoring/code-blocks/ Section: authoring -------------------------------------------------------------------------------- Code Blocks Note Note Do I need this? Yes when adding syntax-highlighted code to content. For multi-language tabs and theme configuration, see Code Blocks Reference. How to add syntax-highlighted code to your documentation. Basic Code Blocks Wrap code in triple backticks with a language identifier: ```python def hello(): print("Hello, World!") ``` Result: def hello(): print("Hello, World!") Supported Languages Bengal uses Rosettes for syntax highlighting—a modern, thread-safe highlighter designed for Python 3.14t free-threading. Rosettes supports 55+ languages: Common Systems JVM & .NET Data & Config Scripting Web & Templates Markup & Docs Functional Language Identifier Python python, py JavaScript javascript, js TypeScript typescript, ts Bash/Shell bash, sh, shell, zsh YAML yaml, yml JSON json TOML toml HTML html CSS css Markdown markdown, md Language Identifier Rust rust, rs Go go, golang C c, h C++ cpp, c++, cxx Zig zig Nim nim V v, vlang Mojo mojo, 🔥 Language Identifier Java java Kotlin kotlin, kt Scala scala, sc Groovy groovy, gradle Clojure clojure, clj Language Identifier SQL sql, mysql, postgresql GraphQL graphql, gql HCL/Terraform hcl, terraform, tf Dockerfile dockerfile, docker Nginx nginx INI ini, cfg, conf Protobuf protobuf, proto Prisma prisma CUE cue Pkl pkl Language Identifier Ruby ruby, rb PHP php Perl perl, pl Lua lua R r, rlang Julia julia, jl Elixir elixir, ex PowerShell powershell, ps1, pwsh Fish fish AWK awk, gawk Language Identifier SCSS/Sass scss, sass Vue vue Svelte svelte Jinja2 jinja2, jinja, j2 Liquid liquid, jekyll Handlebars handlebars, hbs Nunjucks nunjucks, njk Twig twig Language Identifier Diff diff, patch reStructuredText rst, restructuredtext AsciiDoc asciidoc, adoc LaTeX latex, tex MyST myst, mystmd Mermaid mermaid, mmd XML xml, xsl, svg HTTP http, https Regex regex, regexp Language Identifier Haskell haskell, hs OCaml ocaml, ml, reasonml Dart dart Swift swift WebAssembly wasm, wat CUDA cuda, cu Triton triton Stan stan Gleam gleam Cypher cypher, neo4j Tip Tip Languages not in the list are rendered as plain preformatted text with proper HTML escaping. Line Highlighting Draw attention to specific lines with {hl_lines="..."}: ```python {hl_lines="2"} def hello(): print("This line is highlighted!") return True ``` Highlight Multiple Lines {hl_lines="2 4"} # Lines 2 and 4 {hl_lines="2-5"} # Lines 2 through 5 {hl_lines="1 3-5 8"} # Lines 1, 3-5, and 8 Line Numbers Add line numbers for reference: ```python {linenos=true} def factorial(n): if n <= 1: return 1 return n * factorial(n - 1) ``` Start from a Specific Line ```python {linenos=true, linenostart=42} # This starts at line 42 def important_function(): pass ``` Include Code from Files Use literalinclude to include code directly from source files: :::{literalinclude} /path/to/file.py :language: python ::: Include Specific Lines :::{literalinclude} /path/to/file.py :language: python :start-line: 10 :end-line: 25 ::: With Line Numbers and Highlighting :::{literalinclude} /path/to/file.py :language: python :linenos: :emphasize-lines: 3,5 ::: Tip Tip Use literalinclude to keep documentation in sync with actual source code. When the source changes, your docs update automatically. Inline Code For inline code, use single backticks: Run `bengal build` to generate your site. Result: Run bengal build to generate your site. Code with Caption Add a caption to your code block: ```python :caption: Example: Hello World function def hello(): print("Hello, World!") ``` Diff Highlighting Show code changes with diff syntax: ```diff - old_function() + new_function() unchanged_line() ``` Console/Terminal Output For terminal sessions, use console or shell-session: ```console $ bengal build Building site... ✓ Built 42 pages in 1.2s ``` Best Practices Always specify a language for syntax highlighting Use literalinclude for code that must stay in sync with source Highlight the important lines to guide readers Keep code examples short and focused on one concept Add line numbers when referencing specific lines in text Info Seealso Code Blocks Reference — code-tabs and syntax themes Formatting Directives — literalinclude options -------------------------------------------------------------------------------- Metadata: - Author: lbliii - Word Count: 615 - Reading Time: 3 minutes