[{"data":1,"prerenderedAt":75},["Reactive",2],{"blog-post-markdown-text-wrapping-line-length-management-complete-guide":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":49,"related":50},"markdown-text-wrapping-line-length-management-complete-guide","Markdown Text Wrapping and Line Length Management: Complete Guide for Professional Documentation and Cross-Platform Compatibility","Master Markdown text wrapping, line length control, and formatting strategies for professional documentation. Learn automatic wrapping, manual breaks, editor configuration, and cross-platform compatibility techniques.","Markdown text wrapping and line length management are crucial for creating readable, maintainable documentation that renders consistently across different platforms, editors, and display…","2025-11-05","Tutorial","Matthew Rathbone","markdown text wrapping, line length markdown, markdown line breaks, text formatting, markdown editors, documentation standards, text width control, markdown best practices",20,"\u003Cp>Markdown text wrapping and line length management are crucial for creating readable, maintainable documentation that renders consistently across different platforms, editors, and display environments. Professional text formatting combines automated wrapping strategies, manual break techniques, and editor-specific configurations to ensure optimal readability while maintaining version control compatibility and collaborative editing workflows.\u003C/p>\n\u003Ch2 id=\"why-master-text-wrapping-and-line-length\">Why Master Text Wrapping and Line Length?\u003C/h2>\n\u003Cp>Professional text wrapping management provides essential benefits for documentation quality and maintainability:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Readability Optimization\u003C/strong>: Proper line lengths enhance reading comprehension and reduce eye fatigue\u003C/li>\n\u003Cli>\u003Cstrong>Version Control Clarity\u003C/strong>: Consistent line breaks improve diff readability and merge conflict resolution\u003C/li>\n\u003Cli>\u003Cstrong>Platform Consistency\u003C/strong>: Standardized wrapping ensures content displays properly across different rendering engines\u003C/li>\n\u003Cli>\u003Cstrong>Editor Compatibility\u003C/strong>: Proper formatting works seamlessly across various Markdown editors and IDEs\u003C/li>\n\u003Cli>\u003Cstrong>Collaborative Editing\u003C/strong>: Consistent line length standards facilitate team collaboration and review processes\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"foundation-text-wrapping-concepts\">Foundation Text Wrapping Concepts\u003C/h2>\n\u003Ch3 id=\"understanding-line-length-standards\">Understanding Line Length Standards\u003C/h3>\n\u003Cp>Industry-standard line length guidelines for different content types:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Line Length Standards by Content Type\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Documentation Standards\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Technical Documentation**\u003C/span>: 72-80 characters per line\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**README Files**\u003C/span>: 72 characters per line (GitHub standard)\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Code Comments**\u003C/span>: 72-80 characters per line\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Email Content**\u003C/span>: 72 characters per line (RFC 2822)\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Academic Papers**\u003C/span>: 65-75 characters per line\n\n\u003Cspan class=\"hljs-section\">## Platform-Specific Guidelines\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**GitHub Markdown**\u003C/span>: 80 characters recommended\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**GitLab Markdown**\u003C/span>: 72-80 characters\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Confluence**\u003C/span>: No strict limit, but 80 characters preferred\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Notion**\u003C/span>: Flexible, adapts to container width\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Jekyll/Hugo**\u003C/span>: 80 characters recommended\n\n\u003Cspan class=\"hljs-section\">## Readability Research\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Optimal Reading**\u003C/span>: 45-75 characters per line\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Web Content**\u003C/span>: 50-60 characters per line for optimal readability\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Print Media**\u003C/span>: 65 characters per line traditional standard\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Mobile Devices**\u003C/span>: Flexible wrapping based on screen width\n\u003C/code>\u003C/pre>\u003Ch3 id=\"hard-vs-soft-line-breaks\">Hard vs Soft Line Breaks\u003C/h3>\n\u003Cp>Understanding the difference between hard and soft line breaks in Markdown:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Hard vs Soft Line Breaks Explained\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Hard Line Breaks (Manual)\u003C/span>\nHard breaks force a line break at a specific point:\n\nMethod 1: Two trailing spaces\nThis line ends with two spaces  \nThis creates a hard line break\n\nMethod 2: Backslash at line end\nThis line ends with a backslash\\\nThis also creates a hard line break\n\nMethod 3: HTML break tag\nThis line uses HTML\u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">br\u003C/span>&gt;\u003C/span>\u003C/span>\nThis creates a hard line break\n\n\u003Cspan class=\"hljs-section\">## Soft Line Breaks (Automatic)\u003C/span>\nSoft breaks allow text to flow naturally:\n\nThis is a long line of text that will wrap naturally based on the \ncontainer width and rendering engine settings without forcing \nspecific break points in the content flow.\n\n\u003Cspan class=\"hljs-section\">## Paragraph Breaks\u003C/span>\nParagraph breaks require a blank line:\n\nThis is the first paragraph with content that flows naturally\nacross multiple lines without paragraph separation.\n\nThis is the second paragraph, separated by a blank line from\nthe first paragraph, creating proper paragraph spacing.\n\n\u003Cspan class=\"hljs-section\">## When to Use Each Type\u003C/span>\n\n\u003Cspan class=\"hljs-section\">### Use Hard Line Breaks For:\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Poetry and verse formatting\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Addresses and contact information\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Step-by-step instructions\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Lists with specific formatting needs\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Technical specifications requiring exact layout\n\n\u003Cspan class=\"hljs-section\">### Use Soft Line Breaks For:\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Regular prose and documentation\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Blog posts and articles\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> General content that should adapt to different screen sizes\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Collaborative documents where line endings may vary\n\u003C/code>\u003C/pre>\u003Ch2 id=\"editor-configuration-strategies\">Editor Configuration Strategies\u003C/h2>\n\u003Ch3 id=\"visual-studio-code-configuration\">Visual Studio Code Configuration\u003C/h3>\n\u003Cp>Comprehensive VS Code setup for Markdown text wrapping:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-json\">\u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;editor.wordWrap&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;wordWrapColumn&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;editor.wordWrapColumn&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-number\">80\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;editor.rulers&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-punctuation\">[\u003C/span>\u003Cspan class=\"hljs-number\">72\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span> \u003Cspan class=\"hljs-number\">80\u003C/span>\u003Cspan class=\"hljs-punctuation\">]\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;editor.formatOnSave&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;markdown.preview.breaks&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;markdown.preview.linkify&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \n  \u003Cspan class=\"hljs-attr\">&quot;[markdown]&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.wordWrap&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;wordWrapColumn&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.wordWrapColumn&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-number\">80\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.quickSuggestions&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n      \u003Cspan class=\"hljs-attr\">&quot;comments&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;off&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n      \u003Cspan class=\"hljs-attr\">&quot;strings&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;off&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span> \n      \u003Cspan class=\"hljs-attr\">&quot;other&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;off&quot;\u003C/span>\n    \u003Cspan class=\"hljs-punctuation\">}\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.minimap.enabled&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.lineNumbers&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;on&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.renderWhitespace&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;boundary&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.insertSpaces&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.detectIndentation&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;editor.trimAutoWhitespace&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;files.trimTrailingWhitespace&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\n  \u003Cspan class=\"hljs-punctuation\">}\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n\n  \u003Cspan class=\"hljs-attr\">&quot;rewrap.wrappingColumn&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-number\">80\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;rewrap.wholeComment&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;rewrap.reformat&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n  \n  \u003Cspan class=\"hljs-attr\">&quot;markdownlint.config&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;MD013&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n      \u003Cspan class=\"hljs-attr\">&quot;line_length&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-number\">80\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n      \u003Cspan class=\"hljs-attr\">&quot;code_blocks&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n      \u003Cspan class=\"hljs-attr\">&quot;tables&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n      \u003Cspan class=\"hljs-attr\">&quot;headings&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">false\u003C/span>\u003C/span>\n    \u003Cspan class=\"hljs-punctuation\">}\u003C/span>\n  \u003Cspan class=\"hljs-punctuation\">}\u003C/span>\n\u003Cspan class=\"hljs-punctuation\">}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"vimneovim-text-wrapping-configuration\">Vim/Neovim Text Wrapping Configuration\u003C/h3>\n\u003Cp>Professional Vim setup for Markdown text formatting:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-vim\">\u003Cspan class=\"hljs-comment\">&quot; .vimrc or init.vim - Markdown text wrapping configuration\u003C/span>\n\n\u003Cspan class=\"hljs-comment\">&quot; General text formatting settings\u003C/span>\n\u003Cspan class=\"hljs-keyword\">set\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">80\u003C/span>\n\u003Cspan class=\"hljs-keyword\">set\u003C/span> colorcolumn=\u003Cspan class=\"hljs-number\">72\u003C/span>,\u003Cspan class=\"hljs-number\">80\u003C/span>\n\u003Cspan class=\"hljs-keyword\">set\u003C/span> wrap\n\u003Cspan class=\"hljs-keyword\">set\u003C/span> linebreak\n\u003Cspan class=\"hljs-keyword\">set\u003C/span> showbreak=↪\\ \n\u003Cspan class=\"hljs-keyword\">set\u003C/span> breakindent\n\u003Cspan class=\"hljs-keyword\">set\u003C/span> breakindentopt=shif\u003Cspan class=\"hljs-variable\">t:2\u003C/span>\n\n\u003Cspan class=\"hljs-comment\">&quot; Markdown-specific settings\u003C/span>\n\u003Cspan class=\"hljs-keyword\">augroup\u003C/span> MarkdownSettings\n  autocmd!\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">80\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> colorcolumn=\u003Cspan class=\"hljs-number\">72\u003C/span>,\u003Cspan class=\"hljs-number\">80\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> wrap\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> linebreak\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> conceallevel=\u003Cspan class=\"hljs-number\">2\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> concealcursor=n\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> spell spelllang=en_us\n  \u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> \u003Cspan class=\"hljs-built_in\">complete\u003C/span>+=kspell\n\u003Cspan class=\"hljs-keyword\">augroup\u003C/span> END\n\n\u003Cspan class=\"hljs-comment\">&quot; Smart wrapping function for Markdown\u003C/span>\n\u003Cspan class=\"hljs-keyword\">function!\u003C/span> \u003Cspan class=\"hljs-title\">SmartWrapMarkdown\u003C/span>\u003Cspan class=\"hljs-params\">()\u003C/span>\n  \u003Cspan class=\"hljs-comment\">&quot; Don&#x27;t wrap inside code blocks\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">let\u003C/span> \u003Cspan class=\"hljs-built_in\">synstack\u003C/span> = \u003Cspan class=\"hljs-built_in\">synstack\u003C/span>(\u003Cspan class=\"hljs-built_in\">line\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span>), \u003Cspan class=\"hljs-keyword\">col\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span>))\n  \u003Cspan class=\"hljs-keyword\">for\u003C/span> synid in \u003Cspan class=\"hljs-built_in\">synstack\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">let\u003C/span> synname = \u003Cspan class=\"hljs-built_in\">synIDattr\u003C/span>(synid, \u003Cspan class=\"hljs-string\">&#x27;name&#x27;\u003C/span>)\n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> synname =~? \u003Cspan class=\"hljs-string\">&#x27;code\\|pre\\|fence&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">0\u003C/span>\n      \u003Cspan class=\"hljs-keyword\">return\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">endif\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">endfor\u003C/span>\n  \n  \u003Cspan class=\"hljs-comment\">&quot; Set appropriate text width for content\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">getline\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span>) =~# \u003Cspan class=\"hljs-string\">&#x27;^#\\+\\s&#x27;\u003C/span>\n    \u003Cspan class=\"hljs-comment\">&quot; Headers can be longer\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">100\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">elseif\u003C/span> \u003Cspan class=\"hljs-built_in\">getline\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span>) =~# \u003Cspan class=\"hljs-string\">&#x27;^\\s*[-*+]\\s&#x27;\u003C/span>\n    \u003Cspan class=\"hljs-comment\">&quot; List items\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">76\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">else\u003C/span>\n    \u003Cspan class=\"hljs-comment\">&quot; Regular content\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">setlocal\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">80\u003C/span>\n  \u003Cspan class=\"hljs-keyword\">endif\u003C/span>\n\u003Cspan class=\"hljs-keyword\">endfunction\u003C/span>\n\n\u003Cspan class=\"hljs-comment\">&quot; Auto-format paragraphs\u003C/span>\n\u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">nnoremap\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;buffer&gt;\u003C/span> gq :\u003Cspan class=\"hljs-keyword\">call\u003C/span> SmartWrapMarkdown()\u003Cspan class=\"hljs-symbol\">&lt;CR&gt;\u003C/span>gq\n\n\u003Cspan class=\"hljs-comment\">&quot; Manual wrapping commands\u003C/span>\n\u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">nnoremap\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;buffer&gt;\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;Leader&gt;\u003C/span>wr :\u003Cspan class=\"hljs-keyword\">set\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">80\u003C/span>\u003Cspan class=\"hljs-symbol\">&lt;CR&gt;\u003C/span>gggqG\n\u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">nnoremap\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;buffer&gt;\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;Leader&gt;\u003C/span>wl :\u003Cspan class=\"hljs-keyword\">set\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">72\u003C/span>\u003Cspan class=\"hljs-symbol\">&lt;CR&gt;\u003C/span>gggqG\n\u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">nnoremap\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;buffer&gt;\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;Leader&gt;\u003C/span>\u003Cspan class=\"hljs-keyword\">wu\u003C/span> :\u003Cspan class=\"hljs-keyword\">set\u003C/span> textwidth=\u003Cspan class=\"hljs-number\">0\u003C/span>\u003Cspan class=\"hljs-symbol\">&lt;CR&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\">&quot; Toggle wrap modes\u003C/span>\n\u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">nnoremap\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;buffer&gt;\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;Leader&gt;\u003C/span>tw :\u003Cspan class=\"hljs-keyword\">set\u003C/span> wrap!\u003Cspan class=\"hljs-symbol\">&lt;CR&gt;\u003C/span>\n\u003Cspan class=\"hljs-keyword\">autocmd\u003C/span> FileType markdown \u003Cspan class=\"hljs-keyword\">nnoremap\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;buffer&gt;\u003C/span> \u003Cspan class=\"hljs-symbol\">&lt;Leader&gt;\u003C/span>tb :\u003Cspan class=\"hljs-keyword\">set\u003C/span> linebreak!\u003Cspan class=\"hljs-symbol\">&lt;CR&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"emacs-configuration-for-markdown\">Emacs Configuration for Markdown\u003C/h3>\n\u003Cp>Professional Emacs setup with auto-fill and visual line modes:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-elisp\">;; .emacs or init.el - Markdown text wrapping configuration\n\n(use-package markdown-mode\n  :ensure t\n  :mode ((&quot;README\\\\.md\\\\&#39;&quot; . gfm-mode)\n         (&quot;\\\\.md\\\\&#39;&quot; . markdown-mode)\n         (&quot;\\\\.markdown\\\\&#39;&quot; . markdown-mode))\n  :init\n  (setq markdown-command &quot;multimarkdown&quot;)\n  :config\n  \n  ;; Text wrapping settings\n  (add-hook &#39;markdown-mode-hook \n    (lambda ()\n      ;; Set fill column\n      (setq-local fill-column 80)\n      \n      ;; Enable auto-fill mode\n      (auto-fill-mode 1)\n      \n      ;; Visual line mode for soft wrapping\n      (visual-line-mode 1)\n      \n      ;; Show fill column indicator\n      (display-fill-column-indicator-mode 1)\n      \n      ;; Enable spell checking\n      (flyspell-mode 1)\n      \n      ;; Set adaptive fill for lists\n      (setq-local adaptive-fill-mode t)\n      (setq-local adaptive-fill-regexp\n                  &quot;\\\\s-*\\\\([-*+]\\\\|[0-9]+[.)]\\\\)\\\\s-*&quot;)\n      \n      ;; Smart paragraph filling\n      (setq-local paragraph-start\n                  &quot;\\\\*\\\\|#\\\\|[ \\t]*$\\\\|[ \\t]*[-*+][ \\t]\\\\|[ \\t]*[0-9]+[.)][ \\t]&quot;)\n      (setq-local paragraph-separate\n                  &quot;[ \\t]*$\\\\|[ \\t]*[-*+][ \\t]\\\\|[ \\t]*[0-9]+[.)][ \\t]&quot;)))\n\n;; Custom wrapping functions\n(defun markdown-wrap-paragraph-at-column (column)\n  &quot;Wrap current paragraph to specified column width.&quot;\n  (interactive &quot;nColumn width: &quot;)\n  (let ((fill-column column))\n    (fill-paragraph)))\n\n(defun markdown-toggle-soft-wrapping ()\n  &quot;Toggle between hard wrapping (auto-fill) and soft wrapping (visual-line).&quot;\n  (interactive)\n  (if auto-fill-function\n      (progn\n        (auto-fill-mode -1)\n        (visual-line-mode 1)\n        (message &quot;Switched to soft wrapping&quot;))\n    (progn\n      (visual-line-mode -1)\n      (auto-fill-mode 1)\n      (message &quot;Switched to hard wrapping&quot;))))\n\n;; Key bindings\n(define-key markdown-mode-map (kbd &quot;C-c w p&quot;) #&#39;fill-paragraph)\n(define-key markdown-mode-map (kbd &quot;C-c w r&quot;) #&#39;fill-region)\n(define-key markdown-mode-map (kbd &quot;C-c w c&quot;) #&#39;markdown-wrap-paragraph-at-column)\n(define-key markdown-mode-map (kbd &quot;C-c w t&quot;) #&#39;markdown-toggle-soft-wrapping)\n\n;; Visual indicators for line length\n(use-package whitespace\n  :ensure t\n  :config\n  (setq whitespace-line-column 80)\n  (setq whitespace-style &#39;(face lines-tail trailing))\n  (add-hook &#39;markdown-mode-hook #&#39;whitespace-mode))\n\u003C/code>\u003C/pre>\u003Ch2 id=\"automated-wrapping-strategies\">Automated Wrapping Strategies\u003C/h2>\n\u003Ch3 id=\"command-line-text-processing\">Command-Line Text Processing\u003C/h3>\n\u003Cp>Professional command-line tools for text wrapping and formatting:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-meta\">#!/bin/bash\u003C/span>\n\u003Cspan class=\"hljs-comment\"># markdown-text-wrapper.sh - Command-line text wrapping utilities\u003C/span>\n\n\u003Cspan class=\"hljs-built_in\">set\u003C/span> -euo pipefail\n\n\u003Cspan class=\"hljs-comment\"># Configuration\u003C/span>\nDEFAULT_WIDTH=80\nPRESERVE_INDENTATION=\u003Cspan class=\"hljs-literal\">true\u003C/span>\nBREAK_LONG_WORDS=\u003Cspan class=\"hljs-literal\">false\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># Function to wrap text while preserving Markdown structure\u003C/span>\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-title\">wrap_markdown_text\u003C/span>\u003C/span>() {\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> input_file=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$1\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> output_file=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$2\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> width=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${3:-\u003Cspan class=\"hljs-variable\">$DEFAULT_WIDTH\u003C/span>}\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-comment\"># Create temporary files\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> temp_file=$(\u003Cspan class=\"hljs-built_in\">mktemp\u003C/span>)\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> processed_file=$(\u003Cspan class=\"hljs-built_in\">mktemp\u003C/span>)\n    \n    \u003Cspan class=\"hljs-comment\"># Process file line by line, preserving structure\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">while\u003C/span> IFS= \u003Cspan class=\"hljs-built_in\">read\u003C/span> -r line; \u003Cspan class=\"hljs-keyword\">do\u003C/span>\n        \u003Cspan class=\"hljs-comment\"># Skip code blocks, headers, and other special formatting\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> [[ \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*```.*$ ]] || \\\n           [[ \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*\u003Cspan class=\"hljs-comment\">#.*$ ]] || \\\u003C/span>\n           [[ \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*\\|.*\\|.*$ ]] || \\\n           [[ \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*[-*+][[:space:]].*$ ]] || \\\n           [[ \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*[0-9]+\\.[[:space:]].*$ ]] || \\\n           [[ \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*&gt;.*$ ]]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n            \u003Cspan class=\"hljs-comment\"># Preserve special lines as-is\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$temp_file\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> [[ -z \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${line// }\u003C/span>&quot;\u003C/span> ]]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n            \u003Cspan class=\"hljs-comment\"># Preserve empty lines\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$temp_file\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>\n            \u003Cspan class=\"hljs-comment\"># Wrap regular text\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> | \u003Cspan class=\"hljs-built_in\">fold\u003C/span> -s -w \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$width\u003C/span>&quot;\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$temp_file\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">done\u003C/span> &lt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$input_file\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-comment\"># Clean up and finalize\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">mv\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$temp_file\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$output_file\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">rm\u003C/span> -f \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$processed_file\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;✅ Wrapped text to \u003Cspan class=\"hljs-variable\">$width\u003C/span> characters: \u003Cspan class=\"hljs-variable\">$output_file\u003C/span>&quot;\u003C/span>\n}\n\n\u003Cspan class=\"hljs-comment\"># Function to unwrap hard-wrapped text\u003C/span>\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-title\">unwrap_markdown_text\u003C/span>\u003C/span>() {\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> input_file=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$1\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> output_file=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$2\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-comment\"># Use sed to join lines that don&#x27;t end with special characters\u003C/span>\n    sed -e :a -e \u003Cspan class=\"hljs-string\">&#x27;/[^.!?:;]$/N; s/\\n/ /; ta&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$input_file\u003C/span>&quot;\u003C/span> &gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$output_file\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;✅ Unwrapped hard line breaks: \u003Cspan class=\"hljs-variable\">$output_file\u003C/span>&quot;\u003C/span>\n}\n\n\u003Cspan class=\"hljs-comment\"># Function to enforce consistent line endings\u003C/span>\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-title\">normalize_line_endings\u003C/span>\u003C/span>() {\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> file_path=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$1\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> ending_type=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${2:-lf}\u003C/span>&quot;\u003C/span>  \u003Cspan class=\"hljs-comment\"># lf, crlf, or cr\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">case\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$ending_type\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-keyword\">in\u003C/span>\n        \u003Cspan class=\"hljs-string\">&quot;lf&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-comment\"># Convert to Unix line endings\u003C/span>\n            sed -i \u003Cspan class=\"hljs-string\">&#x27;s/\\r$//&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span>\n            dos2unix \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span> 2&gt;/dev/null || \u003Cspan class=\"hljs-literal\">true\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;crlf&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-comment\"># Convert to Windows line endings  \u003C/span>\n            unix2dos \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span> 2&gt;/dev/null || \u003Cspan class=\"hljs-literal\">true\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;cr&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-comment\"># Convert to Mac line endings (rarely used)\u003C/span>\n            sed -i \u003Cspan class=\"hljs-string\">&#x27;s/\\r$//&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span>\n            sed -i \u003Cspan class=\"hljs-string\">&#x27;s/$/\\r/&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span>\n            ;;\n    \u003Cspan class=\"hljs-keyword\">esac\u003C/span>\n    \n    \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;✅ Normalized line endings to \u003Cspan class=\"hljs-variable\">$ending_type\u003C/span>: \u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span>\n}\n\n\u003Cspan class=\"hljs-comment\"># Function to check line length compliance\u003C/span>\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-title\">check_line_lengths\u003C/span>\u003C/span>() {\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> file_path=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$1\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> max_width=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${2:-\u003Cspan class=\"hljs-variable\">$DEFAULT_WIDTH\u003C/span>}\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> violations=()\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> line_number=1\n    \n    \u003Cspan class=\"hljs-keyword\">while\u003C/span> IFS= \u003Cspan class=\"hljs-built_in\">read\u003C/span> -r line; \u003Cspan class=\"hljs-keyword\">do\u003C/span>\n        \u003Cspan class=\"hljs-comment\"># Skip code blocks and other special content\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> [[ ! \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*```.*$ ]] &amp;&amp; \\\n           [[ ! \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*\u003Cspan class=\"hljs-comment\">#.*$ ]] &amp;&amp; \\\u003C/span>\n           [[ ! \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$line\u003C/span>&quot;\u003C/span> =~ ^[[:space:]]*\\|.*\\|.*$ ]]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n            \n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> line_length=\u003Cspan class=\"hljs-variable\">${#line}\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (( line_length &gt; max_width )); \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n                violations+=(\u003Cspan class=\"hljs-string\">&quot;Line \u003Cspan class=\"hljs-variable\">$line_number\u003C/span>: \u003Cspan class=\"hljs-variable\">$line_length\u003C/span> characters&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n        ((line_number++))\n    \u003Cspan class=\"hljs-keyword\">done\u003C/span> &lt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file_path\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> [ \u003Cspan class=\"hljs-variable\">${#violations[@]}\u003C/span> -eq 0 ]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;✅ All lines comply with \u003Cspan class=\"hljs-variable\">$max_width\u003C/span> character limit&quot;\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">return\u003C/span> 0\n    \u003Cspan class=\"hljs-keyword\">else\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;⚠️  Found \u003Cspan class=\"hljs-variable\">${#violations[@]}\u003C/span> line length violations:&quot;\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">printf\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;%s\\n&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${violations[@]}\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">return\u003C/span> 1\n    \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n}\n\n\u003Cspan class=\"hljs-comment\"># Function to generate text wrapping report\u003C/span>\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-title\">generate_wrapping_report\u003C/span>\u003C/span>() {\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> directory=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${1:-.}\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> report_file=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${2:-line-length-report.md}\u003C/span>&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-built_in\">cat\u003C/span> &gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span> &lt;&lt; \u003Cspan class=\"hljs-string\">&#x27;EOF&#x27;\u003C/span>\n\u003Cspan class=\"hljs-comment\"># Text Wrapping Analysis Report\u003C/span>\n\n\u003Cspan class=\"hljs-comment\">## Summary\u003C/span>\n\nEOF\n    \n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> total_files=0\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> compliant_files=0\n    \u003Cspan class=\"hljs-built_in\">local\u003C/span> violation_count=0\n    \n    \u003Cspan class=\"hljs-comment\"># Find all Markdown files\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">while\u003C/span> IFS= \u003Cspan class=\"hljs-built_in\">read\u003C/span> -r -d \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span> file; \u003Cspan class=\"hljs-keyword\">do\u003C/span>\n        ((total_files++))\n        \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Analyzing: \u003Cspan class=\"hljs-variable\">$file\u003C/span>&quot;\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> check_line_lengths \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file\u003C/span>&quot;\u003C/span> 80 &gt;/dev/null 2&gt;&amp;1; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n            ((compliant_files++))\n            \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;✅ **Compliant**: \\`\u003Cspan class=\"hljs-variable\">$file\u003C/span>\\`&quot;\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> violations\n            violations=$(check_line_lengths \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file\u003C/span>&quot;\u003C/span> 80 2&gt;&amp;1 | grep -c \u003Cspan class=\"hljs-string\">&quot;Line&quot;\u003C/span> || \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;0&quot;\u003C/span>)\n            ((violation_count += violations))\n            \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;⚠️ **Violations**: \\`\u003Cspan class=\"hljs-variable\">$file\u003C/span>\\` (\u003Cspan class=\"hljs-variable\">$violations\u003C/span> long lines)&quot;\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">done\u003C/span> &lt; &lt;(find \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$directory\u003C/span>&quot;\u003C/span> -name \u003Cspan class=\"hljs-string\">&quot;*.md&quot;\u003C/span> -\u003Cspan class=\"hljs-built_in\">type\u003C/span> f -print0)\n    \n    \u003Cspan class=\"hljs-comment\"># Add summary statistics\u003C/span>\n    \u003Cspan class=\"hljs-built_in\">cat\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span> &lt;&lt; \u003Cspan class=\"hljs-string\">EOF\n\n## Statistics\n\n- **Total Files Analyzed**: $total_files\n- **Compliant Files**: $compliant_files\n- **Files with Violations**: $((total_files - compliant_files))\n- **Total Line Length Violations**: $violation_count\n- **Compliance Rate**: $(( (compliant_files * 100) / total_files ))%\n\n## Recommendations\n\nEOF\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> (( violation_count &gt; \u003Cspan class=\"hljs-number\">0\u003C/span> )); \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">cat\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span> &lt;&lt; \u003Cspan class=\"hljs-string\">&#x27;EOF&#x27;\u003C/span>\n1. Run `markdown-text-wrapper.sh wrap &lt;file&gt;` on files with violations\n2. Configure your editor \u003Cspan class=\"hljs-keyword\">for\u003C/span> 80-character line length guidelines\n3. Enable automatic text wrapping \u003Cspan class=\"hljs-keyword\">in\u003C/span> your Markdown editor\n4. Consider using a linter like markdownlint \u003Cspan class=\"hljs-keyword\">for\u003C/span> continuous compliance checking\n\nEOF\n    \u003Cspan class=\"hljs-keyword\">else\u003C/span>\n        \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;🎉 All files are compliant with line length guidelines!&quot;\u003C/span> &gt;&gt; \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n    \n    \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;📄 Generated report: \u003Cspan class=\"hljs-variable\">$report_file\u003C/span>&quot;\u003C/span>\n}\n\n\u003Cspan class=\"hljs-comment\"># Main script logic\u003C/span>\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-title\">main\u003C/span>\u003C/span>() {\n    \u003Cspan class=\"hljs-keyword\">case\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${1:-help}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-keyword\">in\u003C/span>\n        \u003Cspan class=\"hljs-string\">&quot;wrap&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> [ \u003Cspan class=\"hljs-variable\">$#\u003C/span> -lt 2 ]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Usage: \u003Cspan class=\"hljs-variable\">$0\u003C/span> wrap &lt;input_file&gt; [output_file] [width]&quot;\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">exit\u003C/span> 1\n            \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> input=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${2}\u003C/span>&quot;\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> output=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${3:-\u003Cspan class=\"hljs-variable\">${input%.md}\u003C/span>-wrapped.md}\u003C/span>&quot;\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> width=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${4:-\u003Cspan class=\"hljs-variable\">$DEFAULT_WIDTH\u003C/span>}\u003C/span>&quot;\u003C/span>\n            wrap_markdown_text \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$input\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$output\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$width\u003C/span>&quot;\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;unwrap&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> [ \u003Cspan class=\"hljs-variable\">$#\u003C/span> -lt 2 ]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Usage: \u003Cspan class=\"hljs-variable\">$0\u003C/span> unwrap &lt;input_file&gt; [output_file]&quot;\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">exit\u003C/span> 1\n            \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> input=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${2}\u003C/span>&quot;\u003C/span>\n            \u003Cspan class=\"hljs-built_in\">local\u003C/span> output=\u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${3:-\u003Cspan class=\"hljs-variable\">${input%.md}\u003C/span>-unwrapped.md}\u003C/span>&quot;\u003C/span>\n            unwrap_markdown_text \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$input\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$output\u003C/span>&quot;\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;check&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> [ \u003Cspan class=\"hljs-variable\">$#\u003C/span> -lt 2 ]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Usage: \u003Cspan class=\"hljs-variable\">$0\u003C/span> check &lt;file&gt; [max_width]&quot;\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">exit\u003C/span> 1\n            \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n            check_line_lengths \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$2\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${3:-\u003Cspan class=\"hljs-variable\">$DEFAULT_WIDTH\u003C/span>}\u003C/span>&quot;\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;normalize&quot;\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> [ \u003Cspan class=\"hljs-variable\">$#\u003C/span> -lt 2 ]; \u003Cspan class=\"hljs-keyword\">then\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Usage: \u003Cspan class=\"hljs-variable\">$0\u003C/span> normalize &lt;file&gt; [ending_type]&quot;\u003C/span>\n                \u003Cspan class=\"hljs-built_in\">exit\u003C/span> 1\n            \u003Cspan class=\"hljs-keyword\">fi\u003C/span>\n            normalize_line_endings \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$2\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${3:-lf}\u003C/span>&quot;\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;report&quot;\u003C/span>)\n            generate_wrapping_report \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${2:-.}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">${3:-line-length-report.md}\u003C/span>&quot;\u003C/span>\n            ;;\n        \u003Cspan class=\"hljs-string\">&quot;help&quot;\u003C/span>|*)\n            \u003Cspan class=\"hljs-built_in\">cat\u003C/span> &lt;&lt; \u003Cspan class=\"hljs-string\">&#x27;EOF&#x27;\u003C/span>\nMarkdown Text Wrapping Utility\n\nUsage: markdown-text-wrapper.sh &lt;\u003Cspan class=\"hljs-built_in\">command\u003C/span>&gt; [options]\n\nCommands:\n  wrap &lt;input&gt; [output] [width]    Wrap text to specified width (default: 80)\n  unwrap &lt;input&gt; [output]          Remove hard line breaks\n  check &lt;file&gt; [width]             Check line length compliance  \n  normalize &lt;file&gt; [ending]        Normalize line endings (lf/crlf/cr)\n  report [directory] [output]      Generate compliance report\n  \u003Cspan class=\"hljs-built_in\">help\u003C/span>                            Show this \u003Cspan class=\"hljs-built_in\">help\u003C/span> message\n\nExamples:\n  \u003Cspan class=\"hljs-variable\">$0\u003C/span> wrap document.md wrapped.md 72\n  \u003Cspan class=\"hljs-variable\">$0\u003C/span> check README.md 80\n  \u003Cspan class=\"hljs-variable\">$0\u003C/span> report docs/ report.md\n\nEOF\n            ;;\n    \u003Cspan class=\"hljs-keyword\">esac\u003C/span>\n}\n\n\u003Cspan class=\"hljs-comment\"># Run main function with all arguments\u003C/span>\nmain \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$@\u003C/span>&quot;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"python-text-wrapping-library\">Python Text Wrapping Library\u003C/h3>\n\u003Cp>Advanced Python library for intelligent Markdown text wrapping:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># markdown_wrapper.py - Advanced text wrapping for Markdown content\u003C/span>\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> re\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> textwrap\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> argparse\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> typing \u003Cspan class=\"hljs-keyword\">import\u003C/span> \u003Cspan class=\"hljs-type\">List\u003C/span>, \u003Cspan class=\"hljs-type\">Dict\u003C/span>, \u003Cspan class=\"hljs-type\">Optional\u003C/span>, \u003Cspan class=\"hljs-type\">Tuple\u003C/span>\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> pathlib \u003Cspan class=\"hljs-keyword\">import\u003C/span> Path\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> dataclasses \u003Cspan class=\"hljs-keyword\">import\u003C/span> dataclass, field\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> enum \u003Cspan class=\"hljs-keyword\">import\u003C/span> Enum\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> logging\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">WrapMode\u003C/span>(\u003Cspan class=\"hljs-title class_ inherited__\">Enum\u003C/span>):\n    SOFT = \u003Cspan class=\"hljs-string\">&quot;soft&quot;\u003C/span>\n    HARD = \u003Cspan class=\"hljs-string\">&quot;hard&quot;\u003C/span>\n    AUTO = \u003Cspan class=\"hljs-string\">&quot;auto&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">BreakMode\u003C/span>(\u003Cspan class=\"hljs-title class_ inherited__\">Enum\u003C/span>):\n    WORD = \u003Cspan class=\"hljs-string\">&quot;word&quot;\u003C/span>\n    CHARACTER = \u003Cspan class=\"hljs-string\">&quot;character&quot;\u003C/span>\n    NATURAL = \u003Cspan class=\"hljs-string\">&quot;natural&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-meta\">@dataclass\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">WrapConfig\u003C/span>:\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Configuration for text wrapping operations&quot;&quot;&quot;\u003C/span>\n    width: \u003Cspan class=\"hljs-built_in\">int\u003C/span> = \u003Cspan class=\"hljs-number\">80\u003C/span>\n    mode: WrapMode = WrapMode.HARD\n    break_mode: BreakMode = BreakMode.WORD\n    preserve_indentation: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    break_long_words: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n    expand_tabs: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    replace_whitespace: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    preserve_code_blocks: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    preserve_tables: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    preserve_headers: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    preserve_lists: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    preserve_blockquotes: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    min_line_length: \u003Cspan class=\"hljs-built_in\">int\u003C/span> = \u003Cspan class=\"hljs-number\">20\u003C/span>\n    \n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MarkdownElement\u003C/span>(\u003Cspan class=\"hljs-title class_ inherited__\">Enum\u003C/span>):\n    PARAGRAPH = \u003Cspan class=\"hljs-string\">&quot;paragraph&quot;\u003C/span>\n    HEADER = \u003Cspan class=\"hljs-string\">&quot;header&quot;\u003C/span>\n    CODE_BLOCK = \u003Cspan class=\"hljs-string\">&quot;code_block&quot;\u003C/span>\n    INLINE_CODE = \u003Cspan class=\"hljs-string\">&quot;inline_code&quot;\u003C/span>\n    LIST_ITEM = \u003Cspan class=\"hljs-string\">&quot;list_item&quot;\u003C/span>\n    BLOCKQUOTE = \u003Cspan class=\"hljs-string\">&quot;blockquote&quot;\u003C/span>\n    TABLE = \u003Cspan class=\"hljs-string\">&quot;table&quot;\u003C/span>\n    HORIZONTAL_RULE = \u003Cspan class=\"hljs-string\">&quot;horizontal_rule&quot;\u003C/span>\n    LINK = \u003Cspan class=\"hljs-string\">&quot;link&quot;\u003C/span>\n    IMAGE = \u003Cspan class=\"hljs-string\">&quot;image&quot;\u003C/span>\n    BLANK_LINE = \u003Cspan class=\"hljs-string\">&quot;blank_line&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-meta\">@dataclass\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">LineInfo\u003C/span>:\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Information about a line in Markdown content&quot;&quot;&quot;\u003C/span>\n    number: \u003Cspan class=\"hljs-built_in\">int\u003C/span>\n    content: \u003Cspan class=\"hljs-built_in\">str\u003C/span>\n    element_type: MarkdownElement\n    indentation: \u003Cspan class=\"hljs-built_in\">str\u003C/span> = \u003Cspan class=\"hljs-string\">&quot;&quot;\u003C/span>\n    prefix: \u003Cspan class=\"hljs-built_in\">str\u003C/span> = \u003Cspan class=\"hljs-string\">&quot;&quot;\u003C/span>\n    is_continuation: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n    metadata: \u003Cspan class=\"hljs-type\">Dict\u003C/span> = field(default_factory=\u003Cspan class=\"hljs-built_in\">dict\u003C/span>)\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MarkdownTextWrapper\u003C/span>:\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">__init__\u003C/span>(\u003Cspan class=\"hljs-params\">self, config: WrapConfig = \u003Cspan class=\"hljs-literal\">None\u003C/span>\u003C/span>):\n        self.config = config \u003Cspan class=\"hljs-keyword\">or\u003C/span> WrapConfig()\n        self.logger = logging.getLogger(__name__)\n        \n        \u003Cspan class=\"hljs-comment\"># Regex patterns for Markdown element detection\u003C/span>\n        self.patterns = {\n            \u003Cspan class=\"hljs-string\">&#x27;header&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)#{1,6}\\s+(.*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;code_block&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)```.*$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;inline_code&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;`[^`]+`&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;list_item&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)[-*+]\\s+(.*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;numbered_list&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)\\d+\\.\\s+(.*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;blockquote&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)&gt;\\s*(.*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;table_row&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)\\|.*\\|(\\s*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;table_separator&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)\\|[\\s:|-]+\\|(\\s*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;horizontal_rule&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)[-*_]{3,}(\\s*)$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;blank_line&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^\\s*$&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;link_reference&#x27;\u003C/span>: re.\u003Cspan class=\"hljs-built_in\">compile\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^\\[.*\\]:\\s*\\S+&#x27;\u003C/span>),\n        }\n        \n        self.in_code_block = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        self.in_table = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">detect_element_type\u003C/span>(\u003Cspan class=\"hljs-params\">self, line: \u003Cspan class=\"hljs-built_in\">str\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Tuple\u003C/span>[MarkdownElement, \u003Cspan class=\"hljs-type\">Dict\u003C/span>]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Detect the type of Markdown element on a line&quot;&quot;&quot;\u003C/span>\n        stripped = line.strip()\n        metadata = {}\n        \n        \u003Cspan class=\"hljs-comment\"># Check for code block boundaries\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;code_block&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            self.in_code_block = \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.in_code_block\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.CODE_BLOCK, metadata\n            \n        \u003Cspan class=\"hljs-comment\"># Inside code block\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.in_code_block:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.CODE_BLOCK, metadata\n            \n        \u003Cspan class=\"hljs-comment\"># Check other elements\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;blank_line&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.BLANK_LINE, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;header&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">match\u003C/span> = self.patterns[\u003Cspan class=\"hljs-string\">&#x27;header&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;level&#x27;\u003C/span>] = line.count(\u003Cspan class=\"hljs-string\">&#x27;#&#x27;\u003C/span>)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;indentation&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">1\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.HEADER, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;horizontal_rule&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.HORIZONTAL_RULE, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;table_row&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line) \u003Cspan class=\"hljs-keyword\">or\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;table_separator&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            self.in_table = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.TABLE, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;blockquote&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">match\u003C/span> = self.patterns[\u003Cspan class=\"hljs-string\">&#x27;blockquote&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;indentation&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">1\u003C/span>)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;content&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">2\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.BLOCKQUOTE, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;list_item&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">match\u003C/span> = self.patterns[\u003Cspan class=\"hljs-string\">&#x27;list_item&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;indentation&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">1\u003C/span>)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;content&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">2\u003C/span>)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;marker&#x27;\u003C/span>] = line[\u003Cspan class=\"hljs-built_in\">len\u003C/span>(\u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">1\u003C/span>))]\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.LIST_ITEM, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;numbered_list&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">match\u003C/span> = self.patterns[\u003Cspan class=\"hljs-string\">&#x27;numbered_list&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;indentation&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">1\u003C/span>)\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;content&#x27;\u003C/span>] = \u003Cspan class=\"hljs-keyword\">match\u003C/span>.group(\u003Cspan class=\"hljs-number\">2\u003C/span>)\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.LIST_ITEM, metadata\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.patterns[\u003Cspan class=\"hljs-string\">&#x27;link_reference&#x27;\u003C/span>].\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.LINK, metadata\n            \n        \u003Cspan class=\"hljs-comment\"># Reset table state if not a table row\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.in_table \u003Cspan class=\"hljs-keyword\">and\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> \u003Cspan class=\"hljs-built_in\">any\u003C/span>(pattern.\u003Cspan class=\"hljs-keyword\">match\u003C/span>(line) \u003Cspan class=\"hljs-keyword\">for\u003C/span> pattern \u003Cspan class=\"hljs-keyword\">in\u003C/span> \n                                   [self.patterns[\u003Cspan class=\"hljs-string\">&#x27;table_row&#x27;\u003C/span>], self.patterns[\u003Cspan class=\"hljs-string\">&#x27;table_separator&#x27;\u003C/span>]]):\n            self.in_table = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> MarkdownElement.PARAGRAPH, metadata\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">parse_content\u003C/span>(\u003Cspan class=\"hljs-params\">self, content: \u003Cspan class=\"hljs-built_in\">str\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">List\u003C/span>[LineInfo]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Parse content into structured line information&quot;&quot;&quot;\u003C/span>\n        lines = content.splitlines(keepends=\u003Cspan class=\"hljs-literal\">False\u003C/span>)\n        line_info = []\n        \n        self.in_code_block = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        self.in_table = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> i, line \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(lines):\n            element_type, metadata = self.detect_element_type(line)\n            \n            \u003Cspan class=\"hljs-comment\"># Extract indentation\u003C/span>\n            indentation = re.\u003Cspan class=\"hljs-keyword\">match\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)&#x27;\u003C/span>, line).group(\u003Cspan class=\"hljs-number\">1\u003C/span>)\n            \n            line_info.append(LineInfo(\n                number=i + \u003Cspan class=\"hljs-number\">1\u003C/span>,\n                content=line,\n                element_type=element_type,\n                indentation=indentation,\n                metadata=metadata\n            ))\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> line_info\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">should_wrap_line\u003C/span>(\u003Cspan class=\"hljs-params\">self, line_info: LineInfo\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">bool\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Determine if a line should be wrapped&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.config.preserve_code_blocks \u003Cspan class=\"hljs-keyword\">and\u003C/span> line_info.element_type == MarkdownElement.CODE_BLOCK:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.config.preserve_headers \u003Cspan class=\"hljs-keyword\">and\u003C/span> line_info.element_type == MarkdownElement.HEADER:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.config.preserve_tables \u003Cspan class=\"hljs-keyword\">and\u003C/span> line_info.element_type == MarkdownElement.TABLE:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.config.preserve_lists \u003Cspan class=\"hljs-keyword\">and\u003C/span> line_info.element_type == MarkdownElement.LIST_ITEM:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.config.preserve_blockquotes \u003Cspan class=\"hljs-keyword\">and\u003C/span> line_info.element_type == MarkdownElement.BLOCKQUOTE:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-comment\"># Don&#x27;t wrap certain element types\u003C/span>\n        skip_elements = {\n            MarkdownElement.BLANK_LINE,\n            MarkdownElement.HORIZONTAL_RULE,\n            MarkdownElement.LINK,\n            MarkdownElement.IMAGE\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> line_info.element_type \u003Cspan class=\"hljs-keyword\">in\u003C/span> skip_elements:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-comment\"># Check line length\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(line_info.content) &lt;= self.config.width:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">wrap_paragraph_lines\u003C/span>(\u003Cspan class=\"hljs-params\">self, lines: \u003Cspan class=\"hljs-type\">List\u003C/span>[LineInfo]\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-built_in\">str\u003C/span>]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Wrap a group of paragraph lines&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> lines:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> []\n            \n        \u003Cspan class=\"hljs-comment\"># Combine lines into a single text block\u003C/span>\n        text_content = []\n        base_indentation = lines[\u003Cspan class=\"hljs-number\">0\u003C/span>].indentation\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> line_info \u003Cspan class=\"hljs-keyword\">in\u003C/span> lines:\n            \u003Cspan class=\"hljs-comment\"># Remove base indentation and add content\u003C/span>\n            content = line_info.content[\u003Cspan class=\"hljs-built_in\">len\u003C/span>(base_indentation):].strip()\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> content:\n                text_content.append(content)\n        \n        \u003Cspan class=\"hljs-comment\"># Join and wrap the text\u003C/span>\n        full_text = \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>.join(text_content)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> full_text.strip():\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> [\u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>]\n        \n        \u003Cspan class=\"hljs-comment\"># Calculate effective width (accounting for indentation)\u003C/span>\n        effective_width = self.config.width - \u003Cspan class=\"hljs-built_in\">len\u003C/span>(base_indentation)\n        \n        \u003Cspan class=\"hljs-comment\"># Create text wrapper with appropriate settings\u003C/span>\n        wrapper = textwrap.TextWrapper(\n            width=\u003Cspan class=\"hljs-built_in\">max\u003C/span>(effective_width, self.config.min_line_length),\n            break_long_words=self.config.break_long_words,\n            break_on_hyphens=\u003Cspan class=\"hljs-literal\">True\u003C/span>,\n            expand_tabs=self.config.expand_tabs,\n            replace_whitespace=self.config.replace_whitespace,\n            drop_whitespace=\u003Cspan class=\"hljs-literal\">True\u003C/span>\n        )\n        \n        \u003Cspan class=\"hljs-comment\"># Wrap the text\u003C/span>\n        wrapped_lines = wrapper.wrap(full_text)\n        \n        \u003Cspan class=\"hljs-comment\"># Add back base indentation\u003C/span>\n        result = []\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> wrapped_line \u003Cspan class=\"hljs-keyword\">in\u003C/span> wrapped_lines:\n            result.append(base_indentation + wrapped_line)\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> result\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">wrap_list_item\u003C/span>(\u003Cspan class=\"hljs-params\">self, line_info: LineInfo\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-built_in\">str\u003C/span>]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Wrap a list item while preserving formatting&quot;&quot;&quot;\u003C/span>\n        content = line_info.metadata.get(\u003Cspan class=\"hljs-string\">&#x27;content&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>)\n        indentation = line_info.metadata.get(\u003Cspan class=\"hljs-string\">&#x27;indentation&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> content.strip():\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> [line_info.content]\n        \n        \u003Cspan class=\"hljs-comment\"># Determine list marker\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;marker&#x27;\u003C/span> \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_info.metadata:\n            marker = line_info.metadata[\u003Cspan class=\"hljs-string\">&#x27;marker&#x27;\u003C/span>]\n            prefix = \u003Cspan class=\"hljs-string\">f&quot;\u003Cspan class=\"hljs-subst\">{indentation}\u003C/span>\u003Cspan class=\"hljs-subst\">{marker}\u003C/span> &quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n            \u003Cspan class=\"hljs-comment\"># Numbered list\u003C/span>\n            number_match = re.\u003Cspan class=\"hljs-keyword\">match\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^(\\s*)(\\d+\\.)\\s+&#x27;\u003C/span>, line_info.content)\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> number_match:\n                prefix = number_match.group(\u003Cspan class=\"hljs-number\">1\u003C/span>) + number_match.group(\u003Cspan class=\"hljs-number\">2\u003C/span>) + \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n                prefix = indentation + \u003Cspan class=\"hljs-string\">&#x27;- &#x27;\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Calculate hanging indent (for continuation lines)\u003C/span>\n        hanging_indent = \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span> * \u003Cspan class=\"hljs-built_in\">len\u003C/span>(prefix)\n        \n        \u003Cspan class=\"hljs-comment\"># Effective width for content\u003C/span>\n        effective_width = self.config.width - \u003Cspan class=\"hljs-built_in\">len\u003C/span>(prefix)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(content) &lt;= effective_width:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> [line_info.content]\n        \n        \u003Cspan class=\"hljs-comment\"># Wrap the content\u003C/span>\n        wrapper = textwrap.TextWrapper(\n            width=\u003Cspan class=\"hljs-built_in\">max\u003C/span>(effective_width, self.config.min_line_length),\n            initial_indent=prefix,\n            subsequent_indent=hanging_indent,\n            break_long_words=self.config.break_long_words,\n            break_on_hyphens=\u003Cspan class=\"hljs-literal\">True\u003C/span>\n        )\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> wrapper.wrap(content)\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">wrap_blockquote\u003C/span>(\u003Cspan class=\"hljs-params\">self, line_info: LineInfo\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-built_in\">str\u003C/span>]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Wrap blockquote content while preserving formatting&quot;&quot;&quot;\u003C/span>\n        content = line_info.metadata.get(\u003Cspan class=\"hljs-string\">&#x27;content&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>)\n        indentation = line_info.metadata.get(\u003Cspan class=\"hljs-string\">&#x27;indentation&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> content.strip():\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> [line_info.content]\n        \n        prefix = \u003Cspan class=\"hljs-string\">f&quot;\u003Cspan class=\"hljs-subst\">{indentation}\u003C/span>&gt; &quot;\u003C/span>\n        hanging_indent = \u003Cspan class=\"hljs-string\">f&quot;\u003Cspan class=\"hljs-subst\">{indentation}\u003C/span>&gt; &quot;\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Effective width for content\u003C/span>\n        effective_width = self.config.width - \u003Cspan class=\"hljs-built_in\">len\u003C/span>(prefix)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(content) &lt;= effective_width:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> [line_info.content]\n        \n        \u003Cspan class=\"hljs-comment\"># Wrap the content\u003C/span>\n        wrapper = textwrap.TextWrapper(\n            width=\u003Cspan class=\"hljs-built_in\">max\u003C/span>(effective_width, self.config.min_line_length),\n            initial_indent=prefix,\n            subsequent_indent=hanging_indent,\n            break_long_words=self.config.break_long_words,\n            break_on_hyphens=\u003Cspan class=\"hljs-literal\">True\u003C/span>\n        )\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> wrapper.wrap(content)\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">wrap_content\u003C/span>(\u003Cspan class=\"hljs-params\">self, content: \u003Cspan class=\"hljs-built_in\">str\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">str\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Wrap Markdown content according to configuration&quot;&quot;&quot;\u003C/span>\n        line_info_list = self.parse_content(content)\n        result_lines = []\n        \n        i = \u003Cspan class=\"hljs-number\">0\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">while\u003C/span> i &lt; \u003Cspan class=\"hljs-built_in\">len\u003C/span>(line_info_list):\n            current_line = line_info_list[i]\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> self.should_wrap_line(current_line):\n                \u003Cspan class=\"hljs-comment\"># Don&#x27;t wrap this line\u003C/span>\n                result_lines.append(current_line.content)\n                i += \u003Cspan class=\"hljs-number\">1\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">continue\u003C/span>\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> current_line.element_type == MarkdownElement.PARAGRAPH:\n                \u003Cspan class=\"hljs-comment\"># Collect consecutive paragraph lines\u003C/span>\n                paragraph_lines = [current_line]\n                j = i + \u003Cspan class=\"hljs-number\">1\u003C/span>\n                \n                \u003Cspan class=\"hljs-keyword\">while\u003C/span> (j &lt; \u003Cspan class=\"hljs-built_in\">len\u003C/span>(line_info_list) \u003Cspan class=\"hljs-keyword\">and\u003C/span> \n                       line_info_list[j].element_type == MarkdownElement.PARAGRAPH \u003Cspan class=\"hljs-keyword\">and\u003C/span>\n                       self.should_wrap_line(line_info_list[j])):\n                    paragraph_lines.append(line_info_list[j])\n                    j += \u003Cspan class=\"hljs-number\">1\u003C/span>\n                \n                \u003Cspan class=\"hljs-comment\"># Wrap the paragraph\u003C/span>\n                wrapped_lines = self.wrap_paragraph_lines(paragraph_lines)\n                result_lines.extend(wrapped_lines)\n                \n                i = j\n                \n            \u003Cspan class=\"hljs-keyword\">elif\u003C/span> current_line.element_type == MarkdownElement.LIST_ITEM:\n                wrapped_lines = self.wrap_list_item(current_line)\n                result_lines.extend(wrapped_lines)\n                i += \u003Cspan class=\"hljs-number\">1\u003C/span>\n                \n            \u003Cspan class=\"hljs-keyword\">elif\u003C/span> current_line.element_type == MarkdownElement.BLOCKQUOTE:\n                wrapped_lines = self.wrap_blockquote(current_line)\n                result_lines.extend(wrapped_lines)\n                i += \u003Cspan class=\"hljs-number\">1\u003C/span>\n                \n            \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n                \u003Cspan class=\"hljs-comment\"># Don&#x27;t wrap other element types\u003C/span>\n                result_lines.append(current_line.content)\n                i += \u003Cspan class=\"hljs-number\">1\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;\\n&#x27;\u003C/span>.join(result_lines)\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">unwrap_content\u003C/span>(\u003Cspan class=\"hljs-params\">self, content: \u003Cspan class=\"hljs-built_in\">str\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">str\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Remove hard line breaks from Markdown content&quot;&quot;&quot;\u003C/span>\n        lines = content.splitlines()\n        result_lines = []\n        \n        self.in_code_block = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        current_paragraph = []\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> line \u003Cspan class=\"hljs-keyword\">in\u003C/span> lines:\n            element_type, metadata = self.detect_element_type(line)\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> element_type == MarkdownElement.CODE_BLOCK:\n                \u003Cspan class=\"hljs-comment\"># Flush current paragraph\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">if\u003C/span> current_paragraph:\n                    result_lines.append(\u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>.join(current_paragraph))\n                    current_paragraph = []\n                result_lines.append(line)\n                \u003Cspan class=\"hljs-keyword\">continue\u003C/span>\n                \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.in_code_block:\n                result_lines.append(line)\n                \u003Cspan class=\"hljs-keyword\">continue\u003C/span>\n                \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> element_type == MarkdownElement.BLANK_LINE:\n                \u003Cspan class=\"hljs-comment\"># Flush current paragraph\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">if\u003C/span> current_paragraph:\n                    result_lines.append(\u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>.join(current_paragraph))\n                    current_paragraph = []\n                result_lines.append(line)\n                \u003Cspan class=\"hljs-keyword\">continue\u003C/span>\n                \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> element_type == MarkdownElement.PARAGRAPH:\n                \u003Cspan class=\"hljs-comment\"># Accumulate paragraph lines\u003C/span>\n                current_paragraph.append(line.strip())\n                \u003Cspan class=\"hljs-keyword\">continue\u003C/span>\n                \n            \u003Cspan class=\"hljs-comment\"># Other element types (headers, lists, etc.)\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> current_paragraph:\n                result_lines.append(\u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>.join(current_paragraph))\n                current_paragraph = []\n            result_lines.append(line)\n        \n        \u003Cspan class=\"hljs-comment\"># Flush any remaining paragraph\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> current_paragraph:\n            result_lines.append(\u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>.join(current_paragraph))\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;\\n&#x27;\u003C/span>.join(result_lines)\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">analyze_line_lengths\u003C/span>(\u003Cspan class=\"hljs-params\">self, content: \u003Cspan class=\"hljs-built_in\">str\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Analyze line length statistics for content&quot;&quot;&quot;\u003C/span>\n        lines = content.splitlines()\n        line_lengths = [\u003Cspan class=\"hljs-built_in\">len\u003C/span>(line) \u003Cspan class=\"hljs-keyword\">for\u003C/span> line \u003Cspan class=\"hljs-keyword\">in\u003C/span> lines]\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> line_lengths:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> {}\n        \n        analysis = {\n            \u003Cspan class=\"hljs-string\">&#x27;total_lines&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(lines),\n            \u003Cspan class=\"hljs-string\">&#x27;average_length&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(line_lengths) / \u003Cspan class=\"hljs-built_in\">len\u003C/span>(line_lengths),\n            \u003Cspan class=\"hljs-string\">&#x27;min_length&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">min\u003C/span>(line_lengths),\n            \u003Cspan class=\"hljs-string\">&#x27;max_length&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">max\u003C/span>(line_lengths),\n            \u003Cspan class=\"hljs-string\">&#x27;lines_over_limit&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> length \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_lengths \u003Cspan class=\"hljs-keyword\">if\u003C/span> length &gt; self.config.width),\n            \u003Cspan class=\"hljs-string\">&#x27;compliance_rate&#x27;\u003C/span>: (\u003Cspan class=\"hljs-number\">1\u003C/span> - \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> length \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_lengths \u003Cspan class=\"hljs-keyword\">if\u003C/span> length &gt; self.config.width) / \u003Cspan class=\"hljs-built_in\">len\u003C/span>(lines)) * \u003Cspan class=\"hljs-number\">100\u003C/span>\n        }\n        \n        \u003Cspan class=\"hljs-comment\"># Categorize lines by length\u003C/span>\n        analysis[\u003Cspan class=\"hljs-string\">&#x27;length_distribution&#x27;\u003C/span>] = {\n            \u003Cspan class=\"hljs-string\">&#x27;under_50&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> length \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_lengths \u003Cspan class=\"hljs-keyword\">if\u003C/span> length &lt; \u003Cspan class=\"hljs-number\">50\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;50_to_80&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> length \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_lengths \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-number\">50\u003C/span> &lt;= length &lt;= \u003Cspan class=\"hljs-number\">80\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;80_to_100&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> length \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_lengths \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-number\">80\u003C/span> &lt; length &lt;= \u003Cspan class=\"hljs-number\">100\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;over_100&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> length \u003Cspan class=\"hljs-keyword\">in\u003C/span> line_lengths \u003Cspan class=\"hljs-keyword\">if\u003C/span> length &gt; \u003Cspan class=\"hljs-number\">100\u003C/span>)\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> analysis\n\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">main\u003C/span>():\n    parser = argparse.ArgumentParser(description=\u003Cspan class=\"hljs-string\">&#x27;Advanced Markdown text wrapping utility&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;input_file&#x27;\u003C/span>, \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Input Markdown file&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;-o&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;--output&#x27;\u003C/span>, \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Output file (default: overwrite input)&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;-w&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;--width&#x27;\u003C/span>, \u003Cspan class=\"hljs-built_in\">type\u003C/span>=\u003Cspan class=\"hljs-built_in\">int\u003C/span>, default=\u003Cspan class=\"hljs-number\">80\u003C/span>, \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Line width (default: 80)&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;-m&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;--mode&#x27;\u003C/span>, choices=[\u003Cspan class=\"hljs-string\">&#x27;hard&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;soft&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;auto&#x27;\u003C/span>], default=\u003Cspan class=\"hljs-string\">&#x27;hard&#x27;\u003C/span>,\n                       \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Wrapping mode (default: hard)&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;--unwrap&#x27;\u003C/span>, action=\u003Cspan class=\"hljs-string\">&#x27;store_true&#x27;\u003C/span>, \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Remove hard line breaks&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;--analyze&#x27;\u003C/span>, action=\u003Cspan class=\"hljs-string\">&#x27;store_true&#x27;\u003C/span>, \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Analyze line lengths only&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;--preserve-code&#x27;\u003C/span>, action=\u003Cspan class=\"hljs-string\">&#x27;store_true&#x27;\u003C/span>, default=\u003Cspan class=\"hljs-literal\">True\u003C/span>,\n                       \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Preserve code block formatting&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;--break-long-words&#x27;\u003C/span>, action=\u003Cspan class=\"hljs-string\">&#x27;store_true&#x27;\u003C/span>,\n                       \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Break long words that exceed line width&#x27;\u003C/span>)\n    parser.add_argument(\u003Cspan class=\"hljs-string\">&#x27;-v&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;--verbose&#x27;\u003C/span>, action=\u003Cspan class=\"hljs-string\">&#x27;store_true&#x27;\u003C/span>, \u003Cspan class=\"hljs-built_in\">help\u003C/span>=\u003Cspan class=\"hljs-string\">&#x27;Verbose output&#x27;\u003C/span>)\n    \n    args = parser.parse_args()\n    \n    \u003Cspan class=\"hljs-comment\"># Setup logging\u003C/span>\n    logging.basicConfig(level=logging.INFO \u003Cspan class=\"hljs-keyword\">if\u003C/span> args.verbose \u003Cspan class=\"hljs-keyword\">else\u003C/span> logging.WARNING)\n    \n    \u003Cspan class=\"hljs-comment\"># Create configuration\u003C/span>\n    config = WrapConfig(\n        width=args.width,\n        mode=WrapMode(args.mode),\n        break_long_words=args.break_long_words,\n        preserve_code_blocks=args.preserve_code\n    )\n    \n    \u003Cspan class=\"hljs-comment\"># Initialize wrapper\u003C/span>\n    wrapper = MarkdownTextWrapper(config)\n    \n    \u003Cspan class=\"hljs-comment\"># Read input file\u003C/span>\n    input_path = Path(args.input_file)\n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> input_path.exists():\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Error: Input file &#x27;\u003Cspan class=\"hljs-subst\">{args.input_file}\u003C/span>&#x27; not found&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-number\">1\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(input_path, \u003Cspan class=\"hljs-string\">&#x27;r&#x27;\u003C/span>, encoding=\u003Cspan class=\"hljs-string\">&#x27;utf-8&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n        content = f.read()\n    \n    \u003Cspan class=\"hljs-comment\"># Analyze mode\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> args.analyze:\n        analysis = wrapper.analyze_line_lengths(content)\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Line Length Analysis for \u003Cspan class=\"hljs-subst\">{args.input_file}\u003C/span>&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Total lines: \u003Cspan class=\"hljs-subst\">{analysis[\u003Cspan class=\"hljs-string\">&#x27;total_lines&#x27;\u003C/span>]}\u003C/span>&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Average length: \u003Cspan class=\"hljs-subst\">{analysis[\u003Cspan class=\"hljs-string\">&#x27;average_length&#x27;\u003C/span>]:\u003Cspan class=\"hljs-number\">.1\u003C/span>f}\u003C/span>&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Max length: \u003Cspan class=\"hljs-subst\">{analysis[\u003Cspan class=\"hljs-string\">&#x27;max_length&#x27;\u003C/span>]}\u003C/span>&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Lines over \u003Cspan class=\"hljs-subst\">{args.width}\u003C/span>: \u003Cspan class=\"hljs-subst\">{analysis[\u003Cspan class=\"hljs-string\">&#x27;lines_over_limit&#x27;\u003C/span>]}\u003C/span>&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Compliance rate: \u003Cspan class=\"hljs-subst\">{analysis[\u003Cspan class=\"hljs-string\">&#x27;compliance_rate&#x27;\u003C/span>]:\u003Cspan class=\"hljs-number\">.1\u003C/span>f}\u003C/span>%&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-number\">0\u003C/span>\n    \n    \u003Cspan class=\"hljs-comment\"># Process content\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> args.unwrap:\n        processed_content = wrapper.unwrap_content(content)\n    \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n        processed_content = wrapper.wrap_content(content)\n    \n    \u003Cspan class=\"hljs-comment\"># Write output\u003C/span>\n    output_path = Path(args.output) \u003Cspan class=\"hljs-keyword\">if\u003C/span> args.output \u003Cspan class=\"hljs-keyword\">else\u003C/span> input_path\n    \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(output_path, \u003Cspan class=\"hljs-string\">&#x27;w&#x27;\u003C/span>, encoding=\u003Cspan class=\"hljs-string\">&#x27;utf-8&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n        f.write(processed_content)\n    \n    \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;✅ Processed \u003Cspan class=\"hljs-subst\">{args.input_file}\u003C/span> -&gt; \u003Cspan class=\"hljs-subst\">{output_path}\u003C/span>&quot;\u003C/span>)\n    \n    \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-number\">0\u003C/span>\n\n\u003Cspan class=\"hljs-keyword\">if\u003C/span> __name__ == \u003Cspan class=\"hljs-string\">&#x27;__main__&#x27;\u003C/span>:\n    \u003Cspan class=\"hljs-keyword\">import\u003C/span> sys\n    sys.exit(main())\n\u003C/code>\u003C/pre>\u003Ch2 id=\"platform-specific-considerations\">Platform-Specific Considerations\u003C/h2>\n\u003Ch3 id=\"github-markdown-wrapping\">GitHub Markdown Wrapping\u003C/h3>\n\u003Cp>GitHub-specific text wrapping strategies and limitations:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># GitHub Markdown Text Wrapping Guidelines\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## GitHub Web Interface Behavior\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Soft Wrapping**\u003C/span>: GitHub web interface soft-wraps at container width\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Mobile Adaptation**\u003C/span>: Automatically adapts to mobile screen sizes\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**README Files**\u003C/span>: 80-character limit recommended for optimal display\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Issue Comments**\u003C/span>: No strict limit, but 72-80 characters preferred\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Pull Request Descriptions**\u003C/span>: 72 characters recommended for clarity\n\n\u003Cspan class=\"hljs-section\">## GitHub Desktop Integration\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Diff Display**\u003C/span>: Hard line breaks improve diff readability\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Merge Conflicts**\u003C/span>: Consistent wrapping reduces conflict complexity\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Blame View**\u003C/span>: Short lines enhance blame annotation visibility\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**History View**\u003C/span>: Consistent formatting improves commit message display\n\n\u003Cspan class=\"hljs-section\">## Best Practices for GitHub\u003C/span>\n\n\n\u003Cspan class=\"hljs-code\">```markdown\n# Repository Documentation Standards\n\n## README.md Formatting\n```\u003C/span>markdown\n\u003Cspan class=\"hljs-section\"># Project Title\u003C/span>\n\nShort description of the project that fits within 72 characters per\nline for optimal GitHub display and mobile compatibility.\n\n\u003Cspan class=\"hljs-section\">## Installation\u003C/span>\n\nInstallation instructions with proper line wrapping:\n\n\u003Cspan class=\"hljs-code\">```bash\nnpm install package-name\ncd project-directory  \nnpm start\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>Usage examples with consistent 80-character line wrapping for\u003Cbr>cross-platform compatibility and improved readability in GitHub&#39;s\u003Cbr>web interface and mobile applications.\u003C/p>\n\u003Cpre>\u003Ccode>\n\n## Issue Template Formatting\n```markdown\n---\nname: Bug report\nabout: Create a report to help us improve\ntitle: &#39;&#39;\nlabels: &#39;bug&#39;\nassignees: &#39;&#39;\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is. Please keep\nlines under 80 characters for optimal display across different\nGitHub interfaces and mobile devices.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to &#39;...&#39;\n2. Click on &#39;....&#39;\n3. Scroll down to &#39;....&#39;\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nUse appropriate line wrapping for readability.\n\u003C/code>\u003C/pre>\u003Ch3 id=\"jekyll-integration-strategies\">Jekyll Integration Strategies\u003C/h3>\n\u003Cp>Jekyll-specific text wrapping considerations for static sites:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Jekyll Text Wrapping Configuration\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## \u003Cspan class=\"hljs-emphasis\">_config.yml Settings\n```yaml\n# Jekyll configuration for text handling\nmarkdown: kramdown\nkramdown:\n  auto_\u003C/span>ids: true\u003C/span>\n  footnote\u003Cspan class=\"hljs-emphasis\">_nr: 1\n  entity_\u003C/span>output: as\u003Cspan class=\"hljs-emphasis\">_char\n  toc_\u003C/span>levels: 1..6\n  smart\u003Cspan class=\"hljs-emphasis\">_quotes: lsquo,rsquo,ldquo,rdquo\n  input: GFM\n  hard_\u003C/span>wrap: false\n  guess\u003Cspan class=\"hljs-emphasis\">_lang: true\n  syntax_\u003C/span>highlighter: rouge\n\u003C/code>\u003C/pre>\u003Ch2 id=\"liquid-template-considerations\">Liquid Template Considerations\u003C/h2>\n\u003Cp>When using Liquid templates, text wrapping interacts with template processing:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">&lt;!-- Proper text wrapping in Liquid templates --&gt;\n&lt;article class=&quot;post-content&quot;&gt;\n  {{ content | strip | truncatewords: 50 }}\n&lt;/article&gt;\n\n&lt;!-- Long parameter lists should be wrapped --&gt;\n{% assign formatted_date = post.date | date: &quot;%B %d, %Y&quot; %}\n{% assign excerpt = post.content | strip_html | truncatewords: 30 %}\n{% assign reading_time = post.content | number_of_words | \n                         divided_by: 200 %}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"front-matter-text-wrapping\">Front Matter Text Wrapping\u003C/h2>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-meta\">---\u003C/span>\n\u003Cspan class=\"hljs-attr\">title:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Example Post Title That May Be Long and Needs Proper Formatting&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">description:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Post description that should be wrapped appropriately for\n  readability and SEO optimization while maintaining YAML syntax.&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">tags:\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">markdown\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">text-wrapping\u003C/span>  \n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">jekyll\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n\u003Cspan class=\"hljs-attr\">keywords:\u003C/span> \u003Cspan class=\"hljs-string\">&gt;\n  markdown text wrapping, jekyll formatting, line length management,\n  documentation standards, static site generation\n\u003C/span>\u003Cspan class=\"hljs-meta\">---\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode>\n## Cross-Platform Compatibility Matrix\n\nText wrapping behavior across different Markdown processors and platforms:\n\n```markdown\n# Platform Compatibility Reference\n\n| Platform | Soft Wrap | Hard Wrap | Line Length | Code Blocks | Tables |\n|----------|-----------|-----------|-------------|-------------|--------|\n| GitHub | ✅ Auto | ✅ Preserved | No Limit | ✅ Preserved | ✅ Preserved |\n| GitLab | ✅ Auto | ✅ Preserved | No Limit | ✅ Preserved | ✅ Preserved |\n| Bitbucket | ✅ Auto | ✅ Preserved | No Limit | ✅ Preserved | ✅ Preserved |\n| Jekyll | ✅ CSS | ✅ Preserved | No Limit | ✅ Preserved | ✅ Preserved |\n| Hugo | ✅ CSS | ✅ Preserved | No Limit | ✅ Preserved | ✅ Preserved |\n| Notion | ✅ Auto | ❌ Converted | Container | ✅ Preserved | ✅ Preserved |\n| Confluence | ✅ Auto | ❌ Converted | Container | ✅ Preserved | ✅ Preserved |\n| Discord | ✅ Auto | ✅ Limited | No Limit | ✅ Limited | ❌ Not Supported |\n| Reddit | ✅ Auto | ✅ Preserved | No Limit | ✅ Preserved | ✅ Limited |\n\n## Rendering Engine Differences\n\n### CommonMark Compliance\n- **Strict**: GitHub, GitLab, Jekyll (with appropriate config)\n- **Extended**: Hugo, most static site generators\n- **Custom**: Notion, Confluence, Discord\n\n### Line Break Handling\n- **Two Spaces**: Creates `&lt;br&gt;` tag in most processors\n- **Backslash**: Creates `&lt;br&gt;` tag in CommonMark-compliant processors\n- **Single Line Break**: Treated as space in paragraphs (most processors)\n- **Double Line Break**: Creates new paragraph (universal)\n\u003C/code>\u003C/pre>\u003Ch2 id=\"integration-with-documentation-workflows\">Integration with Documentation Workflows\u003C/h2>\n\u003Cp>Text wrapping strategies integrate effectively with comprehensive documentation systems. When combined with \u003Ca href=\"/blog/markdown-content-validation-automated-quality-assurance-complete-guide\">automated content validation and quality assurance\u003C/a>, proper line length management ensures consistent formatting while maintaining readability standards across different platforms and viewing contexts.\u003C/p>\n\u003Cp>For advanced documentation architectures, text wrapping complements \u003Ca href=\"/blog/markdown-workflow-automation-and-productivity-complete-guide\">workflow automation and productivity systems\u003C/a> by enabling automated formatting that maintains consistency through content generation, review processes, and publication workflows without sacrificing readability or collaborative editing capabilities.\u003C/p>\n\u003Cp>When building sophisticated content management systems, text wrapping aligns with \u003Ca href=\"/blog/markdown-performance-optimization-rendering-speed-guide\">performance optimization strategies\u003C/a> to ensure that properly formatted content renders efficiently across different devices and platforms while maintaining accessibility standards and user experience quality.\u003C/p>\n\u003Ch2 id=\"troubleshooting-common-wrapping-issues\">Troubleshooting Common Wrapping Issues\u003C/h2>\n\u003Ch3 id=\"editor-configuration-conflicts\">Editor Configuration Conflicts\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Different editors apply inconsistent wrapping\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-json\">\u003Cspan class=\"hljs-comment\">// .editorconfig - Universal editor configuration\u003C/span>\nroot = \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\n\n\u003Cspan class=\"hljs-punctuation\">[\u003C/span>*.md\u003Cspan class=\"hljs-punctuation\">]\u003C/span>\ncharset = utf\u003Cspan class=\"hljs-number\">-8\u003C/span>\nend_of_line = lf\ninsert_final_newline = \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\ntrim_trailing_whitespace = \u003Cspan class=\"hljs-literal\">\u003Cspan class=\"hljs-keyword\">true\u003C/span>\u003C/span>\nindent_style = space\nindent_size = \u003Cspan class=\"hljs-number\">2\u003C/span>\nmax_line_length = \u003Cspan class=\"hljs-number\">80\u003C/span>\n\n\u003Cspan class=\"hljs-punctuation\">[\u003C/span>*.\u003Cspan class=\"hljs-punctuation\">{\u003C/span>yml\u003Cspan class=\"hljs-punctuation\">,\u003C/span>yaml\u003Cspan class=\"hljs-punctuation\">}\u003C/span>\u003Cspan class=\"hljs-punctuation\">]\u003C/span>\nindent_style = space\nindent_size = \u003Cspan class=\"hljs-number\">2\u003C/span>\nmax_line_length = \u003Cspan class=\"hljs-number\">80\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"version-control-merge-conflicts\">Version Control Merge Conflicts\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Different line wrapping causes merge conflicts\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-comment\"># .gitattributes - Normalize text handling\u003C/span>\n*.md text eol=lf\n*.markdown text eol=lf\n\n\u003Cspan class=\"hljs-comment\"># Pre-commit hook to normalize formatting\u003C/span>\n\u003Cspan class=\"hljs-comment\">#!/bin/bash\u003C/span>\n\u003Cspan class=\"hljs-comment\"># .git/hooks/pre-commit\u003C/span>\n\u003Cspan class=\"hljs-keyword\">for\u003C/span> file \u003Cspan class=\"hljs-keyword\">in\u003C/span> $(git diff --cached --name-only | grep \u003Cspan class=\"hljs-string\">&#x27;\\.md$&#x27;\u003C/span>); \u003Cspan class=\"hljs-keyword\">do\u003C/span>\n    \u003Cspan class=\"hljs-comment\"># Normalize text wrapping\u003C/span>\n    python markdown_wrapper.py \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file\u003C/span>&quot;\u003C/span> --width 80\n    git add \u003Cspan class=\"hljs-string\">&quot;\u003Cspan class=\"hljs-variable\">$file\u003C/span>&quot;\u003C/span>\n\u003Cspan class=\"hljs-keyword\">done\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"performance-issues-with-large-files\">Performance Issues with Large Files\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Text wrapping slows down large file processing\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># Optimized batch processing for large files\u003C/span>\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">process_large_markdown_files\u003C/span>(\u003Cspan class=\"hljs-params\">directory: Path, max_size: \u003Cspan class=\"hljs-built_in\">int\u003C/span> = \u003Cspan class=\"hljs-number\">1024\u003C/span>*\u003Cspan class=\"hljs-number\">1024\u003C/span>\u003C/span>):\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Process large Markdown files efficiently&quot;&quot;&quot;\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">for\u003C/span> md_file \u003Cspan class=\"hljs-keyword\">in\u003C/span> directory.rglob(\u003Cspan class=\"hljs-string\">&#x27;*.md&#x27;\u003C/span>):\n        file_size = md_file.stat().st_size\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> file_size &gt; max_size:\n            \u003Cspan class=\"hljs-comment\"># Process in chunks for very large files\u003C/span>\n            process_file_in_chunks(md_file)\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n            \u003Cspan class=\"hljs-comment\"># Standard processing\u003C/span>\n            wrapper = MarkdownTextWrapper()\n            \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(md_file, \u003Cspan class=\"hljs-string\">&#x27;r&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n                content = f.read()\n            \n            wrapped_content = wrapper.wrap_content(content)\n            \n            \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(md_file, \u003Cspan class=\"hljs-string\">&#x27;w&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n                f.write(wrapped_content)\n\u003C/code>\u003C/pre>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>Mastering Markdown text wrapping and line length management is essential for creating professional, maintainable documentation that renders consistently across platforms while supporting collaborative editing and version control workflows. By implementing appropriate wrapping strategies, configuring editors properly, and understanding platform-specific requirements, you can create documentation systems that balance readability, maintainability, and technical precision.\u003C/p>\n\u003Cp>The key to successful text wrapping lies in understanding your target platforms, implementing consistent formatting standards, and choosing appropriate tools and configurations for your workflow requirements. Whether you&#39;re creating technical documentation, blog posts, or collaborative project documentation, these text wrapping techniques provide the foundation for creating sustainable, professional content that serves both human readers and automated processing systems effectively.\u003C/p>\n\u003Cp>Remember to test your wrapping strategies across all target platforms, establish clear team standards for line length and formatting, and implement automated tools to maintain consistency throughout your documentation lifecycle. With proper attention to text wrapping and line length management, your Markdown content can achieve the clarity, professionalism, and technical accuracy that modern documentation demands.\u003C/p>\n",[15,19,22,25,28,31,34,37,40,43,46],{"id":16,"text":17,"level":18},"why-master-text-wrapping-and-line-length","Why Master Text Wrapping and Line Length?",2,{"id":20,"text":21,"level":18},"foundation-text-wrapping-concepts","Foundation Text Wrapping Concepts",{"id":23,"text":24,"level":18},"editor-configuration-strategies","Editor Configuration Strategies",{"id":26,"text":27,"level":18},"automated-wrapping-strategies","Automated Wrapping Strategies",{"id":29,"text":30,"level":18},"platform-specific-considerations","Platform-Specific Considerations",{"id":32,"text":33,"level":18},"usage","Usage",{"id":35,"text":36,"level":18},"liquid-template-considerations","Liquid Template Considerations",{"id":38,"text":39,"level":18},"front-matter-text-wrapping","Front Matter Text Wrapping",{"id":41,"text":42,"level":18},"integration-with-documentation-workflows","Integration with Documentation Workflows",{"id":44,"text":45,"level":18},"troubleshooting-common-wrapping-issues","Troubleshooting Common Wrapping Issues",{"id":47,"text":48,"level":18},"conclusion","Conclusion",[],[51,59,67],{"slug":52,"title":53,"description":54,"excerpt":55,"date":56,"category":9,"author":10,"keywords":57,"readingMinutes":58},"markdown-text-wrapping-line-length-management-guide","Markdown Text Wrapping and Line Length Management: Complete Guide for Document Formatting and Content Optimization","Master Markdown text wrapping techniques, line length management, and content formatting for optimal readability across different platforms. Learn hard wraps, soft wraps, line break strategies, and automated formatting approaches.","Advanced Markdown text wrapping and line length management techniques enable professional document formatting that optimizes content readability across different platforms and display…","2025-11-06","markdown text wrapping, markdown line length, text formatting markdown, markdown hard wrap, markdown soft wrap, line breaks markdown, markdown paragraph formatting, content optimization",19,{"slug":60,"title":61,"description":62,"excerpt":63,"date":64,"category":9,"author":10,"keywords":65,"readingMinutes":66},"markdown-document-versioning-change-tracking-complete-guide","Markdown Document Versioning and Change Tracking: Complete Guide for Professional Documentation Management","Master document versioning and change tracking in Markdown for professional documentation workflows. Learn version control integration, automated change detection, collaborative editing, and revision management for comprehensive documentation maintenance.","Markdown document versioning and change tracking enables professional documentation management through systematic revision control, collaborative editing workflows, and automated change detection…","2025-09-13","markdown versioning, document change tracking, markdown revision control, git documentation workflow, collaborative markdown editing, document history tracking, markdown diff tools, version control markdown",30,{"slug":68,"title":69,"description":70,"excerpt":71,"date":72,"category":9,"author":10,"keywords":73,"readingMinutes":74},"markdown-text-decoration-combinations-complete-guide","Markdown Text Decoration Combinations: Complete Guide for Advanced Formatting and Cross-Platform Styling","Master advanced Markdown text decoration combinations including strikethrough, underline, and mixed formatting techniques. Learn platform-specific implementations, accessibility considerations, and best practices for complex text styling.","Advanced Markdown text decoration combinations enable sophisticated document formatting that goes beyond basic emphasis, allowing technical writers and content creators to develop nuanced visual…","2025-11-27","markdown text decoration, markdown strikethrough combinations, advanced markdown formatting, markdown text styling, cross-platform markdown, markdown accessibility formatting, text decoration markdown",10,1792184944354]