我正在寻找一个可以突出显示的包/命令任何事物我用它来包装。目前我发现最接近的东西是soul
但它有很多缺点:
- 无分区突出显示
- 没有自动脚注突出显示
- 不
\cite
突出显示,除非包裹在\mbox{}
- 无
\citep
突出显示
以下是可以看到这些要点的示例文章:
\documentclass{article}
\usepackage{hyperref}
\hypersetup{colorlinks=true, urlcolor=blue, citecolor=cyan, pdfborder={0 0 0},}
\usepackage{soul}
\usepackage{natbib}
\bibliographystyle{plainnat}
\begin{document}
\section{\hl{Title of a section}}
This is a line with no highlighting done.\\
\hl{This is a line where a citation \citep{Knuth86} appears.}
\hl{This is a line with a footnote\footnote{And this is the footnote that should also be automatically highlighted.} which I want highlighted.}
\bibliography{biblio}
\end{document}
文件如下biblio.bib
所示:
@ARTICLE{Knuth86,
author = {Knuth, D. E.},
title = "{The TeXbook}",
year = 1986,
}
如果你尝试用通常的方法编译它:
pdflatex "%f" && bibtex "%e" && pdflatex "%f" && pdflatex "%f"
命令,它会因我上面给出的所有原因而失败。难道没有什么东西刚刚起作用?
编辑
接受的答案很接近,但在发现latexdiff
(http://www.ctan.org/pkg/latexdiff)我实际上已经改用该应用程序,而不是手动突出显示文本。
答案1
这只是一个部分解决方案 而且它不能很好地跨行工作,但如果您将突出显示命令替换为
\usepackage{tcolorbox}
\newtcbox{\hl}[1][yellow]{on line, arc=7pt,colback=#1!10!white,colframe=#1!50!black,
before upper={\rule[-3pt]{0pt}{10pt}},boxrule=1pt, boxsep=0pt,left=6pt,
right=6pt,top=2pt,bottom=2pt}
那么我认为突出显示几乎按照 OP 想要的方式工作:
主要问题是根本\footnote
没有出现。(原帖作者可能也会抱怨,\citep
但由于包装规格似乎缺失,所以我只是使用\usepackage[numbers]{natbib}
并继续使用。)
\footnotemark
您可以通过手动使用和来使脚注正确显示,并进行所需的突出显示\footnotetext
:
\hl{This is a line with a footnote\footnotemark which I want highlighted.}
\footnotetext{\hl{And this is the footnote that should also be
automatically highlighted.}}
现在产生了缺失的脚注:
原帖作者无疑更希望自动处理脚注。我认为这应该是可以安排的,尽管突出显示的文本部分中的多个脚注可能会引起问题。我现在没有时间这样做,但如果没有其他人找到解决方案,我会尝试明天查看。
答案2
您需要小心stomach commands
在章节标题中使用可选参数。这有效。您还遇到了来自“natbib”的问题\citep{}
,这是您在 MWE 中遗漏的。
\documentclass{article}
\usepackage{hyperref}
\hypersetup{colorlinks=true, urlcolor=blue, citecolor=cyan, pdfborder={0 0 0},}
\usepackage{soul}
\begin{document}
\section[title of section]{\hl{Title of a section}}
This is a line with no highlighting done.\\
\hl{This is a line where a citation \protect\cite{Knuth86} appears.}
\hl{This is a line with a footnote\footnote{\protect\hl{And this is the footnote that should also be automatically highlighted.}} which I want highlighted.}
\begin{thebibliography}{1}
\bibitem{Knuth86} D.E. Knuth, The TeXbook, 1986
\end{thebibliography}
\end{document}
检查一下文章关于hyperref's
命令的一些非常好的提示。