My parser doesn't support that extra syntax, and I don't understand perl well enough to swap parsers in Template Toolkit.
I'm not sure how it helps me. While I can add attributes this way, I still need to rewrite image.jpg as a series of strings, image-S.jpg; image-M.jpg; and image-L.jpg Another key aspect of this: My website at present has 300 pages in it. A sed script to turn <DIV class=picture> to <div class=picture> is a lot easier than editing every image reference. Regards Sherwood On Fri, 29 Mar 2019 at 20:41, Tom Humiston <t...@jumpingrock.net> wrote: > Maybe I misunderstand you but I think one or the other of these will work: > > > {.parse_me} > >  > > > The latter example is standard Markdown, the former adds a class in the > manner of PHP Markdown Extra (and other parsers as well, I think). > > If you post-process, what you'll parse isn't much different from that: > > > <img src="/path/to/image.jpg" alt="Alt text here" class="parse_me" /> > > <img src="/path/to/image.jpg" alt="Alt text here" title="700 500 50 10 > 138, 1400 1000 100 50 416" /> > > > Whether you parse Markdown or HTML, all your script needs to look for is a > class (or title) such as 'parse_me' OR a title consisting of numbers. > Assuming that the filenames to be generated all follow the same pattern. > > > So all I need to do is write a code snippet that turns > > > >  into the corresponding set of > picture and src image tags. > > > Yup, I think we're just talking about two different ways of marking the > images that your snippet will parse. > > HTH, > T > > > > > On 29 Mar 2019, at 7:44 AM, Sherwood Botsford <sgbotsf...@gmail.com> > wrote: > > > > > > Reason I'm more inclined to preprocess is as follows: > > > > Markdown is visually simpler to parse. > > > > In template toolkit, I create the navigation system, using a 200 line > TT2 script. It's messy. TT2 calls a markdown plugin. > > > > By using the <DIV> versus <div> I have a clear flag to identify where I > need to work. I think this will be simpler to do without going off the > rails. > > > > So all I need to do is write a code snippet that turns > > > >  into the corresponding set of > picture and src image tags. > > > > If I use a variable for the parameters to pass to the srcset criteria, > then I can change this once for the entire site. > > > > It will mean creating at least 2 additional images for each currently > used image. > > > > > > > > Regards > > > > Sherwood > > > > > > > > On Wed, 27 Mar 2019 at 17:07, Tom Humiston <t...@jumpingrock.net> wrote: > > Sherwood, great question and well laid out. If a good solution comes up > I'll probably want it as well. > > > > My idea is to _post-process_ the HTML output to convert marked data into > a picture element, rather than to construct a picture up front that can > withstand parsing from Markdown into HTML. In the source text, I suggest > cramming the image's source data into the image's title attribute, which > then gets unpacked in the post-processing. > > > > I wrote the following as I was working out the idea. > > > > --- > > > > I haven't become familiar with the `<picture>` element but I get the > idea from what you've presented. As for the CSS presentation, fancier > things are of course possible but that doesn't change the need for > well-structured content and good markup. > > > > Like you, I've got no Javascript background, and I'm happy enough to > keep it that way. In fact I'm not much of a programmer at all, which may be > an advantage as I try to always empathize with the non-technical writers > and readers. > > > > So I'm looking at the data salad that supports 'picture' and thinking it > hardly fits into standard prose, and I think one way to come at it is, > firstly, to pick the appropriate existing Markdown that will tuck the > structured data into a place it would pose no harm if visible to readers, > and, secondly, to write a script that will _post-process_ the HTML and > rewrite the element containing the picture data as a picture element at the > desired position. > > > > That is: > > > > 1. Process your Markdown into HTML. > > 2. Post-process the HTML to rewrite instances of picture data as > `<picture>` elements. > > > > For the first step, two options that come to mind use extended Markdown > syntax: the footnote and the description list. > > > > In either case I suppose you could include a keyword or key bit of > syntax to mark the data in a way that will cause your bespoke > post-processing script to recognize and act upon it. > > > > A __footnote__ would place the structured data _outside the flow of the > main text_ (suitable if there is no post-processing) and allow almost any > variety of temporary syntax for arranging that data. Another advantage is > that the HTML link to the footnote, which would indicate where your script > should insert the picture, can reside within a block-level element just as > an `img` now can. (The downside is that the footnote link cannot exist > _without_ associated block-level content. Oh well.) Note that the keyword > cannot be the footnote marker itself, as this is processed out by the > Markdown script (at least in the implementations of which I'm aware). > > > > A __description list__ would place the data in a DL element, structured > either as a series of DT-DD pairs, or as the content of a single pair which > you could again structure in any fashion (as with the footnote). A > disadvantage is that the data will fall more within the surrounding prose > than would a footnote, but advantages may exist as well. > > > > Below are examples of the Markdown I imagine, each using > `\picture-data\` as the identifier to be recognized in post-processing. To > structure the data I merely remove the angle brackets and line breaks (to > minimize Markdown processing) and add semicolons as delimiters. The last > example builds on the standard Markdown image format and thus does not > require extended syntax. > > > > > > ## Example 1: Footnote > > > > A picture[^pic1] will go inside this paragraph. > > > > [^pic1]: \picture-data\ source media="(max-width: 700px)" > sizes="(max-width: 500px) 50vw, 10vw" srcset="stick-figure-narrow.png 138w, > stick-figure-hd-narrow.png 138w"; source media="(max-width: 1400px)" > sizes="(max-width: 1000px) 100vw, 50vw" srcset="stick-figure.png 416w, > stick-figure-hd.png 416w"; img src="stick-original.png" alt="Human" > > > > > > ## Example 2: Description List with Single Term > > > > Lorem ipsum dolor sit amet consectetur adipiscing whatever. > > > > \\picture-data\\ > > : source media="(max-width: 700px)" sizes="(max-width: 500px) > 50vw, 10vw" srcset="stick-figure-narrow.png 138w, > stick-figure-hd-narrow.png 138w"; source media="(max-width: 1400px)" > sizes="(max-width: 1000px) 100vw, 50vw" srcset="stick-figure.png 416w, > stick-figure-hd.png 416w"; img src="stick-original.png" alt="Human" > > > > Lorem ipsum dolor sit amet consectetur adipiscing more of whatever. > > > > > > ## Example 3: Description List with Multiple Terms > > > > \\picture-data\\ > > > > source1 > > : media="(max-width: 700px)" sizes="(max-width: 500px) 50vw, 10vw" > srcset="stick-figure-narrow.png 138w, stick-figure-hd-narrow.png 138w" > > > > source2 > > : media="(max-width: 1400px)" sizes="(max-width: 1000px) 100vw, > 50vw" srcset="stick-figure.png 416w, stick-figure-hd.png 416w"; > > > > img > > : src="stick-original.png" alt="Human" > > > > > > ## Example 4: Image + Footnote > > > > Presumably you'd like a basic one-size-fits-all-screens 'img' element to > be displayed in case there is no post-processing to create a picture > element. Shifting the additional source data (beyond what is required for > img) into a footnote could still be a good answer: > > > > [^pic4] > > > > [^pic4]: \picture-data\ source media="(max-width: 700px)" > sizes="(max-width: 500px) 50vw, 10vw" srcset="stick-figure-narrow.png 138w, > stick-figure-hd-narrow.png 138w"; source media="(max-width: 1400px)" > sizes="(max-width: 1000px) 100vw, 50vw" srcset="stick-figure.png 416w, > stick-figure-hd.png 416w" > > > > > > ## Example 5: Image with Title > > > > This variation has the advantage that the additional source info is not > visible (in ordinary contexts, although it's still part of the HTML > content): > > > > ![Human][human] > > > > [human]: stick-original.png '\picture-data\ source > media="(max-width: 700px)" sizes="(max-width: 500px) 50vw, 10vw" > srcset="stick-figure-narrow.png 138w, stick-figure-hd-narrow.png 138w"; > source media="(max-width: 1400px)" sizes="(max-width: 1000px) 100vw, 50vw" > srcset="stick-figure.png 416w, stick-figure-hd.png 416w"' > > > > The reference form can be used (i.e. image info moved further down the > page), as shown above. Either way, however, a distinct disadvantage of the > img approach is that quotes may need to be escaped, since the value of the > title attribute must be quoted and the value itself (at least as I've been > showing it) contains quotes. > > > > --- > > > > In each example above, I assumed that your post-processing script will > look for `\picture-data\` and rewrite the related HTML using the string of > data that follows. > > > > In the case of a footnote, the script would need to find the related > link and insert the picture element there. If HTML5 does not define > `<picture>` as a block element and you wish it this one to be so, I suppose > you'd need to add 'block' or something to your picture-data so that it can > influence the post-processing. CSS classes and IDs can be added as well in > this fashion. > > > > Example 5, the image-with-title, is possibly the best of these > suggestions — unless your preferred Markdown implementation chokes on > nested quotes in image titles. (The dingus at Daring Fireball renders the > double-quotes in the example as `"` entities. The parser inside the > 1Writer app does this in all the examples. Okay, so your post-processor > converts these back to quotes.) > > > > Some last thoughts: > > > > - This sort of post-processing approach frees you from having to write > any HTML for your picture, let alone HTML with case-sensitive tags. > > - Other Markdown options that occurred to me later include a table and > nested lists, but I see little advantage (beyond some semantic correctness > if they aren't processed out) and so didn't include them above. > > - PHP Markdown Extra allows class and ID to be set on images. (And on > code blocks. The image-source data, for typical reading purposes, is > programmatic, i.e. it's code, so that would be semantically appropriate > markup.) Classes and IDs can aid what we're trying to do here. > > - I already use post-processing in my PHP to rewrite footnote links (so > that they don't conflict with those of other blog posts on the same page) > and find the lag unnoticeable. > > > > > > Hoping this helps, > > Thomas Humiston > > > > > > > > > On 27 Mar 2019, at 10:22 AM, Sherwood Botsford <sgbotsf...@gmail.com> > wrote: > > > > > > > > > I like markdown. I use it in combination with Template Toolkit, and > basically I don't have to write any html. My webpages are static, having > only the js snippet that Google analytics uses. I would mostly like to > keep it that way. I have zero javascript experience. > > > > > > I can do some degree of simple page layout using a handful of classes > applied to DIVs. > > > > > > So this > > > > > > <DIV class=picr3> > > > > > > ![Shelterbelt-12][2] > > > > > > Planting a shelterbelt, or any tree project... > > > > > > *** > > > > > > </DIV> > > > [2]: /Images/Shelterbelt/Shelterbelt-12.jpg > > > > > > is all the html I need to use to have an image sized to width 30% of > the Content div floated to the right. The system isn't perfect, but it > resizes reasonably well, and since the page is static it caches well, and > is fast to deliver. > > > > > > More important to me: I can spend time writing content, and very > little tweaking layout. > > > > > > The problem: If I serve an nice desktop image to a mobile phone, > download times are high. If I serve an image of reduced resolution to make > phone access quick, it looks like crap on a desktop. > > > > > > > > > > > > In Html we now have the <picture> element, combined with the srcset > and size attributes. This turns what used to be a simple img tag into > this: > > > > > > <picture> > > > <source media="(max-width: 700px)" sizes="(max-width: 500px) 50vw, > 10vw" > > > srcset="stick-figure-narrow.png 138w, stick-figure-hd-narrow.png > 138w"> > > > > > > <source media="(max-width: 1400px)" sizes="(max-width: 1000px) > 100vw, 50vw" > > > srcset="stick-figure.png 416w, stick-figure-hd.png 416w"> > > > > > > <img src="stick-original.png" alt="Human"> > > > </picture> > > > > > > At this point, I'm looking at having to roll my own solution much > along this line: > > > > > > * Replace <DIV> with <div> On my implementation of Markdown, being > between lower case tags means that the content of that tag is not Markdown > processed. > > > > > > * Come up with a standard naming convention, say whateverimage-L.jpg > for the large version, -M.jpg for the medium version and -S. jpg for the > small version. > > > > > > * Pre process the resulting markdown files to generate the full > <picture> element from the embedded markdown. I think this is within my > limited perl programming capabilities. > > > > > > Gotchas? > > > > > > This wheel has been invented already? > > > > > > Better ways to approach this? Should I bite the bullet and do this > with a javascript snippet? > > > > > > Some other solution I've missing in my wandering of 'a maze of twisty > passages, all different' that is the internet? > > > > > > > > > Regards > > > > > > Sherwood > > > > > > _______________________________________________ > > > Markdown-Discuss mailing list > > > Markdown-Discuss@six.pairlist.net > > > https://pairlist6.pair.net/mailman/listinfo/markdown-discuss > > > > _______________________________________________ > > Markdown-Discuss mailing list > > Markdown-Discuss@six.pairlist.net > > https://pairlist6.pair.net/mailman/listinfo/markdown-discuss > > _______________________________________________ > > Markdown-Discuss mailing list > > Markdown-Discuss@six.pairlist.net > > https://pairlist6.pair.net/mailman/listinfo/markdown-discuss > > _______________________________________________ > Markdown-Discuss mailing list > Markdown-Discuss@six.pairlist.net > https://pairlist6.pair.net/mailman/listinfo/markdown-discuss >
_______________________________________________ Markdown-Discuss mailing list Markdown-Discuss@six.pairlist.net https://pairlist6.pair.net/mailman/listinfo/markdown-discuss