我对 TeX 还很陌生,所以我不太确定我所问的问题的正确术语是什么,所以请耐心等待!
我有一堆 LaTeX 书籍,正在通过 HeVeA 将其转换为 HTML。TeX 代码中有类似以下内容:
\csttitle{Part I Title}
\cstsubtitle{Part Subtitle}
然后再往下看,我有类似这样的事情:
\cstchaptertitle{Chapter Title}
\cstsubtitle{Chapter Subtitle}
所以基本上我有\cstsubtitle{}
所有的字幕,但在我的 HTML 中,我需要区分\cstsubtitle{}
后面的\csttitle{}
和\cstchaptertitle{}
。
我知道这是 TeX 代码,但也许它能帮助我表达我的想法...
对于第一个例子,我希望样式表中有这种逻辑:
if (prevSibling == '\csttitle') {
\renewcommand{\cstsubtitle}[1]{
\@open{div}{class="part cstsubtitle"}#1\@close{div}
}
}
这是第二个例子:
if (prevSibling == '\cstchaptertitle') {
\renewcommand{\cstsubtitle}[1]{
\@open{div}{class="chapter cstsubtitle"}#1\@close{div}
}
}
答案1
看来您只需要在\csttitle
和之后切换一个标志\cstchaptertitle
,然后检查该标志。下面我根据它是在或之后来\cstsubtitle
更改颜色。\cstsubtitle
\csttitle
\cstchaptertitle
笔记:
- 我已经使用
newtoggle
过包裹etoolbox
因为我更喜欢那个语法而不是\newif
语法。但如果你不想包含额外的包,那么调整它以使用\newif
或其他一些条件方法。
代码:
\documentclass{article}
\usepackage{xcolor}
\usepackage{etoolbox}
\newtoggle{AfterCsTitle}
\newcommand{\csttitle}[1]{\global\toggletrue{AfterCsTitle}\textbf{#1}\par}%
\newcommand{\cstchaptertitle}[1]{\global\togglefalse{AfterCsTitle}\textbf{#1}\par}%
\newcommand{\cstsubtitle}[1]{%
\iftoggle{AfterCsTitle}{%
\textcolor{red}{#1}%
}{%
\textcolor{blue}{#1}%
}%
}%
\begin{document}
\csttitle{Part I Title}
\cstsubtitle{Part Subtitle}
\medskip
Then down further I have something like this:
\medskip
\cstchaptertitle{Chapter Title}
\cstsubtitle{Chapter Subtitle}
\end{document}