Template talk:Para

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

Please use code rather than tt[edit]

Please change the template to use <code> rather than <tt>. The <code> element is more appropriate, since the text represents computer code (namely, Wiki markup). Thanks. Eubulides (talk) 15:26, 12 September 2009 (UTC)[reply]

 Done Hersfold (t/a/c) 21:47, 12 September 2009 (UTC)[reply]

Suggested changes, February 2013[edit]

  1. replace the characters | and = with their equivalent HTML entities; this may prevent unexpected behaviors if this template is used inside another template or in a table.
  2. remove extra | at the closing of the #if (there's no else)
  3. rearrange parameters so that nowrap covers everything
<code><span style="white-space:nowrap;">&#124;{{{1|}}}{{#if:{{{1|}}}|&#61;}}{{{2|}}}</span></code>

Tested and working on another wiki I maintain. Thanks —capmo (talk) 22:51, 17 February 2013 (UTC)[reply]

3 seems like a valid change, but can you demonstrate that 1 and 2 are causing problems? --Redrose64 (talk) 23:14, 17 February 2013 (UTC)[reply]
I can't demonstrate that 1 is causing problems, but the HTML equivalents are surely harmless; this would be just a preventive measure, but you can use this code instead if you prefer:
<code><span style="white-space:nowrap;"><nowiki>|</nowiki>{{{1|}}}{{#if:{{{1|}}}|<nowiki>=</nowiki>}}{{{2|}}}</span></code>
Suggestion 2 is just better programming practice: currently, if {{{1}}} is not given, the #if has to check its "else" clause and return it (in fact, an empty string); without this | it would return nothing, which is possibly more efficient. But if you check the changes above, the #if syntax was simplified even more by removing the first parameter from inside it. —capmo (talk) 01:48, 18 February 2013 (UTC)[reply]
Per WP:TESTCASES I've put proposals 2 & 3 into Template:Para/sandbox (with modification: when a <span>...</span> element has the same scope as another HTML element, the attributes may be moved from the SPAN to the other); and I've set up Template:Para/testcases. These do not demonstrate problems inside either tables or templates, therefore there is no problem with not implementing proposal 1. --Redrose64 (talk) 10:57, 18 February 2013 (UTC)[reply]
Fine by me! —capmo (talk) 11:43, 18 February 2013 (UTC)[reply]
Done --Redrose64 (talk) 14:13, 18 February 2013 (UTC)[reply]

Styling[edit]

The 22 July 2014 <code>...</code> css change adds unnecessary boxes. I propose to replace <code>...</code> with <kbd>...</kbd> which is more semantically correct and displays the text in the same monospaced font.

Trappist the monk (talk) 15:56, 10 August 2014 (UTC)[reply]

Support. The old way was perfectly good. This new style is visually cluttered. – Jonesey95 (talk) 03:28, 11 August 2014 (UTC)[reply]
Or use <code style="color:inherit; border:inherit; padding:inherit;"> as recommended at VPT, to preserve the semantic meaning. – Jonesey95 (talk) 22:35, 11 August 2014 (UTC)[reply]
No, <kbd>...</kbd> is not correct, except for the value of the parameter, not its name or the = character (i.e., in a case of |foo=bar, the bar part should be in <kbd>...</kbd>, but the foo and = part in <code>...</code>. So, fix that, then do as Jonesey95 suggests with regard to use of <code>...</code> here. In general, no change to what MediaWiki is doing, or the en.wiki site-wide style sheets for that matters, should ever lead to us proposing to replace the underlying tag to work around a style problem; just fix the style. And perhaps keep closer watch on and inject more input into discussions that are resulting in questionable site-wide or MW-wide style changes (and there sure have been a lot of them this year).  — SMcCandlish ¢ ≽ʌⱷ҅ʌ≼  08:41, 13 August 2014 (UTC)[reply]
I disagree. W3C says: The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands). To use this template, editors must 'input' the entire template from the opening bracket to the closing bracket into the edit window.
Trappist the monk (talk) 11:28, 13 August 2014 (UTC)[reply]
@Trappist the monk: (Sorry for the late response.) That's an implausible reductio ad absurdum interpretation, because the same could be said of all source code, which would render the <code> element redundant, yet it's been kept, and so has <kbd> (and <samp> and <var>, but not <tt>, which really was redundant with <samp>). The <code> element is expressly for code as distinguished from user input (i.e. values supplied). In actual practice no one hardly anyone bothers marking up values in source with <kbd>, because it's too tedious (and some think it never belongs in there, interpreting <kbd> as solely representing interactivity). When found in the wild and used with the related tags, and not being abused for non-semantic purposes or the wrong one, it's almost exclusively used for user, not coder, input to an application/device/process, e.g. typed responses to prompts, data entry into fields, or spoken commands like Siri: redial last number. The <samp> element represents output. Proper usage of all four of the (current) relevant markup elements would be "The command <code>fink install <var>port-name</var></code> may prompt you to select a specific variant. At the <samp>Please select which package to install</samp> prompt, enter your choice as a numeral, e.g. <kbd>3</kbd> for the third option in the list. (Renders as: The command fink install port-name may prompt you to select a specific variant. At the Please select which package to install prompt, enter your choice as a numeral, e.g. 3 for the third option in the list.) An utter purist would also wrap that particular <var> in a <kbd> since it represents a momentary user choice, not pre-determined code, but in practice you'd be hard pressed to find anyone anywhere being that anal about the semantics. Another nitpicker might change part of that example to </code><var>port-name</var>, but that's the finest hairsplitting, and debatable semantics.

Since the <tt> element is no longer supported as of HTML5, we need figure out what the MW devs' migration plan is, if they have one. We're either going to have to stop using it, or they're going to have to translate it on-the-fly into something else. If the former, we could: A) Use <samp> to encompass former use of <tt> (which was meant to reflect "teletype", or machine-mediated human communication; that a subclass of machine output, represented by <samp>). Or, B) Use a template to wrap content in <span style="font-family: monospace;">...</span>, with no particular semantic value. The latter is probably better, since editors have been broadly abusing the <tt> element as a quick-and-dirty way to get monospace, just as they misuse ''...'', for emphasis not purely typographic italicization, when they should be using <em> (or {{em}}) for emphasis. But editors are loath to give up what they're familiar with, so the least "brittle" way to do this would be for MW to translate <tt> on the fly, while we deprecate its use so that people move away from it and no new editors pick up the habit.  — SMcCandlish ¢ ≽ʌⱷ҅ʌ≼  19:26, 20 July 2015 (UTC)[reply]

One problem with using <kbd>...</kbd> is that the style for that element may be changed at some point as has just been done with <code>...</code>, and then we're back here again. If we stick with <code>...</code> and just style it ourselves, we avoid that potential problem. – Jonesey95 (talk) 13:18, 13 August 2014 (UTC)[reply]
True, but let us not worry about what might be. Doing so can paralyze us into inaction. Perhaps we should choose to ignore the whole semantics issue and simply change <code>...</code> to <span style="font-family: monospace,Courier;">...</span>.
Trappist the monk (talk) 13:40, 13 August 2014 (UTC)[reply]
It sounds like there would be consensus for that. – Jonesey95 (talk) 14:02, 13 August 2014 (UTC)[reply]
Definitely not. Source code should be marked up as code, always.  — SMcCandlish ¢ ≽ʌⱷ҅ʌ≼  19:22, 13 August 2014 (UTC)[reply]
@SMcCandlish: Not Jonesey95's suggestion - mine. See Wikipedia:Village pump (technical)/Archive 129#Displaying 'code' font text and search for "inherit". --Redrose64 (talk) 15:24, 13 August 2014 (UTC)[reply]

Site-wide solution[edit]

 – Consolidating fragmented discussions.

While the display problem noted at Help talk:Citation Style 1/Archive 5#Restore error message style is an unintended consequence of the CSS changes to the <code>...</code> element (they don't seem to have considered that some inline uses don't work well with boxes), the effect the changes have on {{para}} and {{tag}} are not, but are precisely the intended effect of that change. I personally still disagree with the addition of the boxes to this element, but that's a discussion to raise with the MediaWiki developers in the long term, to fix common/shared.css, and in the short term to bring up at MediaWiki:Common.css to fix at en.wikipedia site-wide, if a consensus develops on this site to buck this change. We should not be monkeying with it, in ways that break semantic HTML, on a template-by-template basis. Doing so would also produce inconsistent results. Quite a few templates are used in marking up source code, and they all use (or should use) the <code>...</code> element appropriately (I'm unaware of any that don't). Failing to account for even one of them when making tweaks like any of those suggested above will result in boogered template documentation pages that use such templates to lay out source. Might also affect actual articles that illustrate source code.  — SMcCandlish ¢ ≽ʌⱷ҅ʌ≼  19:22, 13 August 2014 (UTC)[reply]

I've been using <code style="background:transparent;border:none;"> to render <code> without a border or changing the background – should this be <code style="background:inherit;border:inherit;"> (or something like it) instead..? Sardanaphalus (talk) 11:05, 11 October 2014 (UTC)[reply]
@Sardanaphalus: See #Styling above; the use of inherit (but three of them, not two) was first suggested by me at Wikipedia:Village pump (technical)/Archive 129#Displaying 'code' font text where I proposed <code style="color:inherit; border:inherit; padding:inherit;">Example</code>Example← and this has been mentioned elsewhere, such as Help talk:Citation Style 1/Archive 5#Restore error message style and Template talk:Tag#Style - which is where this thread originated. --Redrose64 (talk) 19:27, 11 October 2014 (UTC)[reply]
Thanks for these pointers. I'm not sure, though, whether using the "inherit" approach is to be preferred long-term; if it is, I'll switch; see e.g. thread immediately below. Sardanaphalus (talk) 09:28, 12 October 2014 (UTC)[reply]
Why do you see inherit as a problem? --Redrose64 (talk) 12:36, 12 October 2014 (UTC)[reply]
I don't think "inherit" is a problem, unless it breaks in some browser, but inline styles are stripped for mobile. Anomie 21:46, 12 October 2014 (UTC)[reply]
  • I was wondering whether inherit rather than the specific styling (transparent/none) should be preferred – but I imagine it won't matter if the styling ends with e.g. a "{{{style|}}}" to accommodate a situation where neither is desired. Sardanaphalus (talk) 11:54, 14 October 2014 (UTC)[reply]
I noticed the other day that perhaps transparent might be the better choice. Currently, CS1 citations use inherit. See the CS1 error message this user page conversation, the error message doesn't display as I think it should. A quick experiment showed that using transparent might be preferable.
Trappist the monk (talk) 11:47, 18 October 2014 (UTC)[reply]
Sounds reasonable.  — SMcCandlish ¢ ≽ʌⱷ҅ʌ≼  19:26, 20 July 2015 (UTC)[reply]

|plain option[edit]

[1] This (as of this message, the current) version in the sandbox includes a |plain option that adds the styling "background:transparent;border:none;{{{style|}}}" to the <code>...</code> used by the template, i.e. renders it more plainly (see testcases). Should I request that the live version is updated accordingly? Sardanaphalus (talk) 09:28, 12 October 2014 (UTC)[reply]

I use this template a lot and am in favor of a plain version. Perhaps if you win consensus you could also create a typing-aid template, {{parap}} or {{ppara}} or {{plp}} or some such other quick and easy name, that would take the same parameters as {{para}} and add the plain parameter:
{{para|plain|{{{1}}}|{{{2}}}}} – this particular snippet is not tested
Trappist the monk (talk) 14:36, 12 October 2014 (UTC)[reply]
  • {{parapl}} currently redirects to {{paraplain}}, a template that's a plainly-styled {{para}}, but I thought it might be better to provide the plain option as part of {{para}} itself rather than separately – but maybe not..?
Thanks for your feedback, Sardanaphalus (talk) 11:54, 14 October 2014 (UTC)[reply]
There are those who believe that forks like {{paraplain}} are a bad thing and will seek to have them deleted. I don't care either way, but it is why I suggested a typing-aid template instead of a fork.
Trappist the monk (talk) 12:13, 14 October 2014 (UTC)[reply]
  • I also think {{para|plain|...}} plus shortcut preferable, so will now request the sandbox version. Regards, Sardanaphalus (talk) 10:22, 18 October 2014 (UTC)[reply]

Protected edit request on 18 October 2014[edit]

Per the discussion above, please replace the current template with this sandbox version (the current version as of this message). Sardanaphalus (talk) 10:28, 18 October 2014 (UTC)[reply]

Declined; this duplicates existing functionality (paraplain). -- [[User:Edokter]] {{talk}} 13:42, 18 October 2014 (UTC)[reply]
  • The idea is to replace {{paraplain}} or direct it to {{para}} once the requested edit is made, not duplicate its functionality. See discussion above. Sardanaphalus (talk) 22:18, 18 October 2014 (UTC)[reply]
I think you might need to do a TfD or something like it over at {{paraplain}} in order for this update to make sense. – Jonesey95 (talk) 00:58, 19 October 2014 (UTC)[reply]
Not done: @Sardanaphalus: There doesn't seem to be a consensus for this at the moment. Jonesey95's suggestion of a TfD at {{paraplain}} sounds like a good next step. — Mr. Stradivarius ♪ talk ♪ 11:28, 20 October 2014 (UTC)[reply]
  • Done. (Amending {{para}} before removing the current {{paraplain}} seems wiser, though.) Sardanaphalus (talk) 17:52, 20 October 2014 (UTC)[reply]
  • The standalone {{paraplain}} has now been deleted, but, as the sandbox version linked in the original request above was missing a <includeonly>...</includeonly>, I'm restoring the request here:
Per the discussions above, please replace the current template with this sandbox version (the current version as of this message).

Sardanaphalus (talk) 16:56, 1 November 2014 (UTC)[reply]

Needs work... The entire code is duplicated for the sake of the added unnamed parameter. There must be a better way. -- [[User:Edokter]] {{talk}} 21:36, 1 November 2014 (UTC)[reply]
  • Code with variation not unprecedented, especially single lines as here. If you have something more elegant that preserves the convenience of the {{{1}}}=plain/etc option while maintaining readily comprensible code, please place in the sandbox. In the meantime,
Per the discussions above, please replace the current template with this sandbox version (the current version as of this message).
Sardanaphalus (talk) 11:34, 6 November 2014 (UTC)[reply]
This would be better implemented as {{para|name|val|plain=yes}}, rather than {{para|plain|name|val}}. Using the first positional parameter for both formatting and for content is going to be confusing. Also, what happens when you want to display a parameter that is named "plain", "pln", "pl" or "p"? I bet that there are already some transclusions out there that do exactly this that would be broken by the proposed update. — Mr. Stradivarius ♪ talk ♪ 13:00, 6 November 2014 (UTC)[reply]
How about something like this? — Mr. Stradivarius ♪ talk ♪ 13:12, 6 November 2014 (UTC)[reply]
I'd prefer {{#if:|...}} to allow plain=1. Also, is the open style parameter an intended feature? -- [[User:Edokter]] {{talk}} 14:14, 6 November 2014 (UTC)[reply]
Fair enough about #if. About {{{style}}}, I just included it because Sardanaphalus did. Personally, I don't think it's really necessary. — Mr. Stradivarius ♪ talk ♪ 16:15, 6 November 2014 (UTC)[reply]
I'll update to the current sandbox code then. We can discuss a style parameter separately. -- [[User:Edokter]] {{talk}} 20:38, 6 November 2014 (UTC)[reply]
Edokter: Did you intend to drop the trailing '=' when {{para}} has only one parameter? |ps= |ps=none
Trappist the monk (talk) 21:04, 6 November 2014 (UTC)[reply]
Yes I did. But now you mention it... I may have made a mistake in asuming one parame always means the value and not the name. -- [[User:Edokter]] {{talk}} 21:11, 6 November 2014 (UTC)[reply]
  • Where's the consensus for the change just made to the template..? Is "being bold" acceptable with a page as protected as this template..? Sardanaphalus (talk) 00:37, 7 November 2014 (UTC)[reply]
    • Perhaps read the above? Consensus can be established by the absence of any objections. The end result incurs no functional change, except to add the |plain= option as a named parameter. -- [[User:Edokter]] {{talk}} 08:27, 7 November 2014 (UTC)[reply]
      • "Consensus can be established by the absence of any objections."
That's interesting, as it deviates from what I've experienced. To trigger a reversion, therefore, I should state that I object to the change made..? Sardanaphalus (talk) 17:26, 7 November 2014 (UTC)[reply]
More important, the reason you object. -- [[User:Edokter]] {{talk}} 22:13, 7 November 2014 (UTC)[reply]

Strip whitespace etc from parameter values received?[edit]

Should the values handed to this template be stripped of any whitespace etc..?

<code class="nowrap"><includeonly<nowiki>|</nowiki></includeonly>{{#if:{{{1|}}}|{{#if:true|{{{1}}}}}<nowiki>=</nowiki>}}{{#if:true|{{{2|}}}}}</code>

Sardanaphalus (talk) 10:19, 26 October 2014 (UTC)[reply]

Edit protected request: add space[edit]

To improve readability, please change:

<nowiki>=</nowiki>

to:

<nowiki>= </nowiki>

(i.e. add a space after the equals sign). Better still, perhaps the protection level could be lowered, so that template editors can make such changes? Andy Mabbett (Pigsonthewing); Talk to Andy; Andy's edits 12:30, 27 October 2014 (UTC)[reply]

Not done: please establish a consensus for this alteration before using the {{edit protected}} template. This proposal is contrary to that in the previous section. Personally I disagree with the addition of a space, because the absence of the space assists in the association of all four tokens (pipe, name, equals, value) so that when you're explaining something to a newbie by way of a code sample on a talk page, they see that the whole string is to be copied. --Redrose64 (talk) 12:38, 27 October 2014 (UTC)[reply]
Surely the code-highlighting serves that purpose? Andy Mabbett (Pigsonthewing); Talk to Andy; Andy's edits 12:40, 27 October 2014 (UTC)[reply]
That functionality is already available to those who want it:
{{para|something|else}}|something=else
{{para|something |else}}|something =else
{{para|something| else}}|something= else
{{para|something | else}}|something = else
Trappist the monk (talk) 12:42, 27 October 2014 (UTC)[reply]
Thank you; I'm aware of that, and my suggestion stands. There does seem to be a contrary proposal to strip such spaces, above which I'd missed, and to which I'd object Andy Mabbett (Pigsonthewing); Talk to Andy; Andy's edits 20:35, 27 October 2014 (UTC)[reply]

Please offer a named parameter tag that defaults to code[edit]

Please replace the hardcoded code tag from <code> to <{{{tag|code}}}> so the fixed width font can represent a semantic. For me I like to use <code> to mean "toward the computer" and <kbd> to mean "toward the person". Someone else will have a semantic for when they like to use <tt>. I did {{param}} already. — CpiralCpiral 08:09, 14 July 2015 (UTC)[reply]

It seems a like a nice addition to a more general solution, and it looks to be perhaps cleaner coding internally than the setup using |plain=. — CpiralCpiral 08:26, 14 July 2015 (UTC)[reply]

  • Support something like this in theory. but only for {{{2}}} (<kbd> is semantically wrong for the parameter name, pipe, and equals sign) and use #switch to whitelist specific values code (default), kbd, and var. The <tt> element has been killed in HTML5 so we need to wean away from it; <samp> doesn't apply; and other values would be semantically wrong or useless, depending on what someone put in there. If we want to satisfy purists, also have a switch option for kbdvar to use both at once. This doesn't affect or relate to |plain=, which strips the style=... code (the box and grey background).

    What it would look like:

  • |para=code
  • |para=kbd
  • |para=var
  • |para=kbdvar
with |plain=:
  • |para=code
  • |para=kbd
  • |para=var
  • |para=kbdvar

The most common use case for this would be {{para|tag=var|content}}, which is the same character length asn {{para|{{var|content}}}} but visually easier to parse and less error-prone, while obviously shorter than {{para|<var>content</var>}} which is also a mixture of wikimarkup and HTML, which not everyone cares for.

Additional transclusion code conciseness could be achieved (at the cost of source code detail) by using {{{3}}} as an alias of {{{tag}}}: {{para|content|var}} or {{para|content|3=var}} when necessary.  — SMcCandlish ¢ ≽ʌⱷ҅ʌ≼  20:11, 20 July 2015 (UTC)[reply]

Suggested changes, January 2019[edit]

I would like to be able use this template to show key=value pairs for other types of blobs. For example given this URL

https://books.google.com/books?id=fIrcBQAAQBAJ&pg=PA165

Given a hypothetical new |sep= argument:

{{para | sep=& | pg | PA165 }}
produces: &pg=PA165

This would work with any separators like "?" or "," .. or if blank then no separator such as showing a basic key=value pair

The display "sep" would default to "|"

-- GreenC 16:43, 3 January 2019 (UTC)[reply]

This seems like a job for a different template. This template's documentation has a pretty concise, clear scope: This template is for giving examples of template parameter source code.
What is your actual goal? Where would you use this new functionality? It seems to me that what might work better is a template that represents the combination of code and nowiki tags. I'm surprised that I've never come across that template. – Jonesey95 (talk) 21:16, 3 January 2019 (UTC)[reply]
I use it in talk pages when discussing key=value pairs. That's all this template does. Which key=value pair can easily be made universal so it will work with anything. Documentation can be changed. I agree though about a template that will wrap the text in code-nowiki tags would be useful.. type that out way too often. -- GreenC 22:40, 3 January 2019 (UTC)[reply]
I just discovered {{CoNo}}, which does just that. Primefac (talk) 16:38, 4 January 2019 (UTC)[reply]
 Not done: please make your requested changes to the template's sandbox first; see WP:TESTCASES. --Redrose64 🌹 (talk) 14:19, 5 January 2019 (UTC)[reply]

no line-breaks in output[edit]

The current output allows line-breaks, which in most cases makes it hard to read. This is clearly seen on mobile devices when viewing the table in the doc for this template.

In {{val}} people have attempted to avoid this by setting the size of columns in the table, which I think is a work-around, not a solution. The real solution is to make this template output html/css to prevent line breaks. Either by default, or make that an option you can enable with a parameter. SkyLined (talk) 14:12, 3 April 2023 (UTC)[reply]