段落格式化

首行缩进/行号/自动分段

424 次访问

段落格式化 · 自动排版

原文0 字符 · 0 段
格式化结果0 字符 · 0 段

使用建议

· 段首缩进 2 字:中文公文 / 论文 / 出版排版标准(用全角空格   

· 合并段内换行:从 PDF / 微信复制的文本通常被强制断行,需合并

· 段间空行:网页正文排版常用;纸质排版通常不加

· 句号自动分段:长段落自动按 。!? 切分(适合演讲稿 / 朗读稿)

· 修正英文混排:中英文之间自动加空格("Hello世界" → "Hello 世界"),现代中文排版习惯

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

📝

论文格式检查

学术写作者提交论文前,最怕段落首行缩进不一致、行号错乱。本工具一键统一全篇缩进(2 字符 / 4 字符可选),自动添加行号(每 5 行标号),并识别连续空行自动分段。省去逐段手动调整的 30 分钟,确保格式符合期刊投稿规范。

💻

代码注释排版

程序员整理技术文档或 README 时,常遇到从 IDE 复制过来的代码块首行缩进混乱、行号缺失。本工具对代码文本进行标准化缩进(保持层级),可选添加行号,并自动将过长注释块按空行拆分为逻辑段落。让文档在 GitHub 上直接可读,无需二次排版。

📄

合同文本校对

法务或行政人员处理多页合同电子版时,段落界限模糊(条款挤在一起)、首行缩进不统一影响法律效力。本工具按空行 / 句号自动分段,统一缩进为 2 字符,并输出带行号的版本。方便多人审阅时快速定位条款位置,减少沟通成本。

📚

读书笔记整理

阅读爱好者从电子书 / 网页摘录大量段落,粘贴后首行缩进消失、段落粘连。本工具自动识别每个摘录片段的首行并添加缩进,根据换行符数量判断段落边界(连续 2 个换行 = 新段落)。输出整洁的笔记文本,可直接导入 Notion / Obsidian 等笔记软件。

📧

邮件正文排版

商务人士从 Word / 网页复制长段落到邮件编辑器时,缩进丢失、段落合并成一大块。本工具一键恢复首行缩进,并自动在长段落中按标点断句后重新分段。让邮件正文在 Outlook / Gmail 中保持清晰层次,收件人无需滚动即可抓住重点。

对比矩阵本工具 vs 竞品 vs 传统方法

维度段落格式化Word/WPS 排版在线文本格式化工具
数据隐私纯浏览器处理,文本不上传服务器文件存储在本地或云端,取决于用户设置文本需上传至第三方服务器,存在隐私风险
处理速度即时处理(毫秒级)手动操作,数秒至数分钟取决于网络延迟,通常 1-3 秒
离线可用完全离线,无需网络完全离线(本地版)必须联网
操作复杂度一键格式化,无需学习需掌握段落设置、制表位等操作需复制粘贴,部分工具需注册
格式控制精度首行缩进 2 字符,自动分段完全自定义(缩进值、行距、段前段后等)通常仅支持基础缩进,分段规则不透明
批量处理单次输入,不支持批量支持批量文档处理部分支持批量上传
收费模式免费,无隐藏费用需购买 Office 授权或订阅基础功能免费,高级功能收费

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
这是第一段。这是第二段。这是第三段。这是第一段。 这是第二段。 这是第三段。典型场景:自动分段并添加首行缩进
这是有缩进的文本。 下一行也有缩进。这是有缩进的文本。 下一行也有缩进。边界 case:输入本身已有空格缩进
一段很长的文本,没有换行符号,一直连续写下去直到超过屏幕宽度,看看工具是否会自动分段。一段很长的文本,没有换行符号,一直连续写下去直到超过屏幕宽度,看看工具是否会自动分段。边界 case:无换行超长文本,工具不自动断句
1. 第一项 2. 第二项 3. 第三项1. 第一项 2. 第二项 3. 第三项典型场景:带编号的列表格式化
(无输出)边界 case:空输入,工具无响应
易错 case:输入仅含空格和换行
第一行 第二行(中间有空行)第一行 第二行(中间有空行)典型场景:保留原始空行结构

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 把全角空格当成缩进

错误
  这是第一段话。
修复
  这是第一段话。

全角空格(U+3000)在多数编辑器和 Web 渲染中宽度不固定,工具首行缩进用的是两个 em 空格(U+2003)或 CSS text-indent,混用会导致缩进量不一致。

2. 手动在每段前敲两个空格

错误
  这是第一段。
  这是第二段。
修复
这是第一段。

这是第二段。

工具「首行缩进」功能会自动在每个段落开头添加缩进;手动加空格会导致缩进重复(变成 4 个空格),且破坏自动分段逻辑。

3. 用空行分段但段落内也含空行

错误
第一行文字

空一行

第二段开头
修复
第一行文字

第二段开头

工具「自动分段」以连续两个换行符作为段落分隔;段落内部如果插入空行(单个换行),会被视为同一段落内的换行,不会触发分段。

4. 把行号当成内容的一部分复制回去

错误
1 这是第一行
2 这是第二行
修复
这是第一行
这是第二行

启用「行号」后,每行前面会显示数字+空格,这些是渲染层附加的标记,并非原文内容。直接复制带行号的文本会污染后续处理。

5. 用 Tab 代替缩进

错误
		这是第一段。
修复
  这是第一段。

Tab 宽度在不同浏览器/终端中显示不同(2/4/8 格),工具固定使用两个 em 空格实现缩进;混用 Tab 会导致排版错位。

6. 在纯英文段落中期望首行缩进效果

错误
This is a paragraph.

This is another.
修复
(英文段落通常不缩进,工具默认对所有语言加缩进,如需取消可手动移除)

中文排版习惯首行缩进两字符,英文排版习惯段间空行不缩进;工具按中文习惯处理,英文用户可能觉得多余。

7. 输入包含 HTML 标签的文本

错误
<p>第一段</p><p>第二段</p>
修复
第一段

第二段

工具对纯文本进行格式化,不解析 HTML 标签。输入标签会被当成普通字符处理,导致输出中出现 <p> 等原文。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

缩进量 = 首行字符数 × 字符宽度(px)

变量说明

  • 缩进量 — 首行缩进的总像素宽度
  • 首行字符数 — 用户设定的缩进字符个数(如2)
  • 字符宽度 — 当前字体下单个字符的像素宽度

示例

用户设定首行缩进2个字符,当前字体为16px宋体,单个汉字宽度≈16px。则缩进量 = 2 × 16 = 32px。工具在每段首行前插入32px空白。

适用范围

适用于纯文本段落格式化场景。缩进量依赖字体和字号,等宽字体与比例字体下字符宽度不同,工具自动取当前渲染环境的平均字符宽度。

原理图

输入文本粘贴或键入浏览器本地处理• 首行缩进(2字符)• 行号添加(1,2,3...)• 自动分段(空行检测)格式化结果实时预览隐私说明所有处理在浏览器本地完成,文本不会上传到服务器
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import re

def auto_paragraph(text: str, max_len: int = 80) -> str:
    """按标点断句后,每句不超过 max_len 字符时合并为一段。"""
    sentences = re.split(r'(?<=[。!?])', text)
    paragraphs = []
    current = ""
    for s in sentences:
        if len(current) + len(s) > max_len and current:
            paragraphs.append(current.strip())
            current = s
        else:
            current += s
    if current:
        paragraphs.append(current.strip())
    return '\n\n'.join(paragraphs)

# 示例输入
text = "今天天气真好。我们去公园散步。然后吃了冰淇淋。晚上回家看了电影。"
print(auto_paragraph(text, 15))
# 输出:
# 今天天气真好。我们去公园散步。
#
# 然后吃了冰淇淋。晚上回家看了电影。
package main

import (
	"fmt"
	"strings"
	"unicode/utf8"
)

// addLineNumbers 给每行添加行号,行号右对齐
func addLineNumbers(text string) string {
	lines := strings.Split(text, "\n")
	// 计算行号宽度(至少2位)
	width := 2
	if len(lines) >= 100 {
		width = 3
	}
	var result strings.Builder
	for i, line := range lines {
		num := fmt.Sprintf("%*d", width, i+1)
		result.WriteString(num + " | " + line + "\n")
	}
	return result.String()
}

func main() {
	input := "第一行内容\n第二行内容\n第三行内容"
	fmt.Print(addLineNumbers(input))
	// 输出:
	//  1 | 第一行内容
	//  2 | 第二行内容
	//  3 | 第三行内容
	_ = utf8.RuneCountInString("示例") // 确保 utf8 包被引用
}
/**
 * 首行缩进 2 个中文字符(4 个空格)
 * 仅对段落首行生效,不破坏原有缩进
 */
function indentFirstLine(text) {
  const INDENT = '    '; // 2 个汉字宽度
  return text.replace(/^(.+)$/gm, (match) => {
    return INDENT + match;
  });
}

// 示例
const raw = `这是第一段。
这是第二段。`;
console.log(indentFirstLine(raw));
// 输出:
//     这是第一段。
//     这是第二段。

常见问题

7 个高频疑问

这个工具怎么用?我复制了一段文字进去,点按钮没反应。
工具默认开启了「首行缩进」和「自动分段」两个功能。如果点按钮后文字没变化,先检查输入框里是否真的粘贴进了内容(常见情况是只点了粘贴快捷键但没实际粘贴)。其次,确认文字里原本就有空行——「自动分段」是以连续两个换行符(即空行)作为段落分隔的,如果全文没有空行,所有文字会被当成一个段落,只在第一行加缩进。想在预览里看到效果,可以手动在文字里插几个空行再试。
为什么我点「显示行号」后,有些行号是乱的?比如第 10 行后面直接跳到第 12 行?
行号是按「换行符」计数的,不是按屏幕上的视觉行。如果原文某行末尾有手动换行(比如每句都按了一次回车),那每一句都会被算作一行,行号会连续递增。如果原文里既有手动换行又有自动换行(比如长段落被浏览器折行),行号只对手动换行生效,视觉上看起来会跳号。解决方法是:先点「自动分段」把多余的手动换行合并成段落,再开行号,这时行号只对段落首行生效。
这个工具是本地处理的吗?我的文字内容会不会被上传到服务器?
纯本地处理。整个排版逻辑(首行缩进、行号编号、自动分段)全部在浏览器内用 JavaScript 执行,文字内容不会离开你的电脑。可以验证:打开浏览器开发者工具(F12)切到 Network 标签,点击「格式化」按钮后观察——没有任何网络请求发出。即使断网,工具也能正常工作。关闭页面后,输入框里的文字也会从内存中清除。
文字里有很多英文和数字,缩进后英文单词被截断了,怎么解决?
首行缩进是在每个段落开头插入两个全角空格(或 2em 空白),这不会影响英文单词本身的完整性。如果看到英文单词在行尾被截断,那是浏览器默认的换行行为(word-break: normal)导致的,和缩进无关。可以在输出结果区域手动给文字添加 CSS 样式 `word-break: break-all` 或 `overflow-wrap: break-word` 来调整。工具本身不修改单词内部的断词逻辑。
和 Word 里的首行缩进比,这个工具有什么区别?哪个更准?
Word 的首行缩进是用段落样式控制的,缩进量可以精确到 0.01 字符,并且支持「首行缩进」和「悬挂缩进」两种模式。本工具只做最简单的首行缩进——在每个段落开头插入固定宽度的空格(2 个全角空格宽度),不支持自定义缩进量,也不支持悬挂缩进。优点是无需安装软件、浏览器里直接出结果,适合快速整理纯文本稿件。如果需要精细排版(比如学术论文格式),建议用 Word 的段落样式。
我有一段代码贴在工具里,自动分段把我的代码结构打乱了,怎么办?
自动分段是以连续两个换行符(空行)作为段落分隔符的。代码通常没有空行(或者空行极少),工具会把整段代码识别成一个段落,只在第一行加缩进,不会拆分代码内部的逻辑块。如果代码里原本就有空行(比如函数之间),工具会按空行把代码切成多个段落,每个段落首行都会缩进,这可能破坏代码对齐。建议:处理代码时先关闭「自动分段」开关,只保留「首行缩进」或「行号」功能。
工具支持 PDF 或图片里面的文字吗?怎么把 PDF 里的段落格式化?
不支持直接处理 PDF 或图片。工具只接受纯文本输入(手动粘贴或拖拽 .txt 文件)。如果要从 PDF 里提取文字,需要先用其他工具(如 Adobe Acrobat 导出、在线 PDF 转文本、或 OCR 软件)把内容转为纯文本,再粘贴进来格式化。注意:PDF 提取的文字经常丢失换行符或段落标记,导致粘贴后所有文字连成一片——建议先手动检查文字结构,加回必要的空行,再用本工具的自动分段功能。
选择 打开 +新窗口 esc关闭