48

Is possible to surround a cross-reference with brackets or parentheses? For example when I write a command like some text \ref{some label} then when compiled the output was some text (12) without manually placing parentheses in latex command, like some text (\ref{some label}).

4
  • 17
    In case of equations, there is \eqref of package amsmath that adds parentheses around the equation number. Commented Apr 22, 2014 at 1:35
  • If I need to apply that for any referencing, not just the equation?? Commented Apr 22, 2014 at 1:41
  • 5
    Have a good look at the cleveref package. It is (a) fully compatible with the hyperref package (and must be loaded after hyperref) and (b) allows full customization of the appearance of cross-references.
    – Mico
    Commented Apr 22, 2014 at 1:46
  • I've taken the liberty of replacing hyperlink/hyperref with "cross-reference" since that's what your posting is mainly about. (A hyperlink is a special type of a cross-reference.)
    – Mico
    Commented Apr 22, 2014 at 1:54

4 Answers 4

21

You could renew the reference command, perhaps something like:

\let\oldref\ref
\renewcommand{\ref}[1]{(\oldref{#1})}

Here's a complete MWE to play with:

% arara: pdflatex
% arara: pdflatex
\documentclass{article}

\let\oldref\ref
\renewcommand{\ref}[1]{(\oldref{#1})}
\begin{document}

\section{Section heading}\label{sec:testlabel}

Reference: \ref{sec:testlabel}
\end{document}

Note: as mentioned by @Mico, this solution isn't compatible with hyperref package.

1
  • 18
    You should probably provide a note that this solution isn't compatible with hyperref: regardless of whether that package is loaded before or after your code, the result is that no parentheses will be placed around the section number.
    – Mico
    Commented Apr 22, 2014 at 11:09
52

Try using \eqref{fig:label} from the amsmath package.

(Taken from here: https://groups.google.com/forum/#!topic/latexusersgroup/e1CHoBfj8pQ)

5
  • 1
    Welcome to TeX.SE. The OP has stated in a comment that he (?) needs to parentheses to be placed around all cross-referencing call-outs, not just around call-outs to equations. Thus, your answer doesn't address the query fully.
    – Mico
    Commented Jun 16, 2015 at 0:15
  • you are right, and I just read some comments about the issue on the OP. I'll remove my answer soon. Sorry and thank you for your comment.
    – guest2015
    Commented Jun 18, 2015 at 22:02
  • 1
    Upvoted for the equation-only option.
    – grfrazee
    Commented Jul 23, 2015 at 1:47
  • 1
    @Mico Haven't tried other stuff yet, but \eqref works well w/ enumeration items (besides equations)
    – jaam
    Commented Mar 10, 2019 at 22:20
  • 2
    Glad you didn't remove it: despite what the OP requested, it's a very helpful answer
    – Chris Swan
    Commented Aug 4, 2022 at 6:53
15

I prefer the autoref function provided in the hyperref package.

Taking examples for tables and figures:

The Table reference is \autoref{tab:VHTRC}.
The equation reference is \autoref{eq:3}.

Next, new reference styles should be renewed at the preamble. Usually I define them just after including the hyperref package.

\usepackage{hyperref}
\def\equationautorefname~#1\null{Equation (#1)\null}

The \def define the auto-reference variable #1 in the style Equation (#1), which is enclosed in (). Then you will get the result like this:

enter image description here

If you want to use curly braces {}, they should be escaped with the \.

\usepackage{hyperref}
\def\equationautorefname~#1\null{Equation \{#1\}\null}
2
  • 1
    This is dark magic for me. I usually do things like \newcommand{\lemmaautorefname}{Lemma} to change what comes before the reference number. But I have no idea why ~#1\null works at all. Commented Aug 18, 2017 at 16:13
  • 1
    There is already question about \null: macro. It only reserves no space but shows TeX that there is a box which is taken into account for typesetting.
    – Tawei
    Commented Aug 24, 2017 at 2:13
0

I tried cmhughes' answer in my code, it didn't work (no parentheses -- which is strange, because the minimal example worked). guest2015's worked, but required an extra package. I ended up using \newcommand\pef[1]{(\ref{#1})}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .