人类高质量CD抓轨指北

免责声明: 本文所述方法仅供技术交流使用,并不代表笔者对相关行为表示支持。对于由音源抓取和分享行为产生的任何法律风险,与笔者无关。

0. 前言

温馨提示:萌新请直接从 1. 概述 开始阅读

2024年新年伊始,首先祝大家新年快乐。
距离前面版本的教程更新已经过去将近6年时间。就CD抓取来说,整个工作流确实没有太大变化。反倒是人的变化来得更大一点。
不过也有几个值得一提的地方:首先是flac.exe,也就是命令行版flac编码器,从2019年开始居然开始连续更新了。截至发稿时,最新版本已经是1.4.3。效率提高的同时,也终于支持了32bit integer编码。虽然由于flac标准的限制,仍然不支持非编里面最常用到的中间格式32bit float,但比起之前压缩32bit只能先ffmpeg降采样到24bit已经好了很多。
而第二个变化在于EAC软件本身的更新。这个上古软件在2020年也神奇地恢复了更新,虽然伴随着一些bug,但最终版本1.6已经相对稳定。最大的亮点就是更换了自带数据源,也就是换掉了死掉的freedb改为MusicBrainz。另外就是支持第二个编码器编码(比如同时出MP3和FLAC)。
笔者之所以在这个时候重写教程,一方面之前的教程中图片尽数失效,另一方面这么长的时间也确实有了一些新的认识和经验,所以与大家分享一下,也方便自己的整理和参考。

1. 概述

目前圈子内公认的,在Windows平台下最好的抓轨(翻录)软件叫做Exact Audio Copy,也就是常说的EAC
EAC一款免费软件,有自带中文支持。然而,为了最大程度发挥精确抓轨的优势,需要进行一番配置。然而别担心,只要你不更换接口或者重装软件,一次配置之后,就可以直接进行碟片抓取了。

注意
EAC的E是「准确的」这个英文单词——Exact。不要输错了。 有一个软件叫Easy Audio Copy,完全不是一回事。
EAC的下载地址是https://www.exactaudiocopy.de/en/index.php/resources/download/
发稿时(2024.01.01)最新版本是1.6

每张CD都有曲目信息。有的碟片会把曲目信息直接写入光盘内部,叫做CD-TEXT。然而多数碟片不会提供这个信息。即使有,许多时候也不精确或者不完整。这个时候,我们有两种方法。其一就是对照光盘的歌词本或者曲目表(一般在碟片背面或者本体上)手动编辑,另外一种方法就是从元数据数据库获取。所谓的元数据,就是储存碟片特征(通常是碟片ID)与碟片信息的在线数据库。

提示
一般来说,数据源或者网上的信息与碟片标注(包括歌词本、封底)不符的,按碟片标注为准。

最后是碟片抓取后的储存格式。一般只建议两种格式,也就是WAV格式的「整轨」FLAC格式的「分轨」。所谓的「整轨」,就是将整张盘片抓取为单个文件,然后利用CUE目录文件定位曲目。而所谓「分轨」,则是和正常听歌一样,每首歌一个文件

注意
为了保存碟片结构,比如曲目之间的无声「间隙」等信息,即使抓取分轨,也强烈建议生成一份CUE文件。

整轨分轨之争素来有之,就我个人而言,从便于分享和减少体积的角度,还是推荐优先采用分轨FLAC。这也是很多站点建议或者要求的格式。

2. 配置

建议不要使用配置向导配置,直接手动配置比较好。
这里采用官方简体中文的选项名称。如果用英文,自己翻译一下(笑)
设置时,最好不要放入光盘

2.1 EAC选项

EAC选项为软件全局设置,和光驱无关。各个选项卡中需要特别留意的设定项如下。未提到的选项可以按照鼠标悬停提示自行判断或者保留默认设置

2.1.1 抓取

EAC-抓取.png

  • 勾选:用静音填充丢失的偏移采样
  • 勾选: 音轨间同步
  • 不要勾选: 删除头部及尾部的静音块
  • 纠错品质:
  • (可选)勾选: 在抓取过程中锁定驱动器

2.1.2 常规

EAC-常规.png

  • (先勾选再选择选项)对于信息来源不明的CD: 自动连接到在线的元数据
  • 勾选: 总是使用英语创建日志文件
  • (可选)勾选: 使用备用CD播放方法
  • (可选)勾选: 在EAC运行时禁止使用音频和数据CD的自动播放功能
  • (可选)不要勾选: 抓取完毕后显示状态对话框
  • (可选)不要勾选: 抓取完毕后发出声音提示

2.1.3 工具

EAC-工具.png

  • 勾选: 创建CUE文件时寻找UPC/ISRC代码
  • 勾选:创建CUE文件时使用CD-Text信息

提示
当然,前提是光驱能够读取这两个信息。一般光驱都能支持,如果不支持就会直接报错,这个时候再关掉也不迟。

  • 勾选: 抓取完毕后自动生成状态报告
  • 勾选: 增加校验至状态报告
  • 不要勾选: 自动转换BMP图像格式为JPG图像格式‘
  • 勾选: 不开启外部压缩程序界面
  • 不要勾选: 激活新手模式,禁用所有高级特性
  • (可选)不要勾选: 抓取时创建.m3u播放列表

提示
m3u列表就是一个写着文件名的播放列表(.m3u8)。整轨没用,分轨直接用文件名打开就行,也不需要。前面的版本建议保留,这版教程我建议不勾选。如果非要勾选,请把两个选项都选上(写入扩展信息和UTF8)。

2.1.4 标准化

EAC-标准化.png

  • 不要勾选: 标准化

2.1.5 文件名

EAC-文件名.png
命名方案

%tracknr2% - %title%

勾选: 使用多艺术家命名方案

%tracknr2% - %artist% - %title%

不要勾选: 用下划线替换空格

提示
1 如果希望采用三位数的曲目号,如001,用%tracknr3%替换。
2 采用%tracknr2%. %title%如果你更喜欢用.而不是-分割曲目号和曲名。
3 EAC1.4及以后版本,支持两个编码器同时编码,所以多出一个翻译为「附加文件名」的选项,按照原样设置即可不要额外在文件名设置中加入文件夹,否则会导致CUE生成后无法对应需要手动修改。

2.2 驱动器选项

驱动器选项是针对每个光驱的。

2.2.1 抓取模式

光驱-抓取.png
检测读取特性按钮检测。不要装入光盘

  • 根据检测结果勾选或者取消勾选安全模式中的精确流特性缓冲音频数据
  • 不要勾选: 驱动器具有纠正C2错误的能力,无论检测结果中是否支持都不要勾选
  • 不要选择: 安全模式-带有下列驱动器特性的安全模式之外的其他模式

2.2.2 驱动器

光驱-驱动器.png

现在自动检测读取指令按钮检测和自动设定。

  • 勾选: 驱动器支持CD-Text读取,无论是否检测成功都要勾选

提示
同上,如果不支持再取消也不迟。

2.2.3 最重要:偏移/速度

光驱-偏移.png

如果使用读取偏移校正未被填入并禁用(即文本框有值,且无法输入),点击检测读取采样偏移校正按钮检测和设置
具体做法是,用相对早一点,知名度高一点(即最好非同人)的碟片,对比数据库的数据与当前抓取的数据,得到相对准确的偏移量。这一点和直接放入碟片时弹出的检测对话框的作用一致。

提示
软件的弹框说是需要3张以上才能校正完成,但有可能放一两张就检测成功了。比如我的16D1HT就是1张盘检测完毕,之前的阿苏斯便携光驱是2张。
光驱-偏移设置1.png
光驱-偏移设置2.png
另外,没有设置这个选项的时候,插入支持检测(也就是符合上述条件的,数据库已有数据)的碟片,会自动弹窗,所以不是非得进入这个选项卡里面设置。
至于如何判断是否符合,不支持的碟片检测后会弹框提示未在数据库中找到

  • 勾选: 抓取过程中允许降速
  • 勾选: 在驱动器上使用AccurateRip

提示
AccurateRip(简记AR,下同)选项只有在经过检测后输入间隙才能勾选。未经前面说的检测,手动输入是无法勾选的。
当然,如果实在找不到在数据库中的碟片。那就只好通过查表(http://www.accuraterip.com/driveoffsets.htm, 或者搜索光驱型号+偏移量手动输入偏移量,这个选项保持不勾选就是了。
AR不见得准确,它只体现同一碟片ID其他人的抓取结果,甚至在样本少的情况下,存在库中数据反而错误的可能,当然多数情况还是有参考意义的

  • 不要勾选: 通读到Lead-In 和 Lead-Out

提示
这个选项影响不大。随意开启反而会造成卡99%
根据某论坛研究结果,只有在检测读取采样偏移校正按钮弹窗中的检测结果中出现下列结果,才考虑勾选:
(1) 通读 同时支持导入导出
(2) 通读 仅有导入偏移量负数
(3) 通读 仅有导出偏移量正数
光驱-偏移2.png
如果已经设置完成,需要重新查看支持情况,请先取消勾选在驱动器上使用AccurateRip,然后重新点击上述按钮查看。此时可以不插入AR数据库内的碟片,因为我们只需要查看通读属性。查看之后再次勾回使用AR选项即可。

相关内容也可以参考:
https://zexwoo.blog/posts/research/offsets-affect-ripping/

2.2.4 间隙检测

光驱-间隙检测.png

  • 间隙/索引寻获方法:从AC尝试,因为AC速度递减。
  • 检测精确度: 优先安全、然后准确

提示
所谓间隙就是前面所说的,音轨之间的静音区间。在抓取之前需要检测。检测结果反映在CUE中。
间隙检测如果失败,先调整寻获方法,再调整精确度

2.3 压缩选项

2.3.1 外部压缩程序

压缩-外部.png

  • 参数传递方案:用户定义的编码器
  • 使用文件扩展名: .flac
  • 压缩程序及路径: flac.exe的位置
  • Bit rate比特率: 最大数字即可
  • 勾选: 压缩完毕后删除WAV文件
  • 不要勾选:使用CRC校验
  • 不要勾选:添加ID3标签
  • 勾选:检查外部程序返回值
  • 勾选: 高品质

附加命令行选项

-8 -e -V -T "ARTIST=%artist%" -T "TITLE=%title%" -T "ALBUM=%albumtitle%" -T "DATE=%year%" -T "TRACKNUMBER=%tracknr%" -T "GENRE=%genre%" -T "PERFORMER=%albuminterpret%" -T "COMPOSER=%composer%" -T "ALBUMARTIST=%albumartist%" -T "DISCNUMBER=%cdnumber%" -T "TOTALDISCS=%totalcds%" -T "TOTALTRACKS=%numtracks%" -T "COMMENT=%comment%" %source% -o %dest%

注意
(1) 这是采用EAC 1.5之后变量格式的版本。对于1.3版本,请采用:

-8 -e -V -T "ARTIST=%artist%" -T "TITLE=%title%" -T "ALBUM=%albumtitle%" -T "DATE=%year%" -T "TRACKNUMBER=%tracknr%" -T "GENRE=%genre%" -T "PERFORMER=%albuminterpret%" -T "COMPOSER=%composer%" %haslyrics%--tag-from-file=LYRICS="%lyricsfile%"%haslyrics% -T "ALBUMARTIST=%albumartist%" -T "DISCNUMBER=%cdnumber%" -T "TOTALDISCS=%totalcds%" -T "TOTALTRACKS=%numtracks%" -T "COMMENT=%comment%" %source% -o %dest%

(2) FLAC.exe下载地址: https://github.com/xiph/flac/releases

2.3.2 ID3标签

压缩-ID3.png

  • 勾选在存放抓取文件的文件夹中加入专辑图片
  • 其余选项全部不要勾选

2.4 元数据选项

除了GD3这个付费数据源之外,推荐使用MusicBrainz。然后额外配置一下freedb选项卡即可。

2.4.1 freedb

元数据-freedb.png

  • 邮件地址:随便填
  • Freedb服务器: 默认或者http://gnudb.gnudb.org:80/~cddb/cddb.cgi

提示
按需求填入代理地址

2.4.2 (非选项卡,仅作补充)使用vuplayer获取

这是使用Gracenote的外部数据源软件,利用cdplayer.iniEAC交互。稍后会介绍如何安装和使用。

2.4.3 (非选项卡,仅作补充)参考在线数据库输入

除了官网、网店介绍、豆瓣等综合站外,下列数据网站可供参考

3. 抓取

3.1 元数据获取或填写

抓取-01.png

请填写以下项目:

  • CD标题
  • CD艺术家
  • 年份
  • 类别
  • 曲目标题
  • CD封面
  • 第一曲目号码
  • CD总数
  • CD编号

3.1.1 数据元获取

抓取-02.png

3.1.2 vuplayer 获取

前面说到这个软件,这里具体介绍一下使用方法。
(1) 下载地址
http://www.vuplayer.com/player.php

注意
软件名字就叫Player,不是vuplayer。后者是播放器的名字,而我们只需要获取元数据。

(2) 运行和注册
a. 安装
b. 管理员运行
c. File-Grancenote-Registration

抓取-03.png

(3) 获取
a. 插入碟片
b. 进入软件,按Ctrl+G
c. 能识别出来,选择合适的专辑
d. 如果c中选错,重复步骤b选择另一张专辑

(4) 导出
File - Export Info - cdplayer.ini

抓取-04.png

提示
cdplayer.ini的位置在系统盘的Windows文件夹。不过Win11似乎默认有保护机制,文件放在C:\Users\Username\AppData\Local\VirtualStore\Windows

(5) 导入
EAC-数据库-获取CD信息-从CDPLAYER.INI

抓取-05.png

3.2 元数据校对修正

  • 对照碟片歌词本、封底、侧封(obi/帯)校对和修正文本。
  • 确认连字符等的显示情况。
  • 将未填写字段查证后填写,比如vuplayer并不会填写发行年

3.3 间隙检测

3.3.1 间隙检测

a. F4 检测间隙
b. F3 检测静音间隙
c. 保证操作-追加间隙到上一轨勾选

抓取-06.png

3.3.2 生成CUE(仅对于分轨)

操作-创建CUE目录文件-多个带间隔的CUE文件(非规则)

抓取-07.png

提示
a. 创建结束时会弹出选择保存位置的窗口,这时候可以创建存储抓取文件的目录。

b. 请注意,由于目录的绝对路径会被记录在log中,而log禁止编辑所以请不要在路径中出现用户名或其他可能涉及隐私的信息。

c. 推荐两种目录命名方式:
(1) 艺术家 - 专辑名 (年份数字) [音轨格式]
例:Aimer - 残響散歌/朝が来る (2022) [FLAC]
(2) [6位年月日] 专辑名/艺术家 (格式)
例:[220112] 残響散歌/朝が来る(初回生産限定盤)/Aimer (flac+iso+png)
笔者的习惯是,日系碟片且发行日期明确的用(2),其余用(1)。

d. CUE文件的名称,我的习惯是直接采用CD的碟片番号,如VVCL-1953.cue。如果没有番号再采用艺术家 - 专辑名.cue的格式。

e. 在CUE生成后,手动将CUE编码转换为UTF-8
(1) 在VS Code中,点击右下角UTF-8字样选择Reopen with Encoding,然后选择系统默认编码,即日语环境下JIS,简中GB2312
抓取-10.png
(2) 再点击右下角UTF-8字样选择Save with Encoding,然后选择UTF-8
有些朋友可能更愿意通过fb2k+cue管理和播放抓轨,如果fb2k出现乱码,可以储存为UTF-8 with BOM
p.s. 然而CUE是刻碟用的,已有分轨的情况下,不要用CUE来播放。实在有需要,请参考2.1.3设置m3u并用m3u8文件播放。

3.4 抓取

3.4.1 分轨

a. 确保执行完3.3.2建立好文件夹
b. Shift+F6 测试并抓取所选音轨(已压缩)

抓取-08.png

3.4.2 整轨

a. 操作 - 测试并抓取镜像并创建CUE目录文件 - 未压缩

抓取-09.png

b. 在弹窗中,参考3.3.2命名目录和WAV及CUE文件。

3.5 后续处理

3.5.1 Log自检

正如2.2.3所说,AC Rip无误只代表和多数人结果大致一致,不能完全保证抓轨绝对没有问题。
如果有时间的话,亲自听一遍,重点关注每首曲子的结尾部分是最好的。
此外,可以直接采用站点的logchecker,或者EAC安装目录下自带的CheckLog.exe命令行工具。
这一工具的语法为

CheckLog.exe "log路径"

下面是Log各项的检查点和有关说明。

Exact Audio Copy V1.3 from 2. September 2016
  ——EAC的版本号。
EAC extraction logfile from 27. August 2017, 15:05
  ——抓轨时间,若与文件的最终修改时间相同,则基本可确认是原始LOG。
RADWIMPS / 君の名は。
  ——专辑艺术家和标题。
Used drive  : hp      CDDVDW GP70N   Adapter: 1  ID: 0
  ——光驱品牌型号,因人而异。但如果是虚拟光驱载入镜像抓轨,则会显示Virtual Drive,请牢记:用虚拟光驱抓轨是不被允许的。

Read mode               : Secure(请务必保证相同)
  ——读取模式:可靠,说白了就是安全模式,这个是必须的。
Utilize accurate stream : Yes(请务必保证相同)
  ——使用精确流:是(20分),光驱的一种提高抓轨精确度的功能。
Defeat audio cache      : Yes(请务必保证相同)
  ——清空音频缓存:是(10分)
Make use of C2 pointers : No(请务必保证相同)
  ——使用 C2 指示器:否(20分)
Read offset correction                      : 6(偏移值因人而异)
  ——读取偏移校正:6(5分),因光驱型号而异,是开启AccurateRip的基本要求。
Overread into Lead-In and Lead-Out          : No(请务必保证相同)
  ——读取 Lead-In 和 Lead-Out:否
Fill up missing offset samples with silence : Yes(请务必保证相同)
  ——用静音填充抓取中丢失偏移的采样:是(5分)
Delete leading and trailing silent blocks   : No(请务必保证相同)
  ——去除首尾静音块:否(5分),即不删除开头和结尾处的静音部分。
Null samples used in CRC calculations       : Yes(请务必保证相同)
  ——在CRC 计算中使用了空样本:是(1分)
Used interface                : Native Win32 interface for Win NT & 2000
  ——已用接口:Win NT 及 2000 本地 Win32 接口
Gap handling                     : Appended to previous track(请务必保证相同)
  ——间隙处理:追加到上一曲目(仅分轨抓取有该选项,整轨抓取扣20分),这是为了原样保留各音轨的前后静音。

Used output format              : User Defined Encoder
  ——所用输出模式:用户定义的编码器
Selected bitrate                : 1024 kBit/s
  ——已选比特率:1024 kBit/s
Quality                         : High
  ——质量:高
Add ID3 tag:No(请务必保证相同)
  ——添加 ID3 标签:否(1分)
Command line compressor   : D:\Exact Audio Copy\Flac\flac.exe
  ——命令行压缩器:D:\Exact Audio Copy\Flac\flac.exe
Additional command line options (附加命令行参数): -8 -e -p -V -T "ARTIST=%artist%" -T "TITLE=%title%" -T "ALBUM=%albumtitle%" -T "DATE=%year%" -T "TRACKNUMBER=%tracknr%" -T "GENRE=%genre%" -T "COMMENT=%comment%" -T "BAND=%albuminterpret%" -T "ALBUMARTIST=%albuminterpret%" -T "COMPOSER=%composer%" %haslyrics%--tag-from-file=LYRICS="%lyricsfile%"%haslyrics% -T "DISCNUMBER=%cdnumber%" -T "TOTALDISCS=%totalcds%" -T "TOTALTRACKS=%numtracks%" %hascover%--picture="%coverfile%"%hascover% %source% -o %dest%(请务必保证相同)

Track  1
    Filename E:\音乐\你的名字。\01 - 夢灯籠.wav
    Pre-gap length  0:00:02.00
    Peak level 100.0 %
    ——峰值电平,这与录音条件有关,不影响抓轨质量。
    Extraction speed 2.5 X
    ——抓轨速度。
    Track quality 100.0 %
    ——音轨质量,每多读取一次这个值就会有所下降,但是最终读取出来的数据一定是准确的,所以不要纠结这个。
    Test CRC 777FB55E
    Copy CRC 777FB55E(测试与抓取20分)
    ——测试CRC值和抓取CRC值,同一曲目的两个CRC值应当完全相同。
    Accurately ripped (confidence 142)  [D47291F0]  (AR v2) (5分)
    ——说明开启了AccurateRip,而且有相应的匹配数据。
    Copy OK
……
Track 27
    Filename E:\音乐\你的名字。\27 - なんでもないや (movie ver.).wav
    Pre-gap length  0:00:01.41
    Peak level 100.0 %
    Extraction speed 6.1 X
    Track quality 100.0 %
    Test CRC 269D3AAB
    Copy CRC 269D3AAB
    Accurately ripped (confidence 138)  [98D346A9]  (AR v2)
    Copy OK

All tracks accurately ripped
No errors occurred
End of status report

---- CUETools DB Plugin V2.1.6
[CTDB TOCID: c4iyYrxODAOFzESTkKujjx5tJss-] found
Submit result: c4iyYrxODAOFzESTkKujjx5tJss- has been confirmed
Track | CTDB Status
1   | (2911/2922) Accurately ripped
……
27   | (2720/2922) Accurately ripped, or (19/2922) differs in 2976 samples @05:43:64-05:43:68, or (35/2922) differs in 4308 samples @05:43:62-05:43:68, or (28/2922) differs in 4302 samples @05:43:62-05:43:68, or (5/2922) differs in 2838 samples @05:43:64-05:43:68, or (15/2922) differs in 4404 samples @05:43:62-05:43:68, or (10/2922) differs in 2946 samples @05:43:64-05:43:68, or (2/2922) differs in 3530 samples @05:43:63-05:43:68, or (30/2922) differs in 2858 samples @05:43:65-05:43:69, or (11/2922) differs in 4310 samples @05:43:62-05:43:68, or (2/2922) differs in 4284 samples @05:43:61-05:43:67
  ——该示例统计数字表示安装了CTDB插件的人中有2922人抓了这张碟,其中曲目1有2911人和您抓的结果相同;在曲目27产生了较多分歧。产生不同的原因可能有:①相异的人抓轨出了错误;②同一专辑在不同地区发行的版本乃至同一地区的再版所造成的差异。(如《君の名は。》日版台版相同,而大陆版便不同了)

====Logchecksum59D417F4A5CC5B0628FB81D8CFAC2FF9C0FEA15675272611E91B48ABCF744489 ====(15分)
  ——LOG文件自身的校验值,如果LOG文件中的内容被改动过,所计算出的校验值和最后附的校验值就对不上了,所以请千万不要改动LOG文件!不要改动LOG文件!不要改动LOG文件!

3.5.2 封面获取

个人建议单独将封面以诸如cover.jpgfolder.jpg的格式放在根目录。
封面获取途径,除了扫描封面图之外,有以下几种。

建议最终封面的长宽均大于500px

3.5.3 其他文件的命名

a. 将最终生成的log文件重命名,和cue保持一致
b. 扫图放入ScansArtworks文件夹。
c. 多碟专辑,采用形如Disc 1的格式,或者直接采用碟片番号(一般印在光盘本身上面)。
d. 具体扫图的文件名,可以直接用Scan+数字的格式,也可以写明内容。如下可参考。

①封面命名为:CoverFront
②封底命名为Back,底纸里面若有图案内容等,则需扫图并命名为Inlay
③CD碟命名为CDDisc,如有多个CD碟,则命名为CD1CD2…..(或者Disc - 1, Disc - 2..)。
④歌词本扫图依次命名为:Booklet – 01Booklet – 02…(或Booklet01、Booklet02…),歌词本背面可命名为:Inside
⑤若唱片还有除歌词本以外的其他纸张等,则需扫图依次命名为Extra – 01Extra – 02…(或Extra1、Extra2…)。
⑥若唱片带侧标,则需扫图命名为Obi
⑦若唱片有盒子装,则需将盒子扫图,盒子封面命名为Box - Front(或Box - Cover),盒子封底命名为Box - Back,盒子左侧命名为Box - Left,盒子右侧命名为Box - Right,盒子顶端命名为Box - Top,盒子底端命名为Box - Bottom
⑧若唱片有两本不同的歌词本(如英文跟日本),则扫图时需在Artwork文件夹下,另建两个子文件夹ENJP用以存放歌词本扫图,子文件夹里面文件命名与④相同;如果是多CD,且每个CD分别配有一个歌词本的专辑,则在Artwork文件夹下另建子文件夹,并命名为CD1,CD2 (或者Disc - 1, Disc - 2…)。子文件夹里面文件命名与④相同
⑨未能提到的特殊情况,请按便于他人理解的方式命名。如,简装版的CD盒子,里头可命名为Inside,外头可命名为Outside

以上。

标签: 无

精彩评论
  1. 支持一下

  2. 作者的情感表达细腻入微,让人在阅读中找到了心灵的慰藉。

  3. 文章结构紧凑,层次分明,逻辑严密,让人一读即懂。

发表评论: