如何自动为以特定字符(@)开头的字符串着色?

如何自动为以特定字符(@)开头的字符串着色?

使用该类memoir,我正在寻找一种方法来自动为以字符开头的任何字符串着色@,无论是在正文中还是在脚注中。有什么想法可以做到这一点吗?

更新:我也使用 bibtex,并且我不希望我的引用中有链接框或颜色,这解释了 hidelink 选项。

举一个简单的例子:

\documentclass[a4paper, 12pt,twoside, openright]{memoir}
\usepackage{polyglossia}
\setdefaultlanguage{french}
\usepackage{fontspec}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[autostyle=true,french=guillemets,maxlevel=3]{csquotes}
\usepackage{xparse}
\usepackage{graphicx}
\usepackage[protrusion=true]{microtype}

\makeatletter

\renewcommand\@makefnmark{\hbox{\@textsuperscript{\normalfont\color{BurntOrange}\@thefnmark}}}
\renewcommand\@makefntext[1]{%
  \parindent 1em\noindent
            \hb@[email protected]{%
                \hss\@textsuperscript{\normalfont\@thefnmark}}#1}
\makeatother

\usepackage[hidelinks, pdfusetitle]{hyperref} % Creates hyperlinks and index in the PDF document, preferably load after biblatex

\begin{document}

\chapterstyle{bringhurst}

This is a link in a footnote \footnote{My link is \href{http://www.google.fr}{@google}}

This is a colored link in my text \href{http://www.google.fr}{@google}

This is a normal link \href{http://www.google.fr}{google}

\end{document}

我想自动检测并着色以 @ 开头的文本链接,而不是所有链接。

答案1

修订版,对以特定符号 开头的所有单词着色的问题提供通用解决方案。@重新编辑以处理单@字符的情况。方法是将其@激活,然后将其定义为打开红色并打印保存的 副本@。此修订版的关键是\tilblank使用递归打印出下一个单词(仍为红色)的宏。当遇到空格时,它会恢复为黑色。如果遇到组结束,它会退出(并恢复为黑色)。

\documentclass{article}
\usepackage{ifnextok}
\usepackage{xcolor}
\makeatletter
\def\tilblank#1{#1\IfNextToken\@sptoken{ \color{black}}{%
  \IfNextToken\egroup{}{\tilblank}}}
\def\atend{\IfNextToken\@sptoken{ \color{black}}\tilblank}
\let\svat @
\makeatother
\catcode`@=\active
\def@{\color{red}\svat\atend}
\begin{document}
This tests @the use of @midstream or in its own {@group}.
Also testing @ by itself and at the end of a @paragraph.

This follows in black, as @it should. 
\end{document}

在此处输入图片描述


原始解决方案

我不确定这种方法是否会破坏其他任何东西。我将其设置为@active。此外,这只适用于您的@单词位于其自己的组中的情况。这意味着如果您想@在文本中使用,则必须将其括在 中{}

\documentclass[a4paper, 12pt,twoside, openright]{memoir}
\usepackage{polyglossia}
\setdefaultlanguage{french}
\usepackage{fontspec}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[autostyle=true,french=guillemets,maxlevel=3]{csquotes}
\usepackage{xparse}
\usepackage{graphicx}
\usepackage[protrusion=true]{microtype}


\makeatletter

\renewcommand\@makefnmark{\hbox{\@textsuperscript{\normalfont\color{BurntOrange}\@thefnmark}}}
\renewcommand\@makefntext[1]{%
  \parindent 1em\noindent
            \hb@[email protected]{%
                \hss\@textsuperscript{\normalfont\@thefnmark}}#1}
\makeatother

\usepackage[hidelinks, pdfusetitle]{hyperref} % Creates hyperlinks and index in the PDF document, preferably load after biblatex

\begin{document}
\let\svat @
\catcode`@=\active
\def@{\color{red}\svat}


\chapterstyle{bringhurst}

This is a link in a footnote \footnote{My link is \href{http://www.google.fr}{@google} checking revert}

This is a colored link in my text \href{http://www.google.fr}{@google}

This is a normal link \href{http://www.google.fr}{google}

\end{document}

\documentclass{article}
\usepackage{xcolor}
\let\svat @
\catcode`@=\active
\def@{\textcolor{red}{\svat}}
\begin{document}
xy@z
\end{document}

在此处输入图片描述

相关内容