How to compare a string to read cs properly?Extract number from string and compare problemString comparison...

Why is there an extra space when I type "ls" in the Desktop directory?

Having the player face themselves after the mid-game

Drawing close together horizontal lines in Latex

Recommendation letter by significant other if you worked with them professionally?

Did Amazon pay $0 in taxes last year?

Shifting between bemols (flats) and diesis (sharps)in the key signature

Do I really need to have a scientific explanation for my premise?

Doubts in understanding some concepts of potential energy

When a wind turbine does not produce enough electricity how does the power company compensate for the loss?

Create chunks from an array

I reported the illegal activity of my boss to his boss. My boss found out. Now I am being punished. What should I do?

Is it safe to abruptly remove Arduino power?

Should I take out a loan for a friend to invest on my behalf?

Confusion about Complex Continued Fraction

How exactly does an Ethernet collision happen in the cable, since nodes use different circuits for Tx and Rx?

Does the US political system, in principle, allow for a no-party system?

Which classes are needed to have access to every spell in the PHB?

Outlet with 3 sets of wires

What are some noteworthy "mic-drop" moments in math?

how to modify custom status text color in UI component grid magento 2?

Specifying a starting column with colortbl package and xcolor

Plausibility of Mushroom Buildings

Windows Server Datacenter Edition - Unlimited Virtual Machines

Is divide-by-zero a security vulnerability?



How to compare a string to read cs properly?


Extract number from string and compare problemString comparison in ifthenelseifthenelse equal string comparison failsConvert numbers in string to stringUse item as a string in comparisonString comparisonUnexpanded string replaceLess-than string comparison like ifstrequalString manipulation in xstringTrying to get zap@space and lowercase to work on string comparison













0















The scenario: reading a date in a yyyy-mm-dd form from a file to a cs. This cs later gets compared to a 'current date' macro to write a few args in a specific way to an external file. The current day macro is along the lines of



% defTODAY{}
% defToday{theyear-TwoDigits{themonth}-TwoDigits{theday} }
defTODAY{xdefToday{theyear-TwoDigits{themonth}-TwoDigits{theday}}}


This works for the labeling things, since ref{yyyy-mm-dd} works as intended. Having no extra TODAY and then using def'd Today does so to, it's the comparison that's not working. etoolbox's ifstrequal is not what I used before. Whenever the date would change I used a single xdef and later passed that macro to a ifx, and to get it to work I had to define the date with a appended. edit Read to my amazement inserts a single space after whatever's been read.



Currently I'm supposedly fixing things, but I broke it somehow, and now it doesn't match at all. The first culprit was the my TwoDigits cmd was robust, changing it back to def instead of NewDocumentCommand fixed that. The latter is for user-level commands, so I'll let that slip. But the results of the mwe are not clear to me.



0.txt contains one line with 2001-01-01 and a line new afterwards, as if one line had been written to it and the output had been closed.



The questions:




  1. What the 'right' way to compare things (macro, cs, command?) are that (should) expand to strings?

  2. Why don't edef, xdef work here, I thought it was a full expansion, and indeed before (my version control is nigh absent so I can't give a mwe for this) it worked.

  3. What is the significance of robustness? Is there a simple rule of thumb when it's necessary, obligatory, or irrelevant?

  4. It working with xstring's IfStrEqual only if the is inserted in the definition of datemacro, rather than in the comparison's brackets, i.e., {datemacro }. Why?


  5. ifstrequal supposedly doesn't expand- I used once in a command to test if an arguments is equal to &, this works- is #1 becoming whatever was input not count as an expansion?


example 1;



documentclass{article}
usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
usepackage{etoolbox}
newreadperiods
openinperiods=0.txt
begin{document}setlengthparindent{0pt}fontsize{20}{20}selectfont
deftesti{2001-01-01}
edeftestii{2001-01-01}
deftestiii{2001-01-01 }
edeftestiiii{2001-01-01 }
globalreadperiods to DDD

ifstrequal{testi}{2001-01-01}{T\}{F\}% F
ifstrequal{testii}{2001-01-01}{T\}{F\}% F
ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

ifstrequal{testi}{DDD}{T\}{F\}% F
ifstrequal{testii}{DDD}{T\}{F\}% F
ifstrequal{testiii}{DDD}{T\}{F\}% F
ifstrequal{testiiii}{DDD}{T\}{F\}% F
ifstrequal{DDD}{DDD}{T\}{F\}% T

ifx{testi}{2001-01-01} T\else F\fi% F
ifx{testii}{2001-01-01} T\else F\fi% F
ifx{testiii}{2001-01-01} T\else F\fi% F
ifx{testiiii}{2001-01-01} T\else F\fi% F
ifx{DDD}{2001-01-01} T\else F\fi% F

ifx{testi}{DDD} T\else F\fi% F
ifx{testii}{DDD} T\else F\fi% F
ifx{testiii}{DDD} T\else F\fi% F
ifx{testiiii}{DDD} T\else F\fi% F
ifx{DDD}{DDD} T\else F\fi% F

ifcsequal{testi}{DDD}{T\}{F\}% F
ifcsequal{testii}{DDD}{T\}{F\}% F
ifcsequal{testiii}{DDD}{T\}{F\}% F
ifcsequal{testiiii}{DDD}{T\}{F\}% F
ifcsequal{DDD}{DDD}{T\}{F\}% F

ifdefequal{testi}{DDD}{T\}{F\}% F
ifdefequal{testii}{DDD}{T\}{F\}% F
ifdefequal{testiii}{DDD}{T\}{F\}% T
ifdefequal{testiiii}{DDD}{T\}{F\}% T
ifdefequal{DDD}{DDD}{T\}{F\}% T
end{document}


example 2;



documentclass{article}
usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
usepackage{etoolbox,xstring}
defTwoDigits#1{ifnum#1<10 0#1else#1fi}

newcountmonth
month 1relax
newcountday
day 1relax
newreadperiods
openinperiods=0.txt
globalreadperiods to DDD

deftesti{2001-TwoDigits{themonth}-TwoDigits{theday}}%
edeftestii{2001-TwoDigits{themonth}-TwoDigits{theday}}%
deftestiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%
edeftestiiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%

begin{document}setlengthparindent{0pt}
DDD is DDD.% space between cs and .

ifstrequal{testi}{2001-01-01}{T\}{F\}% F
ifstrequal{testii}{2001-01-01}{T\}{F\}% F
ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

ifstrequal{testi}{DDD}{T\}{F\}% F
ifstrequal{testii}{DDD}{T\}{F\}% F
ifstrequal{testiii}{DDD}{T\}{F\}% F
ifstrequal{testiiii}{DDD}{T\}{F\}% F
ifstrequal{DDD}{DDD}{T\}{F\}% T

ifxtesti{2001-01-01} T\else F\fi% F
ifxtestii{2001-01-01} T\else F\fi% F
ifxtestiii{2001-01-01} T\else F\fi% F
ifxtestiiii{2001-01-01} T\else F\fi% F
ifxDDD{2001-01-01} T\else F\fi% F

ifxtestiDDD T\else F\fi% F
ifxtestiiDDD T\else F\fi% F
ifxtestiiiDDD T\else F\fi% F
ifxtestiiiiDDD T\else F\fi% T
ifxDDDDDD T\else F\fi% T

ifcsequal{testi}{DDD}{T\}{F\}% F
ifcsequal{testii}{DDD}{T\}{F\}% F
ifcsequal{testiii}{DDD}{T\}{F\}% F
ifcsequal{testiiii}{DDD}{T\}{F\}% F
ifcsequal{DDD}{DDD}{T\}{F\}% F

ifdefequal{testi}{DDD}{T\}{F\}% F
ifdefequal{testii}{DDD}{T\}{F\}% F
ifdefequal{testiii}{DDD}{T\}{F\}% F
ifdefequal{testiiii}{DDD}{T\}{F\}% T
ifdefequal{DDD}{DDD}{T\}{F\}% T

IfStrEq{testi}{DDD}{T\}{F\}% F
IfStrEq{testii}{DDD}{T\}{F\}% F
IfStrEq{testi }{DDD}{T\}{F\}% F
IfStrEq{testii }{DDD}{T\}{F\}% F
IfStrEq{testiii}{DDD}{T\}{F\}% T
IfStrEq{testiiii}{DDD}{T\}{F\}% T
IfStrEq{DDD}{DDD}{T\}{F\}% T

end{document}








share



























    0















    The scenario: reading a date in a yyyy-mm-dd form from a file to a cs. This cs later gets compared to a 'current date' macro to write a few args in a specific way to an external file. The current day macro is along the lines of



    % defTODAY{}
    % defToday{theyear-TwoDigits{themonth}-TwoDigits{theday} }
    defTODAY{xdefToday{theyear-TwoDigits{themonth}-TwoDigits{theday}}}


    This works for the labeling things, since ref{yyyy-mm-dd} works as intended. Having no extra TODAY and then using def'd Today does so to, it's the comparison that's not working. etoolbox's ifstrequal is not what I used before. Whenever the date would change I used a single xdef and later passed that macro to a ifx, and to get it to work I had to define the date with a appended. edit Read to my amazement inserts a single space after whatever's been read.



    Currently I'm supposedly fixing things, but I broke it somehow, and now it doesn't match at all. The first culprit was the my TwoDigits cmd was robust, changing it back to def instead of NewDocumentCommand fixed that. The latter is for user-level commands, so I'll let that slip. But the results of the mwe are not clear to me.



    0.txt contains one line with 2001-01-01 and a line new afterwards, as if one line had been written to it and the output had been closed.



    The questions:




    1. What the 'right' way to compare things (macro, cs, command?) are that (should) expand to strings?

    2. Why don't edef, xdef work here, I thought it was a full expansion, and indeed before (my version control is nigh absent so I can't give a mwe for this) it worked.

    3. What is the significance of robustness? Is there a simple rule of thumb when it's necessary, obligatory, or irrelevant?

    4. It working with xstring's IfStrEqual only if the is inserted in the definition of datemacro, rather than in the comparison's brackets, i.e., {datemacro }. Why?


    5. ifstrequal supposedly doesn't expand- I used once in a command to test if an arguments is equal to &, this works- is #1 becoming whatever was input not count as an expansion?


    example 1;



    documentclass{article}
    usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
    usepackage{etoolbox}
    newreadperiods
    openinperiods=0.txt
    begin{document}setlengthparindent{0pt}fontsize{20}{20}selectfont
    deftesti{2001-01-01}
    edeftestii{2001-01-01}
    deftestiii{2001-01-01 }
    edeftestiiii{2001-01-01 }
    globalreadperiods to DDD

    ifstrequal{testi}{2001-01-01}{T\}{F\}% F
    ifstrequal{testii}{2001-01-01}{T\}{F\}% F
    ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
    ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
    ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

    ifstrequal{testi}{DDD}{T\}{F\}% F
    ifstrequal{testii}{DDD}{T\}{F\}% F
    ifstrequal{testiii}{DDD}{T\}{F\}% F
    ifstrequal{testiiii}{DDD}{T\}{F\}% F
    ifstrequal{DDD}{DDD}{T\}{F\}% T

    ifx{testi}{2001-01-01} T\else F\fi% F
    ifx{testii}{2001-01-01} T\else F\fi% F
    ifx{testiii}{2001-01-01} T\else F\fi% F
    ifx{testiiii}{2001-01-01} T\else F\fi% F
    ifx{DDD}{2001-01-01} T\else F\fi% F

    ifx{testi}{DDD} T\else F\fi% F
    ifx{testii}{DDD} T\else F\fi% F
    ifx{testiii}{DDD} T\else F\fi% F
    ifx{testiiii}{DDD} T\else F\fi% F
    ifx{DDD}{DDD} T\else F\fi% F

    ifcsequal{testi}{DDD}{T\}{F\}% F
    ifcsequal{testii}{DDD}{T\}{F\}% F
    ifcsequal{testiii}{DDD}{T\}{F\}% F
    ifcsequal{testiiii}{DDD}{T\}{F\}% F
    ifcsequal{DDD}{DDD}{T\}{F\}% F

    ifdefequal{testi}{DDD}{T\}{F\}% F
    ifdefequal{testii}{DDD}{T\}{F\}% F
    ifdefequal{testiii}{DDD}{T\}{F\}% T
    ifdefequal{testiiii}{DDD}{T\}{F\}% T
    ifdefequal{DDD}{DDD}{T\}{F\}% T
    end{document}


    example 2;



    documentclass{article}
    usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
    usepackage{etoolbox,xstring}
    defTwoDigits#1{ifnum#1<10 0#1else#1fi}

    newcountmonth
    month 1relax
    newcountday
    day 1relax
    newreadperiods
    openinperiods=0.txt
    globalreadperiods to DDD

    deftesti{2001-TwoDigits{themonth}-TwoDigits{theday}}%
    edeftestii{2001-TwoDigits{themonth}-TwoDigits{theday}}%
    deftestiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%
    edeftestiiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%

    begin{document}setlengthparindent{0pt}
    DDD is DDD.% space between cs and .

    ifstrequal{testi}{2001-01-01}{T\}{F\}% F
    ifstrequal{testii}{2001-01-01}{T\}{F\}% F
    ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
    ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
    ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

    ifstrequal{testi}{DDD}{T\}{F\}% F
    ifstrequal{testii}{DDD}{T\}{F\}% F
    ifstrequal{testiii}{DDD}{T\}{F\}% F
    ifstrequal{testiiii}{DDD}{T\}{F\}% F
    ifstrequal{DDD}{DDD}{T\}{F\}% T

    ifxtesti{2001-01-01} T\else F\fi% F
    ifxtestii{2001-01-01} T\else F\fi% F
    ifxtestiii{2001-01-01} T\else F\fi% F
    ifxtestiiii{2001-01-01} T\else F\fi% F
    ifxDDD{2001-01-01} T\else F\fi% F

    ifxtestiDDD T\else F\fi% F
    ifxtestiiDDD T\else F\fi% F
    ifxtestiiiDDD T\else F\fi% F
    ifxtestiiiiDDD T\else F\fi% T
    ifxDDDDDD T\else F\fi% T

    ifcsequal{testi}{DDD}{T\}{F\}% F
    ifcsequal{testii}{DDD}{T\}{F\}% F
    ifcsequal{testiii}{DDD}{T\}{F\}% F
    ifcsequal{testiiii}{DDD}{T\}{F\}% F
    ifcsequal{DDD}{DDD}{T\}{F\}% F

    ifdefequal{testi}{DDD}{T\}{F\}% F
    ifdefequal{testii}{DDD}{T\}{F\}% F
    ifdefequal{testiii}{DDD}{T\}{F\}% F
    ifdefequal{testiiii}{DDD}{T\}{F\}% T
    ifdefequal{DDD}{DDD}{T\}{F\}% T

    IfStrEq{testi}{DDD}{T\}{F\}% F
    IfStrEq{testii}{DDD}{T\}{F\}% F
    IfStrEq{testi }{DDD}{T\}{F\}% F
    IfStrEq{testii }{DDD}{T\}{F\}% F
    IfStrEq{testiii}{DDD}{T\}{F\}% T
    IfStrEq{testiiii}{DDD}{T\}{F\}% T
    IfStrEq{DDD}{DDD}{T\}{F\}% T

    end{document}








    share

























      0












      0








      0








      The scenario: reading a date in a yyyy-mm-dd form from a file to a cs. This cs later gets compared to a 'current date' macro to write a few args in a specific way to an external file. The current day macro is along the lines of



      % defTODAY{}
      % defToday{theyear-TwoDigits{themonth}-TwoDigits{theday} }
      defTODAY{xdefToday{theyear-TwoDigits{themonth}-TwoDigits{theday}}}


      This works for the labeling things, since ref{yyyy-mm-dd} works as intended. Having no extra TODAY and then using def'd Today does so to, it's the comparison that's not working. etoolbox's ifstrequal is not what I used before. Whenever the date would change I used a single xdef and later passed that macro to a ifx, and to get it to work I had to define the date with a appended. edit Read to my amazement inserts a single space after whatever's been read.



      Currently I'm supposedly fixing things, but I broke it somehow, and now it doesn't match at all. The first culprit was the my TwoDigits cmd was robust, changing it back to def instead of NewDocumentCommand fixed that. The latter is for user-level commands, so I'll let that slip. But the results of the mwe are not clear to me.



      0.txt contains one line with 2001-01-01 and a line new afterwards, as if one line had been written to it and the output had been closed.



      The questions:




      1. What the 'right' way to compare things (macro, cs, command?) are that (should) expand to strings?

      2. Why don't edef, xdef work here, I thought it was a full expansion, and indeed before (my version control is nigh absent so I can't give a mwe for this) it worked.

      3. What is the significance of robustness? Is there a simple rule of thumb when it's necessary, obligatory, or irrelevant?

      4. It working with xstring's IfStrEqual only if the is inserted in the definition of datemacro, rather than in the comparison's brackets, i.e., {datemacro }. Why?


      5. ifstrequal supposedly doesn't expand- I used once in a command to test if an arguments is equal to &, this works- is #1 becoming whatever was input not count as an expansion?


      example 1;



      documentclass{article}
      usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
      usepackage{etoolbox}
      newreadperiods
      openinperiods=0.txt
      begin{document}setlengthparindent{0pt}fontsize{20}{20}selectfont
      deftesti{2001-01-01}
      edeftestii{2001-01-01}
      deftestiii{2001-01-01 }
      edeftestiiii{2001-01-01 }
      globalreadperiods to DDD

      ifstrequal{testi}{2001-01-01}{T\}{F\}% F
      ifstrequal{testii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

      ifstrequal{testi}{DDD}{T\}{F\}% F
      ifstrequal{testii}{DDD}{T\}{F\}% F
      ifstrequal{testiii}{DDD}{T\}{F\}% F
      ifstrequal{testiiii}{DDD}{T\}{F\}% F
      ifstrequal{DDD}{DDD}{T\}{F\}% T

      ifx{testi}{2001-01-01} T\else F\fi% F
      ifx{testii}{2001-01-01} T\else F\fi% F
      ifx{testiii}{2001-01-01} T\else F\fi% F
      ifx{testiiii}{2001-01-01} T\else F\fi% F
      ifx{DDD}{2001-01-01} T\else F\fi% F

      ifx{testi}{DDD} T\else F\fi% F
      ifx{testii}{DDD} T\else F\fi% F
      ifx{testiii}{DDD} T\else F\fi% F
      ifx{testiiii}{DDD} T\else F\fi% F
      ifx{DDD}{DDD} T\else F\fi% F

      ifcsequal{testi}{DDD}{T\}{F\}% F
      ifcsequal{testii}{DDD}{T\}{F\}% F
      ifcsequal{testiii}{DDD}{T\}{F\}% F
      ifcsequal{testiiii}{DDD}{T\}{F\}% F
      ifcsequal{DDD}{DDD}{T\}{F\}% F

      ifdefequal{testi}{DDD}{T\}{F\}% F
      ifdefequal{testii}{DDD}{T\}{F\}% F
      ifdefequal{testiii}{DDD}{T\}{F\}% T
      ifdefequal{testiiii}{DDD}{T\}{F\}% T
      ifdefequal{DDD}{DDD}{T\}{F\}% T
      end{document}


      example 2;



      documentclass{article}
      usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
      usepackage{etoolbox,xstring}
      defTwoDigits#1{ifnum#1<10 0#1else#1fi}

      newcountmonth
      month 1relax
      newcountday
      day 1relax
      newreadperiods
      openinperiods=0.txt
      globalreadperiods to DDD

      deftesti{2001-TwoDigits{themonth}-TwoDigits{theday}}%
      edeftestii{2001-TwoDigits{themonth}-TwoDigits{theday}}%
      deftestiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%
      edeftestiiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%

      begin{document}setlengthparindent{0pt}
      DDD is DDD.% space between cs and .

      ifstrequal{testi}{2001-01-01}{T\}{F\}% F
      ifstrequal{testii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

      ifstrequal{testi}{DDD}{T\}{F\}% F
      ifstrequal{testii}{DDD}{T\}{F\}% F
      ifstrequal{testiii}{DDD}{T\}{F\}% F
      ifstrequal{testiiii}{DDD}{T\}{F\}% F
      ifstrequal{DDD}{DDD}{T\}{F\}% T

      ifxtesti{2001-01-01} T\else F\fi% F
      ifxtestii{2001-01-01} T\else F\fi% F
      ifxtestiii{2001-01-01} T\else F\fi% F
      ifxtestiiii{2001-01-01} T\else F\fi% F
      ifxDDD{2001-01-01} T\else F\fi% F

      ifxtestiDDD T\else F\fi% F
      ifxtestiiDDD T\else F\fi% F
      ifxtestiiiDDD T\else F\fi% F
      ifxtestiiiiDDD T\else F\fi% T
      ifxDDDDDD T\else F\fi% T

      ifcsequal{testi}{DDD}{T\}{F\}% F
      ifcsequal{testii}{DDD}{T\}{F\}% F
      ifcsequal{testiii}{DDD}{T\}{F\}% F
      ifcsequal{testiiii}{DDD}{T\}{F\}% F
      ifcsequal{DDD}{DDD}{T\}{F\}% F

      ifdefequal{testi}{DDD}{T\}{F\}% F
      ifdefequal{testii}{DDD}{T\}{F\}% F
      ifdefequal{testiii}{DDD}{T\}{F\}% F
      ifdefequal{testiiii}{DDD}{T\}{F\}% T
      ifdefequal{DDD}{DDD}{T\}{F\}% T

      IfStrEq{testi}{DDD}{T\}{F\}% F
      IfStrEq{testii}{DDD}{T\}{F\}% F
      IfStrEq{testi }{DDD}{T\}{F\}% F
      IfStrEq{testii }{DDD}{T\}{F\}% F
      IfStrEq{testiii}{DDD}{T\}{F\}% T
      IfStrEq{testiiii}{DDD}{T\}{F\}% T
      IfStrEq{DDD}{DDD}{T\}{F\}% T

      end{document}








      share














      The scenario: reading a date in a yyyy-mm-dd form from a file to a cs. This cs later gets compared to a 'current date' macro to write a few args in a specific way to an external file. The current day macro is along the lines of



      % defTODAY{}
      % defToday{theyear-TwoDigits{themonth}-TwoDigits{theday} }
      defTODAY{xdefToday{theyear-TwoDigits{themonth}-TwoDigits{theday}}}


      This works for the labeling things, since ref{yyyy-mm-dd} works as intended. Having no extra TODAY and then using def'd Today does so to, it's the comparison that's not working. etoolbox's ifstrequal is not what I used before. Whenever the date would change I used a single xdef and later passed that macro to a ifx, and to get it to work I had to define the date with a appended. edit Read to my amazement inserts a single space after whatever's been read.



      Currently I'm supposedly fixing things, but I broke it somehow, and now it doesn't match at all. The first culprit was the my TwoDigits cmd was robust, changing it back to def instead of NewDocumentCommand fixed that. The latter is for user-level commands, so I'll let that slip. But the results of the mwe are not clear to me.



      0.txt contains one line with 2001-01-01 and a line new afterwards, as if one line had been written to it and the output had been closed.



      The questions:




      1. What the 'right' way to compare things (macro, cs, command?) are that (should) expand to strings?

      2. Why don't edef, xdef work here, I thought it was a full expansion, and indeed before (my version control is nigh absent so I can't give a mwe for this) it worked.

      3. What is the significance of robustness? Is there a simple rule of thumb when it's necessary, obligatory, or irrelevant?

      4. It working with xstring's IfStrEqual only if the is inserted in the definition of datemacro, rather than in the comparison's brackets, i.e., {datemacro }. Why?


      5. ifstrequal supposedly doesn't expand- I used once in a command to test if an arguments is equal to &, this works- is #1 becoming whatever was input not count as an expansion?


      example 1;



      documentclass{article}
      usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
      usepackage{etoolbox}
      newreadperiods
      openinperiods=0.txt
      begin{document}setlengthparindent{0pt}fontsize{20}{20}selectfont
      deftesti{2001-01-01}
      edeftestii{2001-01-01}
      deftestiii{2001-01-01 }
      edeftestiiii{2001-01-01 }
      globalreadperiods to DDD

      ifstrequal{testi}{2001-01-01}{T\}{F\}% F
      ifstrequal{testii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

      ifstrequal{testi}{DDD}{T\}{F\}% F
      ifstrequal{testii}{DDD}{T\}{F\}% F
      ifstrequal{testiii}{DDD}{T\}{F\}% F
      ifstrequal{testiiii}{DDD}{T\}{F\}% F
      ifstrequal{DDD}{DDD}{T\}{F\}% T

      ifx{testi}{2001-01-01} T\else F\fi% F
      ifx{testii}{2001-01-01} T\else F\fi% F
      ifx{testiii}{2001-01-01} T\else F\fi% F
      ifx{testiiii}{2001-01-01} T\else F\fi% F
      ifx{DDD}{2001-01-01} T\else F\fi% F

      ifx{testi}{DDD} T\else F\fi% F
      ifx{testii}{DDD} T\else F\fi% F
      ifx{testiii}{DDD} T\else F\fi% F
      ifx{testiiii}{DDD} T\else F\fi% F
      ifx{DDD}{DDD} T\else F\fi% F

      ifcsequal{testi}{DDD}{T\}{F\}% F
      ifcsequal{testii}{DDD}{T\}{F\}% F
      ifcsequal{testiii}{DDD}{T\}{F\}% F
      ifcsequal{testiiii}{DDD}{T\}{F\}% F
      ifcsequal{DDD}{DDD}{T\}{F\}% F

      ifdefequal{testi}{DDD}{T\}{F\}% F
      ifdefequal{testii}{DDD}{T\}{F\}% F
      ifdefequal{testiii}{DDD}{T\}{F\}% T
      ifdefequal{testiiii}{DDD}{T\}{F\}% T
      ifdefequal{DDD}{DDD}{T\}{F\}% T
      end{document}


      example 2;



      documentclass{article}
      usepackage[top=1.5cm, bottom=0.6cm, hmargin=1.5cm]{geometry}
      usepackage{etoolbox,xstring}
      defTwoDigits#1{ifnum#1<10 0#1else#1fi}

      newcountmonth
      month 1relax
      newcountday
      day 1relax
      newreadperiods
      openinperiods=0.txt
      globalreadperiods to DDD

      deftesti{2001-TwoDigits{themonth}-TwoDigits{theday}}%
      edeftestii{2001-TwoDigits{themonth}-TwoDigits{theday}}%
      deftestiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%
      edeftestiiii{2001-TwoDigits{themonth}-TwoDigits{theday} }%

      begin{document}setlengthparindent{0pt}
      DDD is DDD.% space between cs and .

      ifstrequal{testi}{2001-01-01}{T\}{F\}% F
      ifstrequal{testii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{testiiii}{2001-01-01}{T\}{F\}% F
      ifstrequal{DDD}{2001-01-01}{T\}{F\}% F

      ifstrequal{testi}{DDD}{T\}{F\}% F
      ifstrequal{testii}{DDD}{T\}{F\}% F
      ifstrequal{testiii}{DDD}{T\}{F\}% F
      ifstrequal{testiiii}{DDD}{T\}{F\}% F
      ifstrequal{DDD}{DDD}{T\}{F\}% T

      ifxtesti{2001-01-01} T\else F\fi% F
      ifxtestii{2001-01-01} T\else F\fi% F
      ifxtestiii{2001-01-01} T\else F\fi% F
      ifxtestiiii{2001-01-01} T\else F\fi% F
      ifxDDD{2001-01-01} T\else F\fi% F

      ifxtestiDDD T\else F\fi% F
      ifxtestiiDDD T\else F\fi% F
      ifxtestiiiDDD T\else F\fi% F
      ifxtestiiiiDDD T\else F\fi% T
      ifxDDDDDD T\else F\fi% T

      ifcsequal{testi}{DDD}{T\}{F\}% F
      ifcsequal{testii}{DDD}{T\}{F\}% F
      ifcsequal{testiii}{DDD}{T\}{F\}% F
      ifcsequal{testiiii}{DDD}{T\}{F\}% F
      ifcsequal{DDD}{DDD}{T\}{F\}% F

      ifdefequal{testi}{DDD}{T\}{F\}% F
      ifdefequal{testii}{DDD}{T\}{F\}% F
      ifdefequal{testiii}{DDD}{T\}{F\}% F
      ifdefequal{testiiii}{DDD}{T\}{F\}% T
      ifdefequal{DDD}{DDD}{T\}{F\}% T

      IfStrEq{testi}{DDD}{T\}{F\}% F
      IfStrEq{testii}{DDD}{T\}{F\}% F
      IfStrEq{testi }{DDD}{T\}{F\}% F
      IfStrEq{testii }{DDD}{T\}{F\}% F
      IfStrEq{testiii}{DDD}{T\}{F\}% T
      IfStrEq{testiiii}{DDD}{T\}{F\}% T
      IfStrEq{DDD}{DDD}{T\}{F\}% T

      end{document}






      conditionals etoolbox strings xstring





      share












      share










      share



      share










      asked 2 mins ago









      vlgvlg

      1169




      1169






















          0






          active

          oldest

          votes











          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%2f478835%2fhow-to-compare-a-string-to-read-cs-properly%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          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%2f478835%2fhow-to-compare-a-string-to-read-cs-properly%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

          Paper upload error, “Upload failed: The top margin is 0.715 in on page 3, which is below the required...

          Emraan Hashmi Filmografia | Linki zewnętrzne | Menu nawigacyjneGulshan GroverGulshan...

          How can I write this formula?newline and italics added with leqWhy does widehat behave differently if I...