我想动态创建书签,每次我使用自定义标题(用定义\newenvironment
)时,标题文本将成为书签名称。
我正在使用书签包hyperref
,并且我考虑在环境声明中使用\pdfbookmark
或\section
,但我需要能够将环境内容传递到命令中,以便书签文本与标题文本匹配。
我也考虑过使用\begin{section}
and \end{section}
,例如:
\newenvironment{heading}{\begin{section}}{\end{section}}
但是我只得到了书签名称的首字母,这弄乱了我的标题:
有 7 个标题,所以我的标题现在以数字开头。如何使用未编号的部分\begin{section}
?
此外,仅取“附录”标题的首字母作为书签,其余文本位于下一行。
这是一个非常简单的例子,其中标题出现在单独的页面上。当我使用 pdflatex 编译它时,我希望书签指向每个标题的页面。
\documentclass[11pt]{article}
\usepackage[colorlinks=true,linkcolor=blue,urlcolor=black,bookmarksopen=true]{hyperref} %bookmarks for pdf
\usepackage[open, openlevel=1]{bookmark}
\newenvironment{heading}{\fontsize{16}{19.2}\bfseries\selectfont\section*{}}{\vspace{3mm}}
\begin{document}
\thispagestyle{plain}
\begin{heading}First Heading\end{heading}
Text in the first section
\newpage
\begin{heading}Second Heading\end{heading}
Text in the second section
\end{document}
如何配置在我的heading
环境中每次使用时设置的书签?
答案1
没有必要使用环境,但如果你坚持,你总是可以考虑使用environ
:
\documentclass{article}
\usepackage{environ}
\usepackage[bookmarksopen = true]{hyperref}
\newcommand{\headingfont}{\Large\bfseries}
\NewEnviron{heading}{%
\par\addvspace{5mm}
\noindent
{\headingfont
\raisebox{\baselineskip}[0pt][0pt]{\pdfbookmark[1]{\BODY}{\BODY}}% Set bookmark
\BODY}% Set heading
\par\nobreak
\addvspace{3mm}
\noindent\ignorespacesafterend
}
\begin{document}
\begin{heading}
First Heading
\end{heading}
Text in the first section
\newpage
\begin{heading}
Second Heading
\end{heading}
Text in the second section
\end{document}
\headingfont
可以根据您的需要进行调整。