除了手动查找“部分”/用“章”替换所有内容(对于小节、小子节等也一样)之外,还有其他方法吗?
答案1
这是一个 unix 脚本,可让您选择将内容向外移动(即从文章到报告)或向内移动(报告到文章或投影仪)。
#!/bin/bash
if [ $# -lt 2 ]
then
echo "need input file name, 0 (out) or 1 (in) " >&2
exit 1
fi
# strips .tex from filename to append _out.tex or _in.tex
input="$1"
filename=${input%.*x}
# 0 shifts all headings outward (section->chapter, etc)
# 1 shifts all headings outward (chapter->section)
if [ $2 -eq 0 ]
then
newfile="$filename""_out.tex"
sed -e 's/\\section{/\\chapter{/g' \
-e 's/\\subsection{/\\section{/g' \
-e 's/\\subsubsection{/\\subsection{/g' \
-e 's/\\paragraph{/\\subsubsection{/g' \
-e 's/\\subparagraph{/\\paragraph{/g' \
"$1" > $newfile
echo "Saved as $newfile"
elif [ $2 -eq 1 ]
then
newfile="$filename""_in.tex"
sed -e 's/\\paragraph{/\\subparagraph{/g' \
-e 's/\\subsubsection{/\\paragraph{/g' \
-e 's/\\subsection{/\\subsubsection{/g' \
-e 's/\\section{/\\subsection{/g' \
-e 's/\\chapter{/\\section{/g' \
-e 's/Chapter /\\S/g' \
-e 's/Chapters /\\S/g' \
-e 's/chapter/section/g' \
"$1" > $newfile
echo "Saved as $newfile"
else
echo "invalid direction, 0 (out) or 1 (in) " >&2
fi
答案2
如果要提升各个层面,那么行动的时机至关重要:我们必须从最低层面开始,然后利用\let
。
\let\subparagraph\paragraph
\let\paragraph\subsubsection
\let\subsubsection\subsection
\let\subsection\section
\let\section\chapter
使用\renewcommand
会将所有部分级别转变为章节。
然而,这只适用于没有交叉引用的非常基本的文档。完整的解决方案还应该重新定义计数器及其表示。
\let\thesubparagraph\theparagraph
\let\theparagraph\thesubsubsection
\let\thesubsubsection\thesubsection
\let\thesubsection\thesection
\let\thesection\thechapter
\makeatletter
\let\c@subparagraph\c@paragraph
\let\c@paragraph\c@subsubsection
\let\c@subsubsection\c@subsection
\let\c@subsection\c@section
\let\c@section\c@chapter
\let\p@subparagraph\p@paragraph
\let\p@paragraph\p@subsubsection
\let\p@subsubsection\p@subsection
\let\p@subsection\p@section
\let\p@section\p@chapter
\let\cl@subparagraph\cl@paragraph
\let\cl@paragraph\cl@subsubsection
\let\cl@subsubsection\cl@subsection
\let\cl@subsection\cl@section
\let\cl@section\cl@chapter
\makeatother
答案3
我可能有点过度,但我会使用sed
它而不是纯 TeX。
答案4
除了替换/重新定义其他答案中提到的分段命令外,还有一件事要记住,那就是在使用时更新参考描述\ref
。如果你的文本是这样的
As seen in Section \ref{sec:first}, ...
转换为报告后,它应该变成
As seen in Chapter \ref{sec:first}, ...
如果你经常使用cleveref
包的\cref
命令,这不是一个问题:
As seen in \cref{sec:first}, ...
该命令根据标签推断出参考文献的类型,并在实际章节号前面放置文字描述。我真的看不出有什么理由不是使用这个包。