# formatting URL: /api/roles/builtins/formatting/ Section: builtins -------------------------------------------------------------------------------- formatting - Patitas window.BENGAL_THEME_DEFAULTS = { appearance: 'light', palette: 'brown-bengal' }; window.Bengal = window.Bengal || {}; window.Bengal.enhanceBaseUrl = '/patitas/assets/js/enhancements'; window.Bengal.watchDom = true; window.Bengal.debug = false; window.Bengal.enhanceUrls = { 'toc': '/patitas/assets/js/enhancements/toc.632a9783.js', 'docs-nav': '/patitas/assets/js/enhancements/docs-nav.57e4b129.js', 'tabs': '/patitas/assets/js/enhancements/tabs.aac9e817.js', 'lightbox': '/patitas/assets/js/enhancements/lightbox.1ca22aa1.js', 'interactive': '/patitas/assets/js/enhancements/interactive.fc077855.js', 'mobile-nav': '/patitas/assets/js/enhancements/mobile-nav.d991657f.js', 'action-bar': '/patitas/assets/js/enhancements/action-bar.d62417f4.js', 'copy-link': '/patitas/assets/js/enhancements/copy-link.7d9a5c29.js', 'data-table': '/patitas/assets/js/enhancements/data-table.1f5bc1eb.js', 'lazy-loaders': '/patitas/assets/js/enhancements/lazy-loaders.a5c38245.js', 'holo': '/patitas/assets/js/enhancements/holo.ee13c841.js', 'link-previews': '/patitas/assets/js/enhancements/link-previews.8d906535.js' }; (function () { try { var defaults = window.BENGAL_THEME_DEFAULTS || { appearance: 'system', palette: '' }; var defaultAppearance = defaults.appearance; if (defaultAppearance === 'system') { defaultAppearance = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; } var storedTheme = localStorage.getItem('bengal-theme'); var storedPalette = localStorage.getItem('bengal-palette'); var theme = storedTheme ? (storedTheme === 'system' ? defaultAppearance : storedTheme) : defaultAppearance; var palette = storedPalette ?? defaults.palette; document.documentElement.setAttribute('data-theme', theme); if (palette) { document.documentElement.setAttribute('data-palette', palette); } } catch (e) { document.documentElement.setAttribute('data-theme', 'light'); } })(); { "prerender": [ { "where": { "and": [ { "href_matches": "/docs/*" }, { "not": { "selector_matches": "[data-external], [target=_blank], .external" } } ] }, "eagerness": "conservative" } ], "prefetch": [ { "where": { "and": [ { "href_matches": "/*" }, { "not": { "selector_matches": "[data-external], [target=_blank], .external" } } ] }, "eagerness": "conservative" } ] } Skip to main content Magnifying Glass ESC Recent Clear Magnifying Glass No results for "" Start typing to search... ↑↓ Navigate ↵ Open ESC Close Powered by Lunr ฅᨐฅ DocumentationArrow ClockwiseGet StartedCodeSyntaxDirectivesStarburstExtendingBookmarkReferenceInfoAboutTroubleshootingReleasesDevGitHubPatitas API Reference Magnifying Glass Search ⌘K Palette Appearance Chevron Down Mode Monitor System Sun Light Moon Dark Palette Snow Lynx Brown Bengal Silver Bengal Charcoal Bengal Blue Bengal List ฅᨐฅ Magnifying Glass Search X Close Documentation Caret Down Arrow Clockwise Get Started Code Syntax Directives Starburst Extending Bookmark Reference Info About Troubleshooting Releases Dev Caret Down GitHub Patitas API Reference Palette Appearance Chevron Down Mode Monitor System Sun Light Moon Dark Palette Snow Lynx Brown Bengal Silver Bengal Charcoal Bengal Blue Bengal Patitas API Reference Caret Right Directives Caret Right Builtins admonition container dropdown tabs contracts decorator options protocol registry Caret Right Lexer Caret Right Classifiers directive fence footnote heading html link_ref list quote thematic Caret Right Scanners block directive fence html core modes Caret Right Parsing Caret Right Blocks Caret Right List blank_line indent item_blocks marker mixin nested trace types core directive footnote table Caret Right Inline core emphasis links match_registry special tokens charsets containers token_nav Caret Right Plugins autolinks footnotes math strikethrough table task_lists Caret Right Renderers html Caret Right Roles Caret Right Builtins formatting icons math reference protocol registry Caret Right Utils hashing logger text errors highlighting icons location nodes parser patitas protocols stringbuilder tokens RolesBuiltins ᗢ Caret Down Link Copy URL External Open LLM text Copy Copy LLM text Share with AI Ask Claude Ask ChatGPT Ask Gemini Ask Copilot Module roles.builtins.formatting Formatting roles for inline styling. Provides roles for common inline formatting: kbd: Keyboard shortcuts abbr: Abbreviations with expansion sub: Subscript sup: Superscript Example: Press Ctrl+C to copy. The HTML (HyperText Markup Language) standard. H2O is water. E = mc2. 4Classes Classes KbdRole 4 ▼ Handler for {kbd}`key` role. Renders keyboard shortcuts with proper semantics. Syntax: {kbd}`… Handler for key role. Renders keyboard shortcuts with proper semantics. Syntax: {kbd}`Ctrl+C` - Single shortcut {kbd}`Ctrl+Shift+P` - Multiple modifiers Thread Safety: Stateless handler. Safe for concurrent use. Attributes Name Type Description names ClassVar[tuple[str, ...]] — token_type ClassVar[str] — Methods parse 3 Role ▼ Parse kbd role content. def parse(self, name: str, content: str, location: SourceLocation) -> Role Parameters Name Type Description name — content — location — Returns Role render 2 ▼ Render keyboard shortcut. Wraps each key in tags for proper semantics. Handle… def render(self, node: Role, sb: StringBuilder) -> None Render keyboard shortcut. Wraps each key in tags for proper semantics. Handles + as key separator. Parameters Name Type Description node — sb — AbbrRole 4 ▼ Handler for {abbr}`ABBR (expansion)` role. Renders abbreviations with title attribute for expansio… Handler for ABBR (expansion) role. Renders abbreviations with title attribute for expansion. Syntax: {abbr}`HTML (HyperText Markup Language)` Thread Safety: Stateless handler. Safe for concurrent use. Attributes Name Type Description names ClassVar[tuple[str, ...]] — token_type ClassVar[str] — Methods parse 3 Role ▼ Parse abbr role content. Extracts abbreviation and expansion from "ABBR (expan… def parse(self, name: str, content: str, location: SourceLocation) -> Role Parse abbr role content. Extracts abbreviation and expansion from "ABBR (expansion)" format. Parameters Name Type Description name — content — location — Returns Role render 2 ▼ Render abbreviation with title. def render(self, node: Role, sb: StringBuilder) -> None Parameters Name Type Description node — sb — SubRole 4 ▼ Handler for {sub}`text` role. Renders subscript text. Syntax: H{sub}`2`O Thread Safety: … Handler for text role. Renders subscript text. Syntax: H{sub}`2`O Thread Safety: Stateless handler. Safe for concurrent use. Attributes Name Type Description names ClassVar[tuple[str, ...]] — token_type ClassVar[str] — Methods parse 3 Role ▼ Parse sub role content. def parse(self, name: str, content: str, location: SourceLocation) -> Role Parameters Name Type Description name — content — location — Returns Role render 2 ▼ Render subscript. def render(self, node: Role, sb: StringBuilder) -> None Parameters Name Type Description node — sb — SupRole 4 ▼ Handler for {sup}`text` role. Renders superscript text. Syntax: E = mc{sup}`2` Thread Safety… Handler for text role. Renders superscript text. Syntax: E = mc{sup}`2` Thread Safety: Stateless handler. Safe for concurrent use. Attributes Name Type Description names ClassVar[tuple[str, ...]] — token_type ClassVar[str] — Methods parse 3 Role ▼ Parse sup role content. def parse(self, name: str, content: str, location: SourceLocation) -> Role Parameters Name Type Description name — content — location — Returns Role render 2 ▼ Render superscript. def render(self, node: Role, sb: StringBuilder) -> None Parameters Name Type Description node — sb — ← Previous builtins Next → icons List © 2026 Patitas built in ᓚᘏᗢ { "linkPreviews": { "enabled": true, "hoverDelay": 200, "hideDelay": 150, "showSection": true, "showReadingTime": true, "showWordCount": true, "showDate": true, "showTags": true, "maxTags": 3, "includeSelectors": [".prose"], "excludeSelectors": ["nav", ".toc", ".breadcrumb", ".pagination", ".card", "[class*='-card']", ".tab-nav", "[class*='-widget']", ".child-items", ".content-tiles"], "allowedHosts": [], "allowedSchemes": ["https"], "hostFailureThreshold": 3 } } window.BENGAL_LAZY_ASSETS = { tabulator: '/patitas/assets/js/tabulator.min.js', dataTable: '/patitas/assets/js/data-table.js', mermaidToolbar: '/patitas/assets/js/mermaid-toolbar.9de5abba.js', mermaidTheme: '/patitas/assets/js/mermaid-theme.344822c5.js', graphMinimap: '/patitas/assets/js/graph-minimap.ff04e939.js', graphContextual: '/patitas/assets/js/graph-contextual.355458ba.js' }; window.BENGAL_ICONS = { close: '/patitas/assets/icons/close.911d4fe1.svg', enlarge: '/patitas/assets/icons/enlarge.652035e5.svg', copy: '/patitas/assets/icons/copy.3d56e945.svg', 'download-svg': '/patitas/assets/icons/download.04f07e1b.svg', 'download-png': '/patitas/assets/icons/image.c34dfd40.svg', 'zoom-in': '/patitas/assets/icons/zoom-in.237b4a83.svg', 'zoom-out': '/patitas/assets/icons/zoom-out.38857c77.svg', reset: '/patitas/assets/icons/reset.d26dba29.svg' }; Arrow Up -------------------------------------------------------------------------------- Metadata: - Word Count: 1027 - Reading Time: 5 minutes