Poetry, calligrams and TikZ/PStricks challenge The Next CEO of Stack OverflowShowcase TeX Typography for TUG's CalendarFitting text to a shape in TikZBook on a Single (Poster) PageTikZ: connecting nodepartsFundamental differences : PSTricks, TikZ/PGF and othersTikZ: Handdrawn boxes/arrows/circles for flowchartsLaTeX poetry anthology templatesTikZ - Recursive Arc DrawingHow to draw tikz image of the ridge regression image?Draw a 2d space-time diagram in latexDecember challenge: Create an Advent CalendarDraw an axis with curved arrows in both directions in TIKZTriangular numbers (again) in TikZ

Why don't programming languages automatically manage the synchronous/asynchronous problem?

What does "Its cash flow is deeply negative" mean?

Why do airplanes bank sharply to the right after air-to-air refueling?

How do I align (1) and (2)?

Why the difference in type-inference over the as-pattern in two similar function definitions?

How did people program for Consoles with multiple CPUs?

Axiom Schema vs Axiom

Is a distribution that is normal, but highly skewed considered Gaussian?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Prepend last line of stdin to entire stdin

Why isn't acceleration always zero whenever velocity is zero, such as the moment a ball bounces off a wall?

Why, when going from special to general relativity, do we just replace partial derivatives with covariant derivatives?

Is there a difference between "Fahrstuhl" and "Aufzug"

How to count occurrences of text in a file?

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

A small doubt about the dominated convergence theorem

Calculator final project in Python

Flying from Cape Town to England and return to another province

What did we know about the Kessel run before the prequels?

How to get from Geneva Airport to Metabief, Doubs, France by public transport?

RigExpert AA-35 - Interpreting The Information

Won the lottery - how do I keep the money?

Is it convenient to ask the journal's editor for two additional days to complete a review?

What happened in Rome, when the western empire "fell"?



Poetry, calligrams and TikZ/PStricks challenge



The Next CEO of Stack OverflowShowcase TeX Typography for TUG's CalendarFitting text to a shape in TikZBook on a Single (Poster) PageTikZ: connecting nodepartsFundamental differences : PSTricks, TikZ/PGF and othersTikZ: Handdrawn boxes/arrows/circles for flowchartsLaTeX poetry anthology templatesTikZ - Recursive Arc DrawingHow to draw tikz image of the ridge regression image?Draw a 2d space-time diagram in latexDecember challenge: Create an Advent CalendarDraw an axis with curved arrows in both directions in TIKZTriangular numbers (again) in TikZ










5















One of my favorite poets is probably Guillaume Apollinaire. His story and proximity to Picasso made him a precursor. Calligrams was a constant attempt to merge poetry and visual. I am wondering how we could actually recreate in TikZ enter image description hereenter image description hereenter image description here










share|improve this question



















  • 1





    There’s one example of concrete poetry at tex.stackexchange.com/a/193563 I’m not persuaded that tikz is the best tool for this.

    – Thérèse
    4 hours ago






  • 1





    A fine challenge! Personally, I'd like to try La colombe poignardée et le jet d'eau, but would prefer to do it with pstricks.

    – Bernard
    4 hours ago











  • @Bernard oh this one is very pretty too !! I had it to my initial question

    – Julien-Elie Taieb
    4 hours ago











  • @Thérèse I am not sure I agree: tex.stackexchange.com/a/68740/121799.

    – marmot
    3 hours ago











  • See also: tex.stackexchange.com/a/403353/48

    – ShreevatsaR
    3 hours ago















5















One of my favorite poets is probably Guillaume Apollinaire. His story and proximity to Picasso made him a precursor. Calligrams was a constant attempt to merge poetry and visual. I am wondering how we could actually recreate in TikZ enter image description hereenter image description hereenter image description here










share|improve this question



















  • 1





    There’s one example of concrete poetry at tex.stackexchange.com/a/193563 I’m not persuaded that tikz is the best tool for this.

    – Thérèse
    4 hours ago






  • 1





    A fine challenge! Personally, I'd like to try La colombe poignardée et le jet d'eau, but would prefer to do it with pstricks.

    – Bernard
    4 hours ago











  • @Bernard oh this one is very pretty too !! I had it to my initial question

    – Julien-Elie Taieb
    4 hours ago











  • @Thérèse I am not sure I agree: tex.stackexchange.com/a/68740/121799.

    – marmot
    3 hours ago











  • See also: tex.stackexchange.com/a/403353/48

    – ShreevatsaR
    3 hours ago













5












5








5


2






One of my favorite poets is probably Guillaume Apollinaire. His story and proximity to Picasso made him a precursor. Calligrams was a constant attempt to merge poetry and visual. I am wondering how we could actually recreate in TikZ enter image description hereenter image description hereenter image description here










share|improve this question
















One of my favorite poets is probably Guillaume Apollinaire. His story and proximity to Picasso made him a precursor. Calligrams was a constant attempt to merge poetry and visual. I am wondering how we could actually recreate in TikZ enter image description hereenter image description hereenter image description here







tikz-pgf pstricks poetry






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 4 hours ago







Julien-Elie Taieb

















asked 4 hours ago









Julien-Elie TaiebJulien-Elie Taieb

20519




20519







  • 1





    There’s one example of concrete poetry at tex.stackexchange.com/a/193563 I’m not persuaded that tikz is the best tool for this.

    – Thérèse
    4 hours ago






  • 1





    A fine challenge! Personally, I'd like to try La colombe poignardée et le jet d'eau, but would prefer to do it with pstricks.

    – Bernard
    4 hours ago











  • @Bernard oh this one is very pretty too !! I had it to my initial question

    – Julien-Elie Taieb
    4 hours ago











  • @Thérèse I am not sure I agree: tex.stackexchange.com/a/68740/121799.

    – marmot
    3 hours ago











  • See also: tex.stackexchange.com/a/403353/48

    – ShreevatsaR
    3 hours ago












  • 1





    There’s one example of concrete poetry at tex.stackexchange.com/a/193563 I’m not persuaded that tikz is the best tool for this.

    – Thérèse
    4 hours ago






  • 1





    A fine challenge! Personally, I'd like to try La colombe poignardée et le jet d'eau, but would prefer to do it with pstricks.

    – Bernard
    4 hours ago











  • @Bernard oh this one is very pretty too !! I had it to my initial question

    – Julien-Elie Taieb
    4 hours ago











  • @Thérèse I am not sure I agree: tex.stackexchange.com/a/68740/121799.

    – marmot
    3 hours ago











  • See also: tex.stackexchange.com/a/403353/48

    – ShreevatsaR
    3 hours ago







1




1





There’s one example of concrete poetry at tex.stackexchange.com/a/193563 I’m not persuaded that tikz is the best tool for this.

– Thérèse
4 hours ago





There’s one example of concrete poetry at tex.stackexchange.com/a/193563 I’m not persuaded that tikz is the best tool for this.

– Thérèse
4 hours ago




1




1





A fine challenge! Personally, I'd like to try La colombe poignardée et le jet d'eau, but would prefer to do it with pstricks.

– Bernard
4 hours ago





A fine challenge! Personally, I'd like to try La colombe poignardée et le jet d'eau, but would prefer to do it with pstricks.

– Bernard
4 hours ago













@Bernard oh this one is very pretty too !! I had it to my initial question

– Julien-Elie Taieb
4 hours ago





@Bernard oh this one is very pretty too !! I had it to my initial question

– Julien-Elie Taieb
4 hours ago













@Thérèse I am not sure I agree: tex.stackexchange.com/a/68740/121799.

– marmot
3 hours ago





@Thérèse I am not sure I agree: tex.stackexchange.com/a/68740/121799.

– marmot
3 hours ago













See also: tex.stackexchange.com/a/403353/48

– ShreevatsaR
3 hours ago





See also: tex.stackexchange.com/a/403353/48

– ShreevatsaR
3 hours ago










1 Answer
1






active

oldest

votes


















2














This is just to mention that TikZ has already built in a large selection of tricks that can be applied to paths. Here is a very basic example. (Yes, I know I am not a poet.;-)



documentclass[tikz,border=3.14mm]standalone
usetikzlibrarydecorations.text
begindocument
begintikzpicture
defmypath
(-2,0) to[bend right=10] (0,5.1)
to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1) -- (-1.5,0) -- cycle
draw mypath;
path[decorate,decoration=text along path,
text=In Paris there is a tower and beneath it there grows a flower. And often
on Mondays there is a shower.] mypath;
endtikzpicture
enddocument


enter image description here



The IMHO most stunning tools are however not from the pgfmanual, but due to Paul Gaborit's great answer. You basically define the contour and the macro takes care of the rest. (Of course, you may want to tune things in the end a bit, but it is stunning how much it does out of the box.)



documentclassstandalone
usepackagelmodern
usepackage[T1]fontenc
usepackageshapepar
usepackagemicrotype
usepackagelipsum
usepackagetikz
usetikzlibrarycalc,fit,intersections

defshapeparnodeaccuracy2
newcommandshapeparnode[6][]
% 6 parameters:
% style for node (default:empty),
% h margin, v margin, left path, right path, text (just one paragraph!)

% name left and right paths and compute there bounding boxes
beginscope[local bounding box=leftbb]
path[name path global=left,xshift=#2] #4;
endscope
node[inner ysep=-#3,inner xsep=0pt,fit=(leftbb)](leftbb);
beginscope[local bounding box=rightbb]
path[name path global=right,xshift=-#2] #5;
endscope
node[inner ysep=-#3,inner xsep=0pt,fit=(rightbb)](rightbb);

% global bounding box
path let
p1=(leftbb.north west), p2=(leftbb.south west),
p3=(rightbb.north east), p4=(rightbb.south east)
in
pgfextra
pgfmathsetmacroymin(y1 < y3) ? y1 : y3
pgfmathsetmacroymax(y2 > y4) ? y2 : y4
typeoutymin ymin
typeoutymax ymax
node[inner sep=0,fit=(x1,ymin pt)(x3,ymax pt)](mybb);

% compute nb steps
path let p1=(mybb.north), p2=(mybb.south) in
pgfextra
pgfmathsetmacrofnthght1em/shapeparnodeaccuracy
pgfmathtruncatemacronbsteps(y1-y2)/fnthght
xdefnbstepsnbsteps
typeoutnb steps nbsteps
;

% horizontal references
path (mybb.north) -- (mybb.south)
foreach cnt in 0,1,...,nbsteps
pgfextrapgfmathsetmacroposcnt/nbsteps
coordinate[pos=pos] (ref cnt)
;

% left and right boundaries coordinates
foreach cnt in 0,1,...,nbsteps- ref cnt) -- (mybb.west
% start point (and initial value of boundshape)
path let p1=(l 0) in
pgfextra
pgfmathsetmacroxstartx1
xdefboundshape00bxstart
xdefxminxstart
xdefxmaxxstart
;

% top and bottom
path let p1=(l 0), p2=(l nbsteps) in
pgfextra
pgfmathsetmacroystarty1xdefystartystart
pgfmathsetmacroyendingy2xdefyendingyending
;
% incremental definition of boundshape
foreach cnt in 0,1,...,nbsteps
path let p1=(l cnt), p2=(r cnt) in
pgfextra
pgfmathsetmacrostartx1
pgfmathsetmacrolenx2-x1
pgfmathsetmacroyposcnt/nbsteps*(ystart - yending)
let\=relax xdefboundshapeboundshape\ypoststartlen
pgfmathsetmacroxmin(xmin < start) ? xmin : start
xdefxminxmin
pgfmathsetmacroxmax(xmax > start + len) ? xmax : start + len
xdefxmaxxmax
;

% draw the node with text in a shapepar
pgfmathsetmacroymaxystart - yending
let\=relax xdefboundshapeboundshape\ymaxe0
node[#1,text width=xmax pt - xmin pt,align=flush left,
anchor=north west,inner sep=0]
at (mybb.north west -

defmytextIn Paris there is a tower and beneath it there grows a flower.

begindocument%
begintikzpicture
defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
(-2,0) to[bend right=10] (0,5.1)
defpathtwo(0,5.1)
to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
fill[top color=lime,bottom color=orange,middle color=yellow,draw=white]
pathone -- pathtwo -- cycle;
defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
(-1.6,0) to[bend right=10] (0,4.1)
defpathtwo(0,4.1)
to[bend right=10] (1.6,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
shapeparnode[text=black,font=footnotesizescshape]
0.1em0.1empathonepathtwomytext%
%draw[orange] pathone;
%draw[orange] pathtwo;
endtikzpicture
enddocument


enter image description here






share|improve this answer























    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "85"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f482345%2fpoetry-calligrams-and-tikz-pstricks-challenge%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    This is just to mention that TikZ has already built in a large selection of tricks that can be applied to paths. Here is a very basic example. (Yes, I know I am not a poet.;-)



    documentclass[tikz,border=3.14mm]standalone
    usetikzlibrarydecorations.text
    begindocument
    begintikzpicture
    defmypath
    (-2,0) to[bend right=10] (0,5.1)
    to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1) -- (-1.5,0) -- cycle
    draw mypath;
    path[decorate,decoration=text along path,
    text=In Paris there is a tower and beneath it there grows a flower. And often
    on Mondays there is a shower.] mypath;
    endtikzpicture
    enddocument


    enter image description here



    The IMHO most stunning tools are however not from the pgfmanual, but due to Paul Gaborit's great answer. You basically define the contour and the macro takes care of the rest. (Of course, you may want to tune things in the end a bit, but it is stunning how much it does out of the box.)



    documentclassstandalone
    usepackagelmodern
    usepackage[T1]fontenc
    usepackageshapepar
    usepackagemicrotype
    usepackagelipsum
    usepackagetikz
    usetikzlibrarycalc,fit,intersections

    defshapeparnodeaccuracy2
    newcommandshapeparnode[6][]
    % 6 parameters:
    % style for node (default:empty),
    % h margin, v margin, left path, right path, text (just one paragraph!)

    % name left and right paths and compute there bounding boxes
    beginscope[local bounding box=leftbb]
    path[name path global=left,xshift=#2] #4;
    endscope
    node[inner ysep=-#3,inner xsep=0pt,fit=(leftbb)](leftbb);
    beginscope[local bounding box=rightbb]
    path[name path global=right,xshift=-#2] #5;
    endscope
    node[inner ysep=-#3,inner xsep=0pt,fit=(rightbb)](rightbb);

    % global bounding box
    path let
    p1=(leftbb.north west), p2=(leftbb.south west),
    p3=(rightbb.north east), p4=(rightbb.south east)
    in
    pgfextra
    pgfmathsetmacroymin(y1 < y3) ? y1 : y3
    pgfmathsetmacroymax(y2 > y4) ? y2 : y4
    typeoutymin ymin
    typeoutymax ymax
    node[inner sep=0,fit=(x1,ymin pt)(x3,ymax pt)](mybb);

    % compute nb steps
    path let p1=(mybb.north), p2=(mybb.south) in
    pgfextra
    pgfmathsetmacrofnthght1em/shapeparnodeaccuracy
    pgfmathtruncatemacronbsteps(y1-y2)/fnthght
    xdefnbstepsnbsteps
    typeoutnb steps nbsteps
    ;

    % horizontal references
    path (mybb.north) -- (mybb.south)
    foreach cnt in 0,1,...,nbsteps
    pgfextrapgfmathsetmacroposcnt/nbsteps
    coordinate[pos=pos] (ref cnt)
    ;

    % left and right boundaries coordinates
    foreach cnt in 0,1,...,nbsteps- ref cnt) -- (mybb.west
    % start point (and initial value of boundshape)
    path let p1=(l 0) in
    pgfextra
    pgfmathsetmacroxstartx1
    xdefboundshape00bxstart
    xdefxminxstart
    xdefxmaxxstart
    ;

    % top and bottom
    path let p1=(l 0), p2=(l nbsteps) in
    pgfextra
    pgfmathsetmacroystarty1xdefystartystart
    pgfmathsetmacroyendingy2xdefyendingyending
    ;
    % incremental definition of boundshape
    foreach cnt in 0,1,...,nbsteps
    path let p1=(l cnt), p2=(r cnt) in
    pgfextra
    pgfmathsetmacrostartx1
    pgfmathsetmacrolenx2-x1
    pgfmathsetmacroyposcnt/nbsteps*(ystart - yending)
    let\=relax xdefboundshapeboundshape\ypoststartlen
    pgfmathsetmacroxmin(xmin < start) ? xmin : start
    xdefxminxmin
    pgfmathsetmacroxmax(xmax > start + len) ? xmax : start + len
    xdefxmaxxmax
    ;

    % draw the node with text in a shapepar
    pgfmathsetmacroymaxystart - yending
    let\=relax xdefboundshapeboundshape\ymaxe0
    node[#1,text width=xmax pt - xmin pt,align=flush left,
    anchor=north west,inner sep=0]
    at (mybb.north west -

    defmytextIn Paris there is a tower and beneath it there grows a flower.

    begindocument%
    begintikzpicture
    defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
    (-2,0) to[bend right=10] (0,5.1)
    defpathtwo(0,5.1)
    to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
    fill[top color=lime,bottom color=orange,middle color=yellow,draw=white]
    pathone -- pathtwo -- cycle;
    defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
    (-1.6,0) to[bend right=10] (0,4.1)
    defpathtwo(0,4.1)
    to[bend right=10] (1.6,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
    shapeparnode[text=black,font=footnotesizescshape]
    0.1em0.1empathonepathtwomytext%
    %draw[orange] pathone;
    %draw[orange] pathtwo;
    endtikzpicture
    enddocument


    enter image description here






    share|improve this answer



























      2














      This is just to mention that TikZ has already built in a large selection of tricks that can be applied to paths. Here is a very basic example. (Yes, I know I am not a poet.;-)



      documentclass[tikz,border=3.14mm]standalone
      usetikzlibrarydecorations.text
      begindocument
      begintikzpicture
      defmypath
      (-2,0) to[bend right=10] (0,5.1)
      to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1) -- (-1.5,0) -- cycle
      draw mypath;
      path[decorate,decoration=text along path,
      text=In Paris there is a tower and beneath it there grows a flower. And often
      on Mondays there is a shower.] mypath;
      endtikzpicture
      enddocument


      enter image description here



      The IMHO most stunning tools are however not from the pgfmanual, but due to Paul Gaborit's great answer. You basically define the contour and the macro takes care of the rest. (Of course, you may want to tune things in the end a bit, but it is stunning how much it does out of the box.)



      documentclassstandalone
      usepackagelmodern
      usepackage[T1]fontenc
      usepackageshapepar
      usepackagemicrotype
      usepackagelipsum
      usepackagetikz
      usetikzlibrarycalc,fit,intersections

      defshapeparnodeaccuracy2
      newcommandshapeparnode[6][]
      % 6 parameters:
      % style for node (default:empty),
      % h margin, v margin, left path, right path, text (just one paragraph!)

      % name left and right paths and compute there bounding boxes
      beginscope[local bounding box=leftbb]
      path[name path global=left,xshift=#2] #4;
      endscope
      node[inner ysep=-#3,inner xsep=0pt,fit=(leftbb)](leftbb);
      beginscope[local bounding box=rightbb]
      path[name path global=right,xshift=-#2] #5;
      endscope
      node[inner ysep=-#3,inner xsep=0pt,fit=(rightbb)](rightbb);

      % global bounding box
      path let
      p1=(leftbb.north west), p2=(leftbb.south west),
      p3=(rightbb.north east), p4=(rightbb.south east)
      in
      pgfextra
      pgfmathsetmacroymin(y1 < y3) ? y1 : y3
      pgfmathsetmacroymax(y2 > y4) ? y2 : y4
      typeoutymin ymin
      typeoutymax ymax
      node[inner sep=0,fit=(x1,ymin pt)(x3,ymax pt)](mybb);

      % compute nb steps
      path let p1=(mybb.north), p2=(mybb.south) in
      pgfextra
      pgfmathsetmacrofnthght1em/shapeparnodeaccuracy
      pgfmathtruncatemacronbsteps(y1-y2)/fnthght
      xdefnbstepsnbsteps
      typeoutnb steps nbsteps
      ;

      % horizontal references
      path (mybb.north) -- (mybb.south)
      foreach cnt in 0,1,...,nbsteps
      pgfextrapgfmathsetmacroposcnt/nbsteps
      coordinate[pos=pos] (ref cnt)
      ;

      % left and right boundaries coordinates
      foreach cnt in 0,1,...,nbsteps- ref cnt) -- (mybb.west
      % start point (and initial value of boundshape)
      path let p1=(l 0) in
      pgfextra
      pgfmathsetmacroxstartx1
      xdefboundshape00bxstart
      xdefxminxstart
      xdefxmaxxstart
      ;

      % top and bottom
      path let p1=(l 0), p2=(l nbsteps) in
      pgfextra
      pgfmathsetmacroystarty1xdefystartystart
      pgfmathsetmacroyendingy2xdefyendingyending
      ;
      % incremental definition of boundshape
      foreach cnt in 0,1,...,nbsteps
      path let p1=(l cnt), p2=(r cnt) in
      pgfextra
      pgfmathsetmacrostartx1
      pgfmathsetmacrolenx2-x1
      pgfmathsetmacroyposcnt/nbsteps*(ystart - yending)
      let\=relax xdefboundshapeboundshape\ypoststartlen
      pgfmathsetmacroxmin(xmin < start) ? xmin : start
      xdefxminxmin
      pgfmathsetmacroxmax(xmax > start + len) ? xmax : start + len
      xdefxmaxxmax
      ;

      % draw the node with text in a shapepar
      pgfmathsetmacroymaxystart - yending
      let\=relax xdefboundshapeboundshape\ymaxe0
      node[#1,text width=xmax pt - xmin pt,align=flush left,
      anchor=north west,inner sep=0]
      at (mybb.north west -

      defmytextIn Paris there is a tower and beneath it there grows a flower.

      begindocument%
      begintikzpicture
      defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
      (-2,0) to[bend right=10] (0,5.1)
      defpathtwo(0,5.1)
      to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
      fill[top color=lime,bottom color=orange,middle color=yellow,draw=white]
      pathone -- pathtwo -- cycle;
      defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
      (-1.6,0) to[bend right=10] (0,4.1)
      defpathtwo(0,4.1)
      to[bend right=10] (1.6,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
      shapeparnode[text=black,font=footnotesizescshape]
      0.1em0.1empathonepathtwomytext%
      %draw[orange] pathone;
      %draw[orange] pathtwo;
      endtikzpicture
      enddocument


      enter image description here






      share|improve this answer

























        2












        2








        2







        This is just to mention that TikZ has already built in a large selection of tricks that can be applied to paths. Here is a very basic example. (Yes, I know I am not a poet.;-)



        documentclass[tikz,border=3.14mm]standalone
        usetikzlibrarydecorations.text
        begindocument
        begintikzpicture
        defmypath
        (-2,0) to[bend right=10] (0,5.1)
        to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1) -- (-1.5,0) -- cycle
        draw mypath;
        path[decorate,decoration=text along path,
        text=In Paris there is a tower and beneath it there grows a flower. And often
        on Mondays there is a shower.] mypath;
        endtikzpicture
        enddocument


        enter image description here



        The IMHO most stunning tools are however not from the pgfmanual, but due to Paul Gaborit's great answer. You basically define the contour and the macro takes care of the rest. (Of course, you may want to tune things in the end a bit, but it is stunning how much it does out of the box.)



        documentclassstandalone
        usepackagelmodern
        usepackage[T1]fontenc
        usepackageshapepar
        usepackagemicrotype
        usepackagelipsum
        usepackagetikz
        usetikzlibrarycalc,fit,intersections

        defshapeparnodeaccuracy2
        newcommandshapeparnode[6][]
        % 6 parameters:
        % style for node (default:empty),
        % h margin, v margin, left path, right path, text (just one paragraph!)

        % name left and right paths and compute there bounding boxes
        beginscope[local bounding box=leftbb]
        path[name path global=left,xshift=#2] #4;
        endscope
        node[inner ysep=-#3,inner xsep=0pt,fit=(leftbb)](leftbb);
        beginscope[local bounding box=rightbb]
        path[name path global=right,xshift=-#2] #5;
        endscope
        node[inner ysep=-#3,inner xsep=0pt,fit=(rightbb)](rightbb);

        % global bounding box
        path let
        p1=(leftbb.north west), p2=(leftbb.south west),
        p3=(rightbb.north east), p4=(rightbb.south east)
        in
        pgfextra
        pgfmathsetmacroymin(y1 < y3) ? y1 : y3
        pgfmathsetmacroymax(y2 > y4) ? y2 : y4
        typeoutymin ymin
        typeoutymax ymax
        node[inner sep=0,fit=(x1,ymin pt)(x3,ymax pt)](mybb);

        % compute nb steps
        path let p1=(mybb.north), p2=(mybb.south) in
        pgfextra
        pgfmathsetmacrofnthght1em/shapeparnodeaccuracy
        pgfmathtruncatemacronbsteps(y1-y2)/fnthght
        xdefnbstepsnbsteps
        typeoutnb steps nbsteps
        ;

        % horizontal references
        path (mybb.north) -- (mybb.south)
        foreach cnt in 0,1,...,nbsteps
        pgfextrapgfmathsetmacroposcnt/nbsteps
        coordinate[pos=pos] (ref cnt)
        ;

        % left and right boundaries coordinates
        foreach cnt in 0,1,...,nbsteps- ref cnt) -- (mybb.west
        % start point (and initial value of boundshape)
        path let p1=(l 0) in
        pgfextra
        pgfmathsetmacroxstartx1
        xdefboundshape00bxstart
        xdefxminxstart
        xdefxmaxxstart
        ;

        % top and bottom
        path let p1=(l 0), p2=(l nbsteps) in
        pgfextra
        pgfmathsetmacroystarty1xdefystartystart
        pgfmathsetmacroyendingy2xdefyendingyending
        ;
        % incremental definition of boundshape
        foreach cnt in 0,1,...,nbsteps
        path let p1=(l cnt), p2=(r cnt) in
        pgfextra
        pgfmathsetmacrostartx1
        pgfmathsetmacrolenx2-x1
        pgfmathsetmacroyposcnt/nbsteps*(ystart - yending)
        let\=relax xdefboundshapeboundshape\ypoststartlen
        pgfmathsetmacroxmin(xmin < start) ? xmin : start
        xdefxminxmin
        pgfmathsetmacroxmax(xmax > start + len) ? xmax : start + len
        xdefxmaxxmax
        ;

        % draw the node with text in a shapepar
        pgfmathsetmacroymaxystart - yending
        let\=relax xdefboundshapeboundshape\ymaxe0
        node[#1,text width=xmax pt - xmin pt,align=flush left,
        anchor=north west,inner sep=0]
        at (mybb.north west -

        defmytextIn Paris there is a tower and beneath it there grows a flower.

        begindocument%
        begintikzpicture
        defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
        (-2,0) to[bend right=10] (0,5.1)
        defpathtwo(0,5.1)
        to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
        fill[top color=lime,bottom color=orange,middle color=yellow,draw=white]
        pathone -- pathtwo -- cycle;
        defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
        (-1.6,0) to[bend right=10] (0,4.1)
        defpathtwo(0,4.1)
        to[bend right=10] (1.6,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
        shapeparnode[text=black,font=footnotesizescshape]
        0.1em0.1empathonepathtwomytext%
        %draw[orange] pathone;
        %draw[orange] pathtwo;
        endtikzpicture
        enddocument


        enter image description here






        share|improve this answer













        This is just to mention that TikZ has already built in a large selection of tricks that can be applied to paths. Here is a very basic example. (Yes, I know I am not a poet.;-)



        documentclass[tikz,border=3.14mm]standalone
        usetikzlibrarydecorations.text
        begindocument
        begintikzpicture
        defmypath
        (-2,0) to[bend right=10] (0,5.1)
        to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1) -- (-1.5,0) -- cycle
        draw mypath;
        path[decorate,decoration=text along path,
        text=In Paris there is a tower and beneath it there grows a flower. And often
        on Mondays there is a shower.] mypath;
        endtikzpicture
        enddocument


        enter image description here



        The IMHO most stunning tools are however not from the pgfmanual, but due to Paul Gaborit's great answer. You basically define the contour and the macro takes care of the rest. (Of course, you may want to tune things in the end a bit, but it is stunning how much it does out of the box.)



        documentclassstandalone
        usepackagelmodern
        usepackage[T1]fontenc
        usepackageshapepar
        usepackagemicrotype
        usepackagelipsum
        usepackagetikz
        usetikzlibrarycalc,fit,intersections

        defshapeparnodeaccuracy2
        newcommandshapeparnode[6][]
        % 6 parameters:
        % style for node (default:empty),
        % h margin, v margin, left path, right path, text (just one paragraph!)

        % name left and right paths and compute there bounding boxes
        beginscope[local bounding box=leftbb]
        path[name path global=left,xshift=#2] #4;
        endscope
        node[inner ysep=-#3,inner xsep=0pt,fit=(leftbb)](leftbb);
        beginscope[local bounding box=rightbb]
        path[name path global=right,xshift=-#2] #5;
        endscope
        node[inner ysep=-#3,inner xsep=0pt,fit=(rightbb)](rightbb);

        % global bounding box
        path let
        p1=(leftbb.north west), p2=(leftbb.south west),
        p3=(rightbb.north east), p4=(rightbb.south east)
        in
        pgfextra
        pgfmathsetmacroymin(y1 < y3) ? y1 : y3
        pgfmathsetmacroymax(y2 > y4) ? y2 : y4
        typeoutymin ymin
        typeoutymax ymax
        node[inner sep=0,fit=(x1,ymin pt)(x3,ymax pt)](mybb);

        % compute nb steps
        path let p1=(mybb.north), p2=(mybb.south) in
        pgfextra
        pgfmathsetmacrofnthght1em/shapeparnodeaccuracy
        pgfmathtruncatemacronbsteps(y1-y2)/fnthght
        xdefnbstepsnbsteps
        typeoutnb steps nbsteps
        ;

        % horizontal references
        path (mybb.north) -- (mybb.south)
        foreach cnt in 0,1,...,nbsteps
        pgfextrapgfmathsetmacroposcnt/nbsteps
        coordinate[pos=pos] (ref cnt)
        ;

        % left and right boundaries coordinates
        foreach cnt in 0,1,...,nbsteps- ref cnt) -- (mybb.west
        % start point (and initial value of boundshape)
        path let p1=(l 0) in
        pgfextra
        pgfmathsetmacroxstartx1
        xdefboundshape00bxstart
        xdefxminxstart
        xdefxmaxxstart
        ;

        % top and bottom
        path let p1=(l 0), p2=(l nbsteps) in
        pgfextra
        pgfmathsetmacroystarty1xdefystartystart
        pgfmathsetmacroyendingy2xdefyendingyending
        ;
        % incremental definition of boundshape
        foreach cnt in 0,1,...,nbsteps
        path let p1=(l cnt), p2=(r cnt) in
        pgfextra
        pgfmathsetmacrostartx1
        pgfmathsetmacrolenx2-x1
        pgfmathsetmacroyposcnt/nbsteps*(ystart - yending)
        let\=relax xdefboundshapeboundshape\ypoststartlen
        pgfmathsetmacroxmin(xmin < start) ? xmin : start
        xdefxminxmin
        pgfmathsetmacroxmax(xmax > start + len) ? xmax : start + len
        xdefxmaxxmax
        ;

        % draw the node with text in a shapepar
        pgfmathsetmacroymaxystart - yending
        let\=relax xdefboundshapeboundshape\ymaxe0
        node[#1,text width=xmax pt - xmin pt,align=flush left,
        anchor=north west,inner sep=0]
        at (mybb.north west -

        defmytextIn Paris there is a tower and beneath it there grows a flower.

        begindocument%
        begintikzpicture
        defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
        (-2,0) to[bend right=10] (0,5.1)
        defpathtwo(0,5.1)
        to[bend right=10] (2,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
        fill[top color=lime,bottom color=orange,middle color=yellow,draw=white]
        pathone -- pathtwo -- cycle;
        defpathone(0,1) -- (-0.8,1) -- (-1.5,0) --
        (-1.6,0) to[bend right=10] (0,4.1)
        defpathtwo(0,4.1)
        to[bend right=10] (1.6,0) -- (1.5,0) -- (0.8,1) -- (-0.8,1)
        shapeparnode[text=black,font=footnotesizescshape]
        0.1em0.1empathonepathtwomytext%
        %draw[orange] pathone;
        %draw[orange] pathtwo;
        endtikzpicture
        enddocument


        enter image description here







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 hours ago









        marmotmarmot

        113k5145274




        113k5145274



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f482345%2fpoetry-calligrams-and-tikz-pstricks-challenge%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Oświęcim Innehåll Historia | Källor | Externa länkar | Navigeringsmeny50°2′18″N 19°13′17″Ö / 50.03833°N 19.22139°Ö / 50.03833; 19.2213950°2′18″N 19°13′17″Ö / 50.03833°N 19.22139°Ö / 50.03833; 19.221393089658Nordisk familjebok, AuschwitzInsidan tro och existensJewish Community i OświęcimAuschwitz Jewish Center: MuseumAuschwitz Jewish Center

            Valle di Casies Indice Geografia fisica | Origini del nome | Storia | Società | Amministrazione | Sport | Note | Bibliografia | Voci correlate | Altri progetti | Collegamenti esterni | Menu di navigazione46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)Sito istituzionaleAstat Censimento della popolazione 2011 - Determinazione della consistenza dei tre gruppi linguistici della Provincia Autonoma di Bolzano-Alto Adige - giugno 2012Numeri e fattiValle di CasiesDato IstatTabella dei gradi/giorno dei Comuni italiani raggruppati per Regione e Provincia26 agosto 1993, n. 412Heraldry of the World: GsiesStatistiche I.StatValCasies.comWikimedia CommonsWikimedia CommonsValle di CasiesSito ufficialeValle di CasiesMM14870458910042978-6

            Typsetting diagram chases (with TikZ?) Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How to define the default vertical distance between nodes?Draw edge on arcNumerical conditional within tikz keys?TikZ: Drawing an arc from an intersection to an intersectionDrawing rectilinear curves in Tikz, aka an Etch-a-Sketch drawingLine up nested tikz enviroments or how to get rid of themHow to place nodes in an absolute coordinate system in tikzCommutative diagram with curve connecting between nodesTikz with standalone: pinning tikz coordinates to page cmDrawing a Decision Diagram with Tikz and layout manager