Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

The LaTeX text footnote symbol sequence begins with ∗ † ‡ § ¶ ∥. I'd like to define a vertical double asterisk (\textastdbl) so that I can insert it into the sequence: * ⁑ † ‡ § ¶ ∥ (note: actual amendment of the footnote symbol sequence isn't part of what I'm asking for).

Here is some code that approximates how things should look like:

\documentclass{article}

\newcommand*{\textastdbl}{*\llap{\raisebox{-1.35ex}{*}}}
\newcommand*{\textastdbltight}{\raisebox{-0.1ex}{*}\llap{\raisebox{-1.25ex}{*}}}

\begin{document}

A new footnote symbol sequence with a vertical double asterisk:
*\textastdbl(\textastdbltight)\dag\ddag\S\P\textbardbl

\end{document}

approximate intended look

My symmetry requirement is that the middle of the symbols \textastdbl and \ddag should be at the same height. I think that \textastdbl is too wide, so something like \textastdbltight in my code has about the right look, except the ex-values weren't chosen precisely and should instead be calculated from the vertical dimensions of the * and \ddag symbols. The resulting symbol should be an ordinary text mode symbol. If * weren't top-down symmetric, an additional challenge would be to flip it for the bottom half.

Update: For those using such a symbol, the Unicode codepoint is U+2051. Load package accsupp and enclose the macro definition in \BeginAccSupp{method=hex,unicode,ActualText=2051}[...]\EndAccSupp{} to produce the right codepoint upon pasting.

share|improve this question
    
By the way: for perfect visual balancing, a hollow paragraph sign would be ideal. This isn't part of my question, though. –  Lover of Structure Jun 27 '13 at 11:18
2  
I think your tight one is OK, it is probably inevitable that you choose the dimensions by eye rather than by measuring as TeX only has the nominal bounding box from the metrics it doesn't know which pixels are actually black, and once you get to this point it is about perception and art not about measurement. You could also add horizontal kerns to change the nominal width but if you put it in sequence directly without the () it doesn't look bad as it is. –  David Carlisle Jun 27 '13 at 12:06
    
Question? I request clarification on your emphasized requirement. "Center of symbol" could mean "center of aggregate symbol" (as I had originally answered the question) or it could mean "center of each symbol component" (as I have revised my answer). Which is it you actually require? –  Steven B. Segletes Jul 2 '13 at 12:01
    
@StevenB.Segletes Thanks for asking! I originally meant "center of aggregate symbol" (I was assuming that one could automatically extract the top/bottom ends of a glyph, an assumption which turned out to be incorrect, as egreg pointed out), but "center of each symbol component" is a stronger and better requirement (and of course implies the other requirement). Of course keep all information in your answer, for our reference. –  Lover of Structure Jul 4 '13 at 10:07

4 Answers 4

up vote 2 down vote accepted

RE-REVISED SOLUTION (to make CENTERS of asterisks match CENTERS of \ddag):

This revised solution allows flexibility to specify the gap between the asterisks, which will necessarily shrink them accordingly. In this MWE, I place 0pt, 3pt, and 6pt, respectively, between the cropped asterisks (and half that again above and below them), before \scalerel'ing them to the exact vertical dimensions of the cropped \ddag. The only subjective aspect to the solution is \cropast and \cropddag in which the user must crop the extra space surrounding the asterisk and double-daggar, using \addvbuffer. But the nice thing with this approach is that, if you change fonts, one merely needs to rework the crop in the new font, and the rest of the solution follows directly from that, unaltered. I show that feature below, with this code:

\documentclass{article}
\usepackage{stackengine}
\usepackage{verbatimbox}
\usepackage{scalerel}
\parindent 0in
%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\cropast{\addvbuffer[-0.008ex -0.744ex]{*}}
\def\cropddag{\raisebox{-.02ex}{\addvbuffer[0.02ex 0.02ex]{\ddag}}}
%% for TeX Gyre Schola %%%
%\usepackage{tgschola}
%\usepackage{textcomp}
%\def\cropast{\addvbuffer[0.02ex -0.64ex]{*}}
%\def\cropddag{\raisebox{.35ex}{\addvbuffer[-0.12ex -0.35ex]{\ddag}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%

\newlength\tmplength
\def\stackedcropast#1{%
  \stackengine{#1}{\cropast}{\cropast}{O}{c}{T}{F}{S}%
  \tmplength=#1%
  \tmplength=.5\tmplength%
  \stackengine{\tmplength}{\usebox{\stackedbox}}{}{O}{c}{T}{F}{S}%
  \stackengine{\tmplength}{\usebox{\stackedbox}}{}{U}{c}{F}{F}{S}%
}
\newcommand\textastdbl[1][0pt]{\scalerel*{$\stackedcropast{#1}$}{$\cropddag$}}
\begin{document}
\tiny cropast cropddag ddag\\
\Huge
\fboxsep=0pt\fboxrule=.02pt
\fbox{\cropast}~~\fbox{\cropddag}~~\fbox{\ddag}

\ddag\textastdbl\textastdbl[3pt]\textastdbl[6pt]\ddag x
\end{document}

The initial image below is running the code as is:

enter image description here

However, if the commented lines are uncommented, to activate the Tex Gyre Schola font, a slightly more complicated recropping gives the revised result for the new font, even when the original \ddag had a large buffer space below it. The fact that the central part of the Gyre \ddag is not symmetric with respect to the outer portion required the crop to place the \ddag centers at 25% and 75% of the crop-box vertical position.

enter image description here

share|improve this answer
    
Great answer! Now that I'm looking at it, I'm wondering whether just vertically pushing the asterisks to height-match the upper and lower ends of the double dagger isn't more aesthetic; one could then scale the symbols from those upper/lower boundaries. –  Lover of Structure Jul 8 '13 at 13:15
    
I'm wondering whether \raisebox is absolutely necessary for some symbols for defining the \crop... macros or \addvbuffer is in principle always sufficient to do the adjusting. I'm thinking about symbols with zero height or depth or whose dimensions indicated by the font are totally at odds with the actual dimensions. –  Lover of Structure Dec 27 '13 at 19:44
    
@LoverofStructure For these particular symbols, the \addvbuffer does not merely add "depth" to the bottom of the symbol, but actually changes its baseline (vertically shifting the symbol). In that case, the \raisebox is needed to undo that shift. Whether it works that way for all symbols and fonts, I'm not sure. –  Steven B. Segletes Dec 30 '13 at 3:38
    
1. In your other answer you define \cropddag instead as \raisebox{-.04ex}{\addvbuffer[-0ex 0.04ex]{\ddag}}; was this difference intentional? (I understand your comment above, but I guess it was this variation that made me think they are the same.) 2. Does \raisebox-adjustment in principle matter only for the reference glyph (here: \cropddag), not the "handled" glyph (here: \cropast)? –  Lover of Structure Dec 30 '13 at 6:39
    
@LoverofStructure 1) I think the difference is merely one of refinement on the latter solution (I seem to recall blowing up the PDFs to very large scale to get the best fit); 2) \raisebox was not necessary (in principle) on \cropast because the eventual use of \cropast was inside a \scalerel which would itself shift the glyph of the first argument to match the vertical footprint of the second. –  Steven B. Segletes Dec 30 '13 at 12:42

Leaving measurements to TeX:

\documentclass{article}
\usepackage{graphicx,calc}

\DeclareRobustCommand\textastdbl{%
  \leavevmode
  {\sbox0{\ddag}%
   \ooalign{\raisebox{\ht0-\height}{*}\cr
            \raisebox{\depth-\dp0}{\scalebox{1}[-1]{*}}\cr}%
  }%
}

\begin{document}
\fboxsep=0pt    % frame with no space
\fboxrule=0.1pt % thin frame
\fbox{\ddag\textastdbl\ddag\dag}
\end{document}

enter image description here

Of course this depends on how the glyphs are realized in the current font. If we use TeX Gyre Schola (tgschola) and textcomp, the result would be

enter image description here

This is because the \ddag symbol has depth, but it doesn't really extend to cover it, as it is appears clearly when framing the symbol:

enter image description here

The conclusion is that this is font dependent; one can devise some automatism in the computations, but the font designer's choices must be taken into account.

share|improve this answer

Just adjusting vertical heights I get:

Sample output

\documentclass{article}

\newcommand*{\dblast}{\ooalign{\raisebox{-.134ex}{*}\cr\raisebox{-1.184ex}{*}}}

\begin{document}
\dblast \ddag \dblast\kern-0.473em\ddag
\end{document}

The values were found by using the last construct to place the symobls on top of each other. A more exact approach would go back to the font sources and create a new symbol...

share|improve this answer
    
vertical adjustment looks good, but i find it interesting that there is such a difference in the widths of the two symbols. if you aligned them more precisely in the horizontal direction, i think the result might be useful. –  barbara beeton Dec 27 '13 at 16:45
    
@barbarabeeton Thanks. I have now tweaked the values –  Andrew Swann Dec 27 '13 at 20:14

At the questioner's request for a second answer, I apply a similar methodology to my other answer, but with the goal of making the outer edges of my double asterisk match the extent of the \ddag. In the other answer, I made the centers of the asterisks match the centers of the \ddag crosses. This approach is actually easier, because it doesn't depend on whether the two \ddag cross elements are vertically symmetric across their midpoint.

As before, I cropped the asterisk and the \ddag in order to enclose its extent. In that way, \scalerel will fit the stacked asterisks to the actual extent of the (cropped) \ddag.

Here is the approach. As with the other solution, the user controls the pre-scaled gap spacing between the asterisks.

\documentclass{article}
\usepackage{stackengine}
\usepackage{verbatimbox}
\usepackage{scalerel}
\def\cropast{\addvbuffer[-0.008ex -0.744ex]{*}}
\def\cropddag{\raisebox{-.04ex}{\addvbuffer[-0ex 0.04ex]{\ddag}}}
\def\stackedcropast#1{%
  \stackengine{#1}{\cropast}{\cropast}{O}{c}{F}{F}{S}}
\newcommand\textastdbl[1][0pt]{\scalerel*{$\stackedcropast{#1}$}{$\cropddag$}}
\begin{document}
\Huge
\fboxsep=0pt\fboxrule=.02pt
\fbox{\cropast}\fbox{\cropddag}

\ddag\textastdbl\textastdbl[2pt]\textastdbl[4pt]\ddag
\end{document}

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.