Makefile生成空白TeX文件问题求助
解决Makefile中
make get生成空白.tex文件的问题 核心问题是你的sed命令没匹配到源文件中BEGIN_BOOK和END_BOOK之间的内容,导致输出为空。以下是排查和修复步骤:
检查源文件中的标记格式
确认../01-chapter1/chapter1.tex和../02-chapter2/chapter2.tex里存在精确匹配的标记行:- 标记必须是单独一行,不能和其他内容混在一起
- 大小写完全一致,不能写成
begin_book或END_BOOK(末尾带空格) - 如果标记是LaTeX注释(比如
% BEGIN_BOOK),要对应调整sed命令
单独测试sed命令
直接在终端执行以下命令,看是否能输出预期内容:sed -e '/BEGIN_BOOK/,/END_BOOK/!d' ../01-chapter1/chapter1.tex如果输出为空,说明标记不匹配;如果有内容,再检查重定向是否正常(比如目标文件夹是否有写入权限)
适配标记格式调整sed命令
如果源文件的标记带注释符,修改sed命令如下:sed -e '/% BEGIN_BOOK/,/% END_BOOK/!d' ../01-chapter1/chapter1.tex > chapter1.tex如果标记前后可能有空格,用更灵活的匹配规则:
sed -e '/^\s*BEGIN_BOOK\s*$/,/^\s*END_BOOK\s*$/!d' ../01-chapter1/chapter1.tex > chapter1.tex这个命令会忽略标记行开头和结尾的任意空格。
验证文件路径正确性
执行ls ../01-chapter1/chapter1.tex,确认源文件存在且路径正确。如果路径错误,sed会读取空内容,最终生成空白文件。
内容的提问来源于stack exchange,提问作者Oscar17670
相关产品推荐
相关产品推荐

