如何定义宏使一行文本变成红色?

如何定义宏使一行文本变成红色?

我正在寻找一种方法来创建一个新命令,使该行上的文本变为红色(或以另一种方式清晰区分)。

就像 % 符号注释掉一行。这样工作的命令可能吗?我想制作打印的简短注释,并且不想每次都打开和关闭括号。

答案1

为了这个目的,使用“分隔”参数更容易,使用\def

不要使用\par作为分隔符(这将导致段落中断,而这可能并不总是我们所希望的),您可以选择一个%不会出现在您的注释文本中的非字符。如果|是这样的字符,那么应该可以工作:

\def\bla#1|{\textcolor{red}{#1}}

即使\bla不开始新行,并且整个注释嵌入在文本块中,这种方法也应该有效。

(@Bordaigorl 在评论中提出了正确的想法,但\par可能过于局限。)

在这个问题的答案中给出了对这种方法的一些补充评论:\renewcommand 用于使用 \def 定义的命令

答案2

下面的宏\HighlightRestOfCurrentLine可以让你突出显示到末尾当前的线:

在此处输入图片描述

参考:

笔记:

  • 这确实需要运行两次。第一次确定位置,第二次进行绘制。不过我觉得这应该只需运行一次就可以完成。

  • 魔法用于确定页面边缘的数字是通过\layout使用包裹layout

  • 来自\tikzmark在正文旁边添加大括号

代码:

\documentclass{article}
%\usepackage{layout}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node[baseline] (#1) {};}

\newcommand{\HighlightRestOfCurrentLine}[1][]{%
    \tikzmark{Start}%
    \begin{tikzpicture}[overlay,remember picture]
        \coordinate (EdgeOfText) at ($(current page.west |- 0,0) + (1.0in+\hoffset+\oddsidemargin+\textwidth,0.3ex) + (0.1em,1.6ex)$) ;
        \draw [draw=none,fill=green!50, #1]  ($(Start)+(0,-0.6ex)$) rectangle (EdgeOfText);
    \end{tikzpicture}
}%

\begin{document}%\layout
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at dignissim eros. 
 Morbi faucibus sit amet felis a accumsan. \HighlightRestOfCurrentLine Aliquam 
 dapibus pellentesque dui, vitae aliquam turpis semper eget. 
 Donec egestas leo nibh, at malesuada leo congue non. 
 Cras laoreet lectus sed tortor laoreet, ac aliquet nibh condimentum. 
 Nam elementum ante non nunc facilisis porttitor. Nullam non suscipit lorem. 
 Sed arcu dui, accumsan et pretium dictum, venenatis id metus.

Mauris massa lacus, vehicula 
vitae \HighlightRestOfCurrentLine[fill=none,draw=gray, ultra thick] blandit ac, 
fermentum vitae ligula. Maecenas ultricies, tortor a sodales ullamcorper, 
erat lorem semper leo, vel pretium felis arcu ut velit. Aenean viverra 
lacus at nisi malesuada luctus. Maecenas libero odio, luctus et blandit 
vitae, commodo in turpis. Duis nisi enim, gravida id libero id, 
sollicitudin volutpat purus. Curabitur rhoncus risus euismod arcu venenatis, 
\HighlightRestOfCurrentLine[red!25]non elementum mi lobortis. 
Pellentesque quis leo eu nunc malesuada condimentum. Ut dictum iaculis 
aliquam. Nunc tincidunt a ligula in adipiscing. Praesent 
\HighlightRestOfCurrentLine[fill=none,draw=blue, dotted, ultra thick]ultricies sem 
odio, eget pellentesque mi faucibus vitae. Class aptent taciti sociosqu 
ad litora torquent per conubia nostra, per inceptos himenaeos. 
Sed ullamcorper massa risus, non commodo dolor eleifend quis. 
Mauris ultrices lorem a orci hendrerit tempor. Sed fringilla mattis fringilla. 
\end{document}

相关内容