Round command argument before usingRounding to nearest integer symbol in LatexRepeating another text multiple times using commandsPass a command as argument for another commandVariable argument commandUsing argument command as argument without bracketsPass blank as argument to a commandNew command without 3 argument bracketsCustom command with predefined argumentUsing an argument as a command in newcommandNumber as Argument for CommandUsing command/macro as an optional argumentLaTeX command returning its argument unalteredly

Why don't humans perceive waves as twice the frequency they are?

How can one convert an expression to a string while keeping the quotation marks of strings that are part of the expression?

How much water can a ship take on before sinking?

The most secure way to handle someone forgetting to verify their account?

How do you give a date interval with diffuse dates?

Why do space operations use "nominal" to mean "working correctly"?

Inscriptio Labyrinthica

Time signature inconsistent

In this iconic lunar orbit rendezvous photo of John Houbolt, why do arrows #5 and #6 point the "wrong" way?

Finding all possible pairs of square numbers in an array

ANOVA or Linear Mixed Model?

Did Hitler say this quote about homeschooling?

Grouping into more groups in one iteration

Applying for jobs with an obvious scar

What did Jeremy Hunt mean by "slipped" to miss a vote?

What is the period of Langton's ant on a torus?

How fast does a character need to move to be effectively invisible?

How to interpret a promising preprint that was never published?

Why are there few or no black super GMs?

How do you send money when you're not sure it's not a scam?

Why does a tetrahedral molecule like methane have a dipole moment of zero?

Zhora asks Deckard: "Are you for real?". Was this meant to be significant?

Software need db owner permission to master database (sql2016)

When designing an adventure, how can I ensure a continuous player experience in a setting that's likely to favor TPKs?



Round command argument before using


Rounding to nearest integer symbol in LatexRepeating another text multiple times using commandsPass a command as argument for another commandVariable argument commandUsing argument command as argument without bracketsPass blank as argument to a commandNew command without 3 argument bracketsCustom command with predefined argumentUsing an argument as a command in newcommandNumber as Argument for CommandUsing command/macro as an optional argumentLaTeX command returning its argument unalteredly






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








4















I am new to LaTeX and found a helpful custom command for repeating text n times here. Below is an example use



documentclassminimal
usepackagepgffor
newcommandmyrepeat[2]foreach n in 1,...,#1#2

begindocument
myrepeat6x % prints xxxxxx
enddocument


My goal is to pass a decimal number as the first argument to the command (as opposed to an integer currently). The for-loop in the command should round the decimal to determine how many iterations to execute. This way I can universally change the rounding mode (i.e. floor, ceiling, closest integer, etc) later just by updating the one command. For instance



myrepeat3.2x % should print xxx
myrepeat3.7x % should print xxxx


How can I achieve this behavior?



Most other threads I have seen only deal with printing rounding/ceiling/floor symbols instead of actually performing the rounding math and allowing you to use the resulting number in further computations.










share|improve this question







New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • Welcome to TeX.SE!

    – Mensch
    8 hours ago

















4















I am new to LaTeX and found a helpful custom command for repeating text n times here. Below is an example use



documentclassminimal
usepackagepgffor
newcommandmyrepeat[2]foreach n in 1,...,#1#2

begindocument
myrepeat6x % prints xxxxxx
enddocument


My goal is to pass a decimal number as the first argument to the command (as opposed to an integer currently). The for-loop in the command should round the decimal to determine how many iterations to execute. This way I can universally change the rounding mode (i.e. floor, ceiling, closest integer, etc) later just by updating the one command. For instance



myrepeat3.2x % should print xxx
myrepeat3.7x % should print xxxx


How can I achieve this behavior?



Most other threads I have seen only deal with printing rounding/ceiling/floor symbols instead of actually performing the rounding math and allowing you to use the resulting number in further computations.










share|improve this question







New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • Welcome to TeX.SE!

    – Mensch
    8 hours ago













4












4








4








I am new to LaTeX and found a helpful custom command for repeating text n times here. Below is an example use



documentclassminimal
usepackagepgffor
newcommandmyrepeat[2]foreach n in 1,...,#1#2

begindocument
myrepeat6x % prints xxxxxx
enddocument


My goal is to pass a decimal number as the first argument to the command (as opposed to an integer currently). The for-loop in the command should round the decimal to determine how many iterations to execute. This way I can universally change the rounding mode (i.e. floor, ceiling, closest integer, etc) later just by updating the one command. For instance



myrepeat3.2x % should print xxx
myrepeat3.7x % should print xxxx


How can I achieve this behavior?



Most other threads I have seen only deal with printing rounding/ceiling/floor symbols instead of actually performing the rounding math and allowing you to use the resulting number in further computations.










share|improve this question







New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I am new to LaTeX and found a helpful custom command for repeating text n times here. Below is an example use



documentclassminimal
usepackagepgffor
newcommandmyrepeat[2]foreach n in 1,...,#1#2

begindocument
myrepeat6x % prints xxxxxx
enddocument


My goal is to pass a decimal number as the first argument to the command (as opposed to an integer currently). The for-loop in the command should round the decimal to determine how many iterations to execute. This way I can universally change the rounding mode (i.e. floor, ceiling, closest integer, etc) later just by updating the one command. For instance



myrepeat3.2x % should print xxx
myrepeat3.7x % should print xxxx


How can I achieve this behavior?



Most other threads I have seen only deal with printing rounding/ceiling/floor symbols instead of actually performing the rounding math and allowing you to use the resulting number in further computations.







macros






share|improve this question







New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










share|improve this question







New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








share|improve this question




share|improve this question






New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








asked 8 hours ago









Addison KlinkeAddison Klinke

211 bronze badge




211 bronze badge




New contributor



Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




New contributor




Addison Klinke is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.














  • Welcome to TeX.SE!

    – Mensch
    8 hours ago

















  • Welcome to TeX.SE!

    – Mensch
    8 hours ago
















Welcome to TeX.SE!

– Mensch
8 hours ago





Welcome to TeX.SE!

– Mensch
8 hours ago










3 Answers
3






active

oldest

votes


















3














One approach would be this. ceil and floor are alternatives to round. There are also command versions of each, as Alan Munn mentions in a comment, i.e. pgfmathround#1, pgfmathceil#1, pgfmathfloor#1.



documentclassarticle
usepackagepgffor
newcommandmyrepeat[2]%
pgfmathparseround(#1)% set rounding function here
foreach n in 1,...,pgfmathresult#2

begindocument
myrepeat3.2x % should print xxx

myrepeat3.7x % should print xxxx
enddocument





share|improve this answer

























  • Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

    – Alan Munn
    8 hours ago











  • @AlanMunn Indeed, thanks.

    – Torbjørn T.
    8 hours ago


















2














You can use the expandable functionality of xfp:



enter image description here



documentclassarticle

usepackagepgffor,xfp

newcommandmyrepeat[2]foreach n in 1,...,fpevalfloor(#1)#2

begindocument

myrepeat6x % prints xxxxxx

myrepeat3.2x % prints xxx

myrepeat8.1 * sin(pi / 6)x% prints xxxx sin(pi/6) = 1/2; 8.1 * 1/2 = 4.05

enddocument


You can use ceiling(#1), or round(#1,0), or whatever calculation you want.






share|improve this answer


















  • 1





    The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

    – egreg
    6 hours ago


















2














Here's a fairly general macro where you can set the mode as an optional argument: choose between round (default), floor, ceil or nearest.



The generalrepeat macro accepts the starting point (an integer), the step (an integer, default 1) and the end point (a floating point number).



The myrepeat macro is a reduced version, always starting from 1 with step 1.



In the final argument (code to repeat), the current value in the loop is denoted by #1.



documentclassarticle
usepackagexfp

ExplSyntaxOn
NewDocumentCommandgeneralrepeat

Oround % the mode
m % the starting point
O1 % the step
m % the final point
+m % the code to repeat (can contain par)


klinke_repeat_general:nnnnn #1 #2 #3 #4 #5


NewDocumentCommandmyrepeat

Oround % the mode
m % the final point
+m % the code to repeat (can contain par)


klinke_repeat_general:nnnnn #1 1 1 #2 #3


cs_new_protected:Nn klinke_repeat_general:nnnnn

cs_set_eq:Nc __klinke_repeat_mode:n __klinke_repeat_#1:n
cs_set_protected:Nn __klinke_repeat_code:n #5
int_step_function:nnnN
#2 % start
#3 % step
__klinke_repeat_mode:n #4 % end
__klinke_repeat_code:n % action


cs_new:Nn __klinke_repeat_round:n fp_eval:n round(#1,0,1)
cs_new:Nn __klinke_repeat_floor:n fp_eval:n floor(#1,0)
cs_new:Nn __klinke_repeat_ceil:n fp_eval:n ceil(#1,0)
cs_new:Nn __klinke_repeat_nearest:n

fp_eval:n #1 - floor(#1,0) < 0.5 ? floor(#1,0) : ceil(#1,0)

ExplSyntaxOff

begindocument

generalrepeat13.4#1 ---
generalrepeat13.5#1 ---
generalrepeat13.6#1

generalrepeat[ceil]13.4#1 ---
generalrepeat[ceil]13.5#1 ---
generalrepeat[ceil]13.6#1

generalrepeat[floor]13.4#1 ---
generalrepeat[floor]13.5#1 ---
generalrepeat[floor]13.6#1

generalrepeat[nearest]13.4#1 ---
generalrepeat[nearest]13.5#1 ---
generalrepeat[nearest]13.6#1

myrepeat3.4x---myrepeat[floor]3.4x---%
myrepeat[ceil]3.4x---myrepeat[nearest]3.4x

myrepeat3.5x---myrepeat[floor]3.5x---%
myrepeat[ceil]3.5x---myrepeat[nearest]3.5x

myrepeat3.6x---myrepeat[floor]3.6x---%
myrepeat[ceil]3.6x---myrepeat[nearest]3.6x

enddocument


enter image description here



Both round and nearest integer are implemented to go upward in case of a tie (the 3.5 case).






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
    );



    );






    Addison Klinke is a new contributor. Be nice, and check out our Code of Conduct.









    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f500551%2fround-command-argument-before-using%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    3 Answers
    3






    active

    oldest

    votes








    3 Answers
    3






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    One approach would be this. ceil and floor are alternatives to round. There are also command versions of each, as Alan Munn mentions in a comment, i.e. pgfmathround#1, pgfmathceil#1, pgfmathfloor#1.



    documentclassarticle
    usepackagepgffor
    newcommandmyrepeat[2]%
    pgfmathparseround(#1)% set rounding function here
    foreach n in 1,...,pgfmathresult#2

    begindocument
    myrepeat3.2x % should print xxx

    myrepeat3.7x % should print xxxx
    enddocument





    share|improve this answer

























    • Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

      – Alan Munn
      8 hours ago











    • @AlanMunn Indeed, thanks.

      – Torbjørn T.
      8 hours ago















    3














    One approach would be this. ceil and floor are alternatives to round. There are also command versions of each, as Alan Munn mentions in a comment, i.e. pgfmathround#1, pgfmathceil#1, pgfmathfloor#1.



    documentclassarticle
    usepackagepgffor
    newcommandmyrepeat[2]%
    pgfmathparseround(#1)% set rounding function here
    foreach n in 1,...,pgfmathresult#2

    begindocument
    myrepeat3.2x % should print xxx

    myrepeat3.7x % should print xxxx
    enddocument





    share|improve this answer

























    • Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

      – Alan Munn
      8 hours ago











    • @AlanMunn Indeed, thanks.

      – Torbjørn T.
      8 hours ago













    3












    3








    3







    One approach would be this. ceil and floor are alternatives to round. There are also command versions of each, as Alan Munn mentions in a comment, i.e. pgfmathround#1, pgfmathceil#1, pgfmathfloor#1.



    documentclassarticle
    usepackagepgffor
    newcommandmyrepeat[2]%
    pgfmathparseround(#1)% set rounding function here
    foreach n in 1,...,pgfmathresult#2

    begindocument
    myrepeat3.2x % should print xxx

    myrepeat3.7x % should print xxxx
    enddocument





    share|improve this answer















    One approach would be this. ceil and floor are alternatives to round. There are also command versions of each, as Alan Munn mentions in a comment, i.e. pgfmathround#1, pgfmathceil#1, pgfmathfloor#1.



    documentclassarticle
    usepackagepgffor
    newcommandmyrepeat[2]%
    pgfmathparseround(#1)% set rounding function here
    foreach n in 1,...,pgfmathresult#2

    begindocument
    myrepeat3.2x % should print xxx

    myrepeat3.7x % should print xxxx
    enddocument






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 8 hours ago

























    answered 8 hours ago









    Torbjørn T.Torbjørn T.

    162k13 gold badges266 silver badges453 bronze badges




    162k13 gold badges266 silver badges453 bronze badges












    • Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

      – Alan Munn
      8 hours ago











    • @AlanMunn Indeed, thanks.

      – Torbjørn T.
      8 hours ago

















    • Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

      – Alan Munn
      8 hours ago











    • @AlanMunn Indeed, thanks.

      – Torbjørn T.
      8 hours ago
















    Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

    – Alan Munn
    8 hours ago





    Slightly shorter: pgfmathround#1 ... 1,...,pgfmathresult

    – Alan Munn
    8 hours ago













    @AlanMunn Indeed, thanks.

    – Torbjørn T.
    8 hours ago





    @AlanMunn Indeed, thanks.

    – Torbjørn T.
    8 hours ago













    2














    You can use the expandable functionality of xfp:



    enter image description here



    documentclassarticle

    usepackagepgffor,xfp

    newcommandmyrepeat[2]foreach n in 1,...,fpevalfloor(#1)#2

    begindocument

    myrepeat6x % prints xxxxxx

    myrepeat3.2x % prints xxx

    myrepeat8.1 * sin(pi / 6)x% prints xxxx sin(pi/6) = 1/2; 8.1 * 1/2 = 4.05

    enddocument


    You can use ceiling(#1), or round(#1,0), or whatever calculation you want.






    share|improve this answer


















    • 1





      The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

      – egreg
      6 hours ago















    2














    You can use the expandable functionality of xfp:



    enter image description here



    documentclassarticle

    usepackagepgffor,xfp

    newcommandmyrepeat[2]foreach n in 1,...,fpevalfloor(#1)#2

    begindocument

    myrepeat6x % prints xxxxxx

    myrepeat3.2x % prints xxx

    myrepeat8.1 * sin(pi / 6)x% prints xxxx sin(pi/6) = 1/2; 8.1 * 1/2 = 4.05

    enddocument


    You can use ceiling(#1), or round(#1,0), or whatever calculation you want.






    share|improve this answer


















    • 1





      The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

      – egreg
      6 hours ago













    2












    2








    2







    You can use the expandable functionality of xfp:



    enter image description here



    documentclassarticle

    usepackagepgffor,xfp

    newcommandmyrepeat[2]foreach n in 1,...,fpevalfloor(#1)#2

    begindocument

    myrepeat6x % prints xxxxxx

    myrepeat3.2x % prints xxx

    myrepeat8.1 * sin(pi / 6)x% prints xxxx sin(pi/6) = 1/2; 8.1 * 1/2 = 4.05

    enddocument


    You can use ceiling(#1), or round(#1,0), or whatever calculation you want.






    share|improve this answer













    You can use the expandable functionality of xfp:



    enter image description here



    documentclassarticle

    usepackagepgffor,xfp

    newcommandmyrepeat[2]foreach n in 1,...,fpevalfloor(#1)#2

    begindocument

    myrepeat6x % prints xxxxxx

    myrepeat3.2x % prints xxx

    myrepeat8.1 * sin(pi / 6)x% prints xxxx sin(pi/6) = 1/2; 8.1 * 1/2 = 4.05

    enddocument


    You can use ceiling(#1), or round(#1,0), or whatever calculation you want.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 8 hours ago









    WernerWerner

    457k76 gold badges1021 silver badges1756 bronze badges




    457k76 gold badges1021 silver badges1756 bronze badges







    • 1





      The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

      – egreg
      6 hours ago












    • 1





      The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

      – egreg
      6 hours ago







    1




    1





    The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

    – egreg
    6 hours ago





    The function round uses “ties to even”, so both round(3.5,0) and round(4.5,0) will yield 4. You get “ties to infinity” with round(3.5,0,1) or round(4.5,0,1) that would yield 4 and 5 respectively.

    – egreg
    6 hours ago











    2














    Here's a fairly general macro where you can set the mode as an optional argument: choose between round (default), floor, ceil or nearest.



    The generalrepeat macro accepts the starting point (an integer), the step (an integer, default 1) and the end point (a floating point number).



    The myrepeat macro is a reduced version, always starting from 1 with step 1.



    In the final argument (code to repeat), the current value in the loop is denoted by #1.



    documentclassarticle
    usepackagexfp

    ExplSyntaxOn
    NewDocumentCommandgeneralrepeat

    Oround % the mode
    m % the starting point
    O1 % the step
    m % the final point
    +m % the code to repeat (can contain par)


    klinke_repeat_general:nnnnn #1 #2 #3 #4 #5


    NewDocumentCommandmyrepeat

    Oround % the mode
    m % the final point
    +m % the code to repeat (can contain par)


    klinke_repeat_general:nnnnn #1 1 1 #2 #3


    cs_new_protected:Nn klinke_repeat_general:nnnnn

    cs_set_eq:Nc __klinke_repeat_mode:n __klinke_repeat_#1:n
    cs_set_protected:Nn __klinke_repeat_code:n #5
    int_step_function:nnnN
    #2 % start
    #3 % step
    __klinke_repeat_mode:n #4 % end
    __klinke_repeat_code:n % action


    cs_new:Nn __klinke_repeat_round:n fp_eval:n round(#1,0,1)
    cs_new:Nn __klinke_repeat_floor:n fp_eval:n floor(#1,0)
    cs_new:Nn __klinke_repeat_ceil:n fp_eval:n ceil(#1,0)
    cs_new:Nn __klinke_repeat_nearest:n

    fp_eval:n #1 - floor(#1,0) < 0.5 ? floor(#1,0) : ceil(#1,0)

    ExplSyntaxOff

    begindocument

    generalrepeat13.4#1 ---
    generalrepeat13.5#1 ---
    generalrepeat13.6#1

    generalrepeat[ceil]13.4#1 ---
    generalrepeat[ceil]13.5#1 ---
    generalrepeat[ceil]13.6#1

    generalrepeat[floor]13.4#1 ---
    generalrepeat[floor]13.5#1 ---
    generalrepeat[floor]13.6#1

    generalrepeat[nearest]13.4#1 ---
    generalrepeat[nearest]13.5#1 ---
    generalrepeat[nearest]13.6#1

    myrepeat3.4x---myrepeat[floor]3.4x---%
    myrepeat[ceil]3.4x---myrepeat[nearest]3.4x

    myrepeat3.5x---myrepeat[floor]3.5x---%
    myrepeat[ceil]3.5x---myrepeat[nearest]3.5x

    myrepeat3.6x---myrepeat[floor]3.6x---%
    myrepeat[ceil]3.6x---myrepeat[nearest]3.6x

    enddocument


    enter image description here



    Both round and nearest integer are implemented to go upward in case of a tie (the 3.5 case).






    share|improve this answer



























      2














      Here's a fairly general macro where you can set the mode as an optional argument: choose between round (default), floor, ceil or nearest.



      The generalrepeat macro accepts the starting point (an integer), the step (an integer, default 1) and the end point (a floating point number).



      The myrepeat macro is a reduced version, always starting from 1 with step 1.



      In the final argument (code to repeat), the current value in the loop is denoted by #1.



      documentclassarticle
      usepackagexfp

      ExplSyntaxOn
      NewDocumentCommandgeneralrepeat

      Oround % the mode
      m % the starting point
      O1 % the step
      m % the final point
      +m % the code to repeat (can contain par)


      klinke_repeat_general:nnnnn #1 #2 #3 #4 #5


      NewDocumentCommandmyrepeat

      Oround % the mode
      m % the final point
      +m % the code to repeat (can contain par)


      klinke_repeat_general:nnnnn #1 1 1 #2 #3


      cs_new_protected:Nn klinke_repeat_general:nnnnn

      cs_set_eq:Nc __klinke_repeat_mode:n __klinke_repeat_#1:n
      cs_set_protected:Nn __klinke_repeat_code:n #5
      int_step_function:nnnN
      #2 % start
      #3 % step
      __klinke_repeat_mode:n #4 % end
      __klinke_repeat_code:n % action


      cs_new:Nn __klinke_repeat_round:n fp_eval:n round(#1,0,1)
      cs_new:Nn __klinke_repeat_floor:n fp_eval:n floor(#1,0)
      cs_new:Nn __klinke_repeat_ceil:n fp_eval:n ceil(#1,0)
      cs_new:Nn __klinke_repeat_nearest:n

      fp_eval:n #1 - floor(#1,0) < 0.5 ? floor(#1,0) : ceil(#1,0)

      ExplSyntaxOff

      begindocument

      generalrepeat13.4#1 ---
      generalrepeat13.5#1 ---
      generalrepeat13.6#1

      generalrepeat[ceil]13.4#1 ---
      generalrepeat[ceil]13.5#1 ---
      generalrepeat[ceil]13.6#1

      generalrepeat[floor]13.4#1 ---
      generalrepeat[floor]13.5#1 ---
      generalrepeat[floor]13.6#1

      generalrepeat[nearest]13.4#1 ---
      generalrepeat[nearest]13.5#1 ---
      generalrepeat[nearest]13.6#1

      myrepeat3.4x---myrepeat[floor]3.4x---%
      myrepeat[ceil]3.4x---myrepeat[nearest]3.4x

      myrepeat3.5x---myrepeat[floor]3.5x---%
      myrepeat[ceil]3.5x---myrepeat[nearest]3.5x

      myrepeat3.6x---myrepeat[floor]3.6x---%
      myrepeat[ceil]3.6x---myrepeat[nearest]3.6x

      enddocument


      enter image description here



      Both round and nearest integer are implemented to go upward in case of a tie (the 3.5 case).






      share|improve this answer

























        2












        2








        2







        Here's a fairly general macro where you can set the mode as an optional argument: choose between round (default), floor, ceil or nearest.



        The generalrepeat macro accepts the starting point (an integer), the step (an integer, default 1) and the end point (a floating point number).



        The myrepeat macro is a reduced version, always starting from 1 with step 1.



        In the final argument (code to repeat), the current value in the loop is denoted by #1.



        documentclassarticle
        usepackagexfp

        ExplSyntaxOn
        NewDocumentCommandgeneralrepeat

        Oround % the mode
        m % the starting point
        O1 % the step
        m % the final point
        +m % the code to repeat (can contain par)


        klinke_repeat_general:nnnnn #1 #2 #3 #4 #5


        NewDocumentCommandmyrepeat

        Oround % the mode
        m % the final point
        +m % the code to repeat (can contain par)


        klinke_repeat_general:nnnnn #1 1 1 #2 #3


        cs_new_protected:Nn klinke_repeat_general:nnnnn

        cs_set_eq:Nc __klinke_repeat_mode:n __klinke_repeat_#1:n
        cs_set_protected:Nn __klinke_repeat_code:n #5
        int_step_function:nnnN
        #2 % start
        #3 % step
        __klinke_repeat_mode:n #4 % end
        __klinke_repeat_code:n % action


        cs_new:Nn __klinke_repeat_round:n fp_eval:n round(#1,0,1)
        cs_new:Nn __klinke_repeat_floor:n fp_eval:n floor(#1,0)
        cs_new:Nn __klinke_repeat_ceil:n fp_eval:n ceil(#1,0)
        cs_new:Nn __klinke_repeat_nearest:n

        fp_eval:n #1 - floor(#1,0) < 0.5 ? floor(#1,0) : ceil(#1,0)

        ExplSyntaxOff

        begindocument

        generalrepeat13.4#1 ---
        generalrepeat13.5#1 ---
        generalrepeat13.6#1

        generalrepeat[ceil]13.4#1 ---
        generalrepeat[ceil]13.5#1 ---
        generalrepeat[ceil]13.6#1

        generalrepeat[floor]13.4#1 ---
        generalrepeat[floor]13.5#1 ---
        generalrepeat[floor]13.6#1

        generalrepeat[nearest]13.4#1 ---
        generalrepeat[nearest]13.5#1 ---
        generalrepeat[nearest]13.6#1

        myrepeat3.4x---myrepeat[floor]3.4x---%
        myrepeat[ceil]3.4x---myrepeat[nearest]3.4x

        myrepeat3.5x---myrepeat[floor]3.5x---%
        myrepeat[ceil]3.5x---myrepeat[nearest]3.5x

        myrepeat3.6x---myrepeat[floor]3.6x---%
        myrepeat[ceil]3.6x---myrepeat[nearest]3.6x

        enddocument


        enter image description here



        Both round and nearest integer are implemented to go upward in case of a tie (the 3.5 case).






        share|improve this answer













        Here's a fairly general macro where you can set the mode as an optional argument: choose between round (default), floor, ceil or nearest.



        The generalrepeat macro accepts the starting point (an integer), the step (an integer, default 1) and the end point (a floating point number).



        The myrepeat macro is a reduced version, always starting from 1 with step 1.



        In the final argument (code to repeat), the current value in the loop is denoted by #1.



        documentclassarticle
        usepackagexfp

        ExplSyntaxOn
        NewDocumentCommandgeneralrepeat

        Oround % the mode
        m % the starting point
        O1 % the step
        m % the final point
        +m % the code to repeat (can contain par)


        klinke_repeat_general:nnnnn #1 #2 #3 #4 #5


        NewDocumentCommandmyrepeat

        Oround % the mode
        m % the final point
        +m % the code to repeat (can contain par)


        klinke_repeat_general:nnnnn #1 1 1 #2 #3


        cs_new_protected:Nn klinke_repeat_general:nnnnn

        cs_set_eq:Nc __klinke_repeat_mode:n __klinke_repeat_#1:n
        cs_set_protected:Nn __klinke_repeat_code:n #5
        int_step_function:nnnN
        #2 % start
        #3 % step
        __klinke_repeat_mode:n #4 % end
        __klinke_repeat_code:n % action


        cs_new:Nn __klinke_repeat_round:n fp_eval:n round(#1,0,1)
        cs_new:Nn __klinke_repeat_floor:n fp_eval:n floor(#1,0)
        cs_new:Nn __klinke_repeat_ceil:n fp_eval:n ceil(#1,0)
        cs_new:Nn __klinke_repeat_nearest:n

        fp_eval:n #1 - floor(#1,0) < 0.5 ? floor(#1,0) : ceil(#1,0)

        ExplSyntaxOff

        begindocument

        generalrepeat13.4#1 ---
        generalrepeat13.5#1 ---
        generalrepeat13.6#1

        generalrepeat[ceil]13.4#1 ---
        generalrepeat[ceil]13.5#1 ---
        generalrepeat[ceil]13.6#1

        generalrepeat[floor]13.4#1 ---
        generalrepeat[floor]13.5#1 ---
        generalrepeat[floor]13.6#1

        generalrepeat[nearest]13.4#1 ---
        generalrepeat[nearest]13.5#1 ---
        generalrepeat[nearest]13.6#1

        myrepeat3.4x---myrepeat[floor]3.4x---%
        myrepeat[ceil]3.4x---myrepeat[nearest]3.4x

        myrepeat3.5x---myrepeat[floor]3.5x---%
        myrepeat[ceil]3.5x---myrepeat[nearest]3.5x

        myrepeat3.6x---myrepeat[floor]3.6x---%
        myrepeat[ceil]3.6x---myrepeat[nearest]3.6x

        enddocument


        enter image description here



        Both round and nearest integer are implemented to go upward in case of a tie (the 3.5 case).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 6 hours ago









        egregegreg

        756k90 gold badges1978 silver badges3324 bronze badges




        756k90 gold badges1978 silver badges3324 bronze badges




















            Addison Klinke is a new contributor. Be nice, and check out our Code of Conduct.









            draft saved

            draft discarded


















            Addison Klinke is a new contributor. Be nice, and check out our Code of Conduct.












            Addison Klinke is a new contributor. Be nice, and check out our Code of Conduct.











            Addison Klinke is a new contributor. Be nice, and check out our Code of Conduct.














            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%2f500551%2fround-command-argument-before-using%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

            19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

            Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

            Черчино Становништво Референце Спољашње везе Мени за навигацију46°09′29″ СГШ; 9°30′29″ ИГД / 46.15809° СГШ; 9.50814° ИГД / 46.15809; 9.5081446°09′29″ СГШ; 9°30′29″ ИГД / 46.15809° СГШ; 9.50814° ИГД / 46.15809; 9.508143179111„The GeoNames geographical database”„Istituto Nazionale di Statistica”Званични веб-сајтпроширитиуу