我想在某些文本中添加可折叠面板标题,为此我需要定义一些 ID,但我无法使用,\thesubsubsection
因为它带有点(例如 2.0.1)。所以我想使用一个简单的计数器,例如:
\newcounter{index}
\setcounter{index}{1}
\newcommand{\ppindex}{\arabic{index}\stepcounter{index}}
我想在我的 htlatex 配置文件中使用类似的行为,因此\Index
扩展到这个计数器:
\ConfigureEnv{lstlisting}{\HCode{\Hnewline
<div class="panel-group" id="accordion\Index">\Hnewline
<div class="panel panel-default">\Hnewline
<div class="panel-heading">\Hnewline
<h4 class="panel-title">\Hnewline
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion\Index" href="#collapse\Index">\Hnewline
Click to expand\Hnewline
</a>\Hnewline
</h4>\Hnewline
</div>\Hnewline
<div id="collapse\Index" class="panel-collapse collapse">\Hnewline
<div class="panel-body">\Hnewline
<pre class="prettyprint"><p>\Hnewline}}
{\HCode{</p></pre>\Hnewline
</div>\Hnewline
</div>\Hnewline
</div>\Hnewline
</div>\Hnewline}}{}{}
我原本想使用\thesection
,或者\thesubsubsection
,但我在生成的 html 中得到了错误的数字。即使将其重新定义为 \arabic{subsubsection} ,\thesubsubsection 也给出零。
感谢@michal.h21,我想让我的代码片段可折叠。
单击时展开
感谢您和\CurSecHaddr
宏,我能够将我的对象更改id
为以下内容:
id="accordionx1-80001"
,所以现在 laTeX 会为lstlisting
我添加的每一部分生成有效的 id。
这是我的环境配置lstlisting
:
\ConfigureEnv{lstlisting}{\HCode{
<div class="panel-group" id="accordion\CurSecHaddr">\Hnewline
<div class="panel panel-default">\Hnewline
<a class="accordion-toggle" data-toggle="collapse" data-parent="\#accordion\CurSecHaddr" href="\#collapse\CurSecHaddr">\Hnewline
<div class="panel-heading">\Hnewline
<h4 class="panel-title">\Hnewline
<FONT style="font-size:15px" COLOR="\#FE2E2E">View Code</FONT> <span class="pull-right clickable"><i class="glyphicon glyphicon-chevron-up"></i></span>\Hnewline
</h4>\Hnewline
</div>\Hnewline
</a>\Hnewline
<div id="collapse\CurSecHaddr" class="panel-collapse collapse">\Hnewline
<div class="panel-body">\Hnewline
<pre class="prettyprint"><p>\Hnewline}}
{\HCode{</p></pre>\Hnewline
</div>\Hnewline
</div>\Hnewline
</div>\Hnewline
</div>\Hnewline}}{}{}
它仍然需要完成一些工作,但我打算使用后编译脚本来完成这项工作,因为我需要删除一些生成的部分。
当然,不仅仅是这些代码,您还需要添加一些JS
代码才能使其glyphicon
工作。
网站已建好http://claudiordgz.github.io/GoodrichTamassiaGoldwasser/
,代码也已上传,https://github.com/claudiordgz/GoodrichTamassiaGoldwasser/tree/gh-pages
以防有人想看。它仍处于非常丑陋的 alpha 状态,但至少我可以开始推送热门内容了。
答案1
id
当前切片命令存储在\CurSecHaddr
宏中,它可能以以下方式显示:
x1-130006.7
这看起来很神秘,但实际上x
只是前缀,1
是当前文件的编号(因为运行中可能会生成多个文件tex4ht
),13000
意味着这是第 13 个分段命令,6.7
是小节编号。
我认为你不应该使用当前部分 ID 来构造一个新的部分 ID,每次listings
使用时更新自定义计数器会更好,我认为:
\newcount\ppindex
\def\theppindex{\the\ppindex}
\def\steppindex{\global\advance\ppindex by 1\relax}
对于处理链接和 ID 的内容,最好使用\Link
命令而不是直接使用<a>
元素。对于你的情况来说,这并不重要,因为你正在链接到父元素,但我还是会展示它。
该命令的使用方法如下:
\Link[baseurl attributes]{target id}{current id}link text\EndLink
baseurl 仅对于链接到外部页面有用,它是为来自同一文档的页面自动创建的。
可以创建新的命令,该命令将使用交叉引用机制,但会产生与以下不同的元素<a>
:
\LinkCommand\Accordion{div,href,id}
现在我们可以使用
\Accordion[ class="panel-group"]{}{accordion\theppindex}...\EndAccordion
和
<div
id="accordion1" class="panel-group" >...</div>
生成。同样,对于第二个链接,使用:
\Link[ class="accordion-toggle" data-toggle="collapse" data-parent="\#accordion\theppindex"]{collapse\theppindex}{}
和
<a
href="#collapse1" class="accordion-toggle" data-toggle="collapse" data-parent="#accordion1" >
被生产。
完整示例:
\Preamble{xhtml,info}
\newcount\ppindex
\LinkCommand\Accordion{div,href,id}
\def\theppindex{\the\ppindex}
\def\steppindex{\global\advance\ppindex by 1\relax}
\ConfigureEnv{lstlisting}{%
\ifvmode\IgnorePar\fi\EndP%
\steppindex%
%<div class="panel-group" id="accordion\CurSecHaddr">\Hnewline
\Accordion[ class="panel-group"]{}{accordion\theppindex}%
\HCode{%
<div class="panel panel-default">\Hnewline}
%<a class="accordion-toggle" data-toggle="collapse" data-parent="\#accordion\the\ppindex" href="\#collapse\CurSecHaddr">\Hnewline}
\Link[ class="accordion-toggle" data-toggle="collapse" data-parent="\#accordion\theppindex"]{collapse\theppindex}{}\HCode{\Hnewline
<div class="panel-heading">\Hnewline
<h4 class="panel-title">\Hnewline%
<FONT style="font-size:15px" COLOR="\#FE2E2E">View Code</FONT> <span class="pull-right clickable"><i class="glyphicon glyphicon-chevron-up"></i></span>%
</h4>\Hnewline%
</div>\Hnewline}%
\EndLink\HCode{\Hnewline%
<div id="collapse\CurSecHaddr" class="panel-collapse collapse">\Hnewline
<div class="panel-body">%
%<pre class="prettyprint"><p>}}%
}}
{\IgnorePar\HCode{%
</div>\Hnewline
</div>\Hnewline
</div>\Hnewline}
\EndAccordion%
%</div>
}{}{}
\begin{document}
\EndPreamble
请注意,链接命令必须在 之外使用\HCode
。我还对段落进行了一些修改,删除了多余的<pre>
元素和一些\Hnewline
s,以减少垂直空白。