如何使用 \url{..} 内的命令?
梅威瑟:
\documentclass{article}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{url}
\newcommand{\placeholder}[1]{\textcolor{red!60!black}{\textlangle#1\textrangle}}
\begin{document}
\url{Hello \placeholder{name}}.
\end{document}
生成结果:
Hello \placeholder{name}.
而不是预期的:
Hello <name>.
这是一个人为的例子。实际上,我定义了几个自定义 url 命令(用于格式化和破坏类名、文件路径等的宏?),在这些命令中我想使用占位符。但我相信这种更简单情况的解决方案与自定义 url 命令相同。
答案1
\UrlLeft
并可\UrlRight
用于添加尖括号,请参阅“6 更多的灵活性”url
部分文档。 例子:
\documentclass{article}
\usepackage{url}
\DeclareUrlCommand\url{%
\def\UrlLeft{\langle}%
\def\UrlRight{\rangle}%
}
\begin{document}
\url{http://www.example.org/}
\end{document}
评论:
\langle
和\rangle
代替文本模式命令,因为 隐式使用了 的数学模式\url
。
包裹hyperref
命令\url
被重新定义以添加 所需的额外代码hyperref
,因此不能直接重新定义。旧的含义被存储并用作\Hurl
,因此这是可以重新定义的宏:
\documentclass{article}
\usepackage[colorlinks]{hyperref}% loads package url
\DeclareUrlCommand\Hurl{%
\def\UrlLeft{\langle}%
\def\UrlRight{\rangle}%
}
\begin{document}
\url{http://www.example.org/}
\end{document}
尖括号是链接的一部分,但不是链接 URL 的一部分。如果括号不应通过 option 着色colorlinks
,则可以将颜色重置\normalcolor
为栅栏的颜色:
\documentclass{article}
\usepackage[colorlinks]{hyperref}% loads package url
\DeclareUrlCommand\Hurl{%
\def\UrlLeft{\begingroup\normalcolor\langle\endgroup}%
\def\UrlRight{\begingroup\normalcolor\rangle\endgroup}%
}
\begin{document}
\url{http://www.example.org/}
\end{document}
如果应该使用当前颜色而不是\normalcolor
,那么它会变得稍微复杂一些。包中xcolor
有当前颜色的概念.
,并且可以通过保存此颜色\colorlet
并在 url 命令中稍后使用:
\documentclass{article}
\usepackage{xcolor}
\usepackage{letltxmacro}
\usepackage[colorlinks]{hyperref}% loads package url
\LetLtxMacro\OriginalUrl\url
\DeclareRobustCommand*{\url}{%
\colorlet{beforeurl}{.}%
\OriginalUrl
}
\DeclareUrlCommand\Hurl{%
\def\UrlLeft{\begingroup\color{beforeurl}\langle\endgroup}%
\def\UrlRight{\begingroup\color{beforeurl}\rangle\endgroup}%
}
\begin{document}
\color{blue}\url{http://www.example.org/}
\end{document}
答案2
我不确定我是否理解了这些要求,但这里有一些自定义内容,\verb
或多或少是从我在另一个场合需要的一些代码中提取出来的。作为alltt
来自alltt
包的环境,它通常会将\
、{
和}
视为环境。此外,它将空格视为常规tex
源代码中的空格,从而允许换行。这是一个内联的,而不是显示的“环境”。
用作\myverb!stuff!
或\myverb+stuff+
等...(参数中没有空行,强制多个空格,\ \ \
例如在标准文本中使用)。
\documentclass{article}
\usepackage{xcolor}
\usepackage{textcomp}
\makeatletter
% DEFINITIONS FOR SOME CUSTOM INLINE VERBATIM À LA ALLTT
% customize as desired:
\def\MicroFont{\normalfont\ttfamily\hyphenchar\font 45 }
\def\mydo@noligs #1%
% jfbu: modification to \do@noligs (added space after `#1) is mandatory if
% space is not made active via \@vobeyspaces in verbatim stuff.
{%
\catcode `#1\active
\begingroup \lccode `\~=`#1\relax
\lowercase {\endgroup \def ~{\leavevmode \kern \z@ \char `#1 }}%
}%
% custom inline verbatim allowing line-breaks and like in alltt environment, \,
% { and } have their standard behavoir. For example an hyphenation point may be
% added with \-. NOTA BENE: spaces are treated as elsewhere, thus multiple
% spaces in source collapsed into only one in printed result. Line breaks are
% possible.
\def\myverb
{%
\relax \ifmmode\hbox\else\leavevmode\null\fi
\bgroup \MicroFont
\let\do\mydo@noligs \verbatim@nolig@list
\let\do\@makeother \dospecials
\catcode32 10
\catcode92 0 \catcode123 1 \catcode125 2
\frenchspacing
\@myverb
}%
\def\@myverb #1{\catcode`#1\active\lccode`\~`#1\lowercase{\let~\egroup}}%
\makeatother
\newcommand{\placeholder}[1]{\textcolor{red!60!black}{\textlangle#1\textrangle}}
\begin{document}\thispagestyle{empty}
\myverb+Hello \placeholder{name}
Hello \placeholder{name}
Hello \placeholder{name}
Hello \placeholder{name}
Hello \placeholder{name}
Hello \placeholder{name}
Hello \placeholder{name}
Hello \placeholder{name}+ and this works also in math mode $a^n
+\myverb?b^n=c^n?$. Back to normal.
\end{document}
我会尝试
\newcommand{\urlholder}[1]{\textcolor{red!60!black}{\textlangle\url{#1}\textrangle}}
母语:
\documentclass{article}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{url}
\newcommand{\urlholder}[1]{\textcolor{red!60!black}{\textlangle\url{#1}\textrangle}}
\begin{document}
Hello \urlholder{name and \name}
\end{document}