9

I need to draw a crescent symbol (used for Indic music notation) using tikz. I have almost done with the drawing but got a problem with the output. The outcome is given below

enter image description here

The code is given below

\begin{tikzpicture}[squarednode/.style={rectangle, minimum size=5mm}, node distance=2mm]
    \node[squarednode] (1) {1};
    \node[squarednode] [right=of 1] (2) {2};
    \node[squarednode] [right=of 2] (3) {3};

    \draw [fill=black, draw=black] (1.south) to [out=315,in=225] (3.south);
    \draw [fill=white, draw=white] (1.south) to [out=325,in=215] (3.south);
\end{tikzpicture}

Everything is working fine but there is a horizontal thin black line from the start to the end of the image which is not required.

Thanks in advance!

6
  • 1
    The line is an artefact of the method you are using to blank out part of your picture and is due to the fact that pdf viewers add a little blurring to the edges of filled regions. It shouldn't appear when printed. To remove it when viewed, fill just the part between the paths rather than filling too much and erasing. Alternatively, the calligraphy library can create tapered paths which might suit you. Jul 28 at 8:54
  • 3
    As @AndrewStacey says: \fill[black] (1.south) to [out=315,in=225] (3.south) to [out=215,in=325] (1.south);
    – NBur
    Jul 28 at 9:11
  • @Chandan In music we call this a slur (or a tie), but not a crescent.
    – C. Peters
    Jul 28 at 9:28
  • I know @C.Peters. Actually the symbol is meend (Indian music symbol in Akarmatrik notation system) which resembles slur or tie. That's why I did not mention it with the staff notation name.
    – Chandan
    Jul 28 at 9:45
  • For future reference, please post a full document so answers don't have to guess parts of your code (such as the locations of the nodes). See tex.meta.stackexchange.com/questions/228/… for some background on why we ask this. Jul 28 at 10:08
14

You need to draw a single closed path instead of overlaying one path with another. This way, the artefact will not show up. You can do like this:

\documentclass[tikz, border=5mm]{standalone}

\begin{document}

\begin{tikzpicture}

\coordinate (1) at (0,0);
\coordinate (3) at (2,0);

%\draw [fill=black, draw=black] (1.south) to [out=315,in=225] (3.south); 
%\draw [fill=white, draw=white] (1.south) to [out=325,in=215] (3.south);

\draw [fill=black, draw=black] (1.south) to [out=315,in=225] (3.south)
    to [out=215,in=325] cycle;

\end{tikzpicture}

\end{document}

enter image description here

4
  • 1
    Sorry, NBur was quicker in posting the very same answer as a comment. So credit should go to them. Jul 28 at 9:13
  • 1
    As a side note, it would be interesting to evaluate the out and in angles depending of the length of the crescent (like for the curly braces, for instance). But it requires more work.
    – SebGlav
    Jul 28 at 9:14
  • 1
    You were quicker, since you posted a full answer!
    – NBur
    Jul 28 at 9:14
  • 1
    By the way, you don't need to write fill=black, draw=black. Black is used by default so you can remove those, makes for cleaner code. If you need to override another color then using \filldraw[black] should work.
    – Alenanno
    Jul 28 at 10:16
9

Just to demonstrate a different option, here's how to achieve this with the calligraphy library.

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calligraphy}
\begin{document}

\begin{tikzpicture}
\calligraphy[copperplate,weight=light] (0,0) to[out=320,in=220] +(2,0);
\end{tikzpicture}
\end{document}

calligraphic crescent

1
  • 1
    Very beautiful this option using \usetikzlibrary{calligraphy}.
    – Sebastiano
    Jul 28 at 21:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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