Redefine `uline` so `colorbox` is locally defined to have underlined text, too












2














Initial problem:



I want to underline the text with a continuous line with the following code:



uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}


screenshot





Workaround:



A solution to get a continuous line for the text inside colorbox as well, is to do:



sbox0{uline{hspace{fboxsep}everythinghspace{fboxsep}}}
uline{No underlining for colorbox{lightgray}{hspace{-fboxsep}usebox0hspace{-fboxsep}} inside the colorbox.}


screenshot





Question:



How can I redefine uline, so every colorbox inside uline is locally defined as shown above in the workaround to have underlined text, too?





MCVE:



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
usepackage[normalem]{ulem}

begin{document}

uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

end{document}












share|improve this question






















  • Underlining is not the best way of typography, however. Do you really want to have gray box portions below the line? That does not look nice!
    – Christian Hupfer
    2 hours ago










  • @ChristianHupfer Thanks for the feedback. However, I'm not sure what you mean. You mean "vertically" below the line, right? I don't think it looks too bad. In the complete documents it looks like someone highlighted certain words with a marker. If you would highlight by hand on a real sheet of paper, you wouldn't care about marking below the line either, would you? Maybe I'm misunderstanding you? :-) I'm open to suggestions how to improve the code.
    – Jayjayyy
    2 hours ago










  • Yes, 'vertically' below (below implies vertical, doesn't it? ;-) ... Well, marking up by hand is done most time without rulers, so it is not very precise, but in a printed document, we can achieve better look, I think.
    – Christian Hupfer
    2 hours ago
















2














Initial problem:



I want to underline the text with a continuous line with the following code:



uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}


screenshot





Workaround:



A solution to get a continuous line for the text inside colorbox as well, is to do:



sbox0{uline{hspace{fboxsep}everythinghspace{fboxsep}}}
uline{No underlining for colorbox{lightgray}{hspace{-fboxsep}usebox0hspace{-fboxsep}} inside the colorbox.}


screenshot





Question:



How can I redefine uline, so every colorbox inside uline is locally defined as shown above in the workaround to have underlined text, too?





MCVE:



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
usepackage[normalem]{ulem}

begin{document}

uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

end{document}












share|improve this question






















  • Underlining is not the best way of typography, however. Do you really want to have gray box portions below the line? That does not look nice!
    – Christian Hupfer
    2 hours ago










  • @ChristianHupfer Thanks for the feedback. However, I'm not sure what you mean. You mean "vertically" below the line, right? I don't think it looks too bad. In the complete documents it looks like someone highlighted certain words with a marker. If you would highlight by hand on a real sheet of paper, you wouldn't care about marking below the line either, would you? Maybe I'm misunderstanding you? :-) I'm open to suggestions how to improve the code.
    – Jayjayyy
    2 hours ago










  • Yes, 'vertically' below (below implies vertical, doesn't it? ;-) ... Well, marking up by hand is done most time without rulers, so it is not very precise, but in a printed document, we can achieve better look, I think.
    – Christian Hupfer
    2 hours ago














2












2








2


1





Initial problem:



I want to underline the text with a continuous line with the following code:



uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}


screenshot





Workaround:



A solution to get a continuous line for the text inside colorbox as well, is to do:



sbox0{uline{hspace{fboxsep}everythinghspace{fboxsep}}}
uline{No underlining for colorbox{lightgray}{hspace{-fboxsep}usebox0hspace{-fboxsep}} inside the colorbox.}


screenshot





Question:



How can I redefine uline, so every colorbox inside uline is locally defined as shown above in the workaround to have underlined text, too?





MCVE:



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
usepackage[normalem]{ulem}

begin{document}

uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

end{document}












share|improve this question













Initial problem:



I want to underline the text with a continuous line with the following code:



uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}


screenshot





Workaround:



A solution to get a continuous line for the text inside colorbox as well, is to do:



sbox0{uline{hspace{fboxsep}everythinghspace{fboxsep}}}
uline{No underlining for colorbox{lightgray}{hspace{-fboxsep}usebox0hspace{-fboxsep}} inside the colorbox.}


screenshot





Question:



How can I redefine uline, so every colorbox inside uline is locally defined as shown above in the workaround to have underlined text, too?





MCVE:



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
usepackage[normalem]{ulem}

begin{document}

uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

end{document}









macros formatting ulem underline colorbox






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 3 hours ago









Jayjayyy

1939




1939












  • Underlining is not the best way of typography, however. Do you really want to have gray box portions below the line? That does not look nice!
    – Christian Hupfer
    2 hours ago










  • @ChristianHupfer Thanks for the feedback. However, I'm not sure what you mean. You mean "vertically" below the line, right? I don't think it looks too bad. In the complete documents it looks like someone highlighted certain words with a marker. If you would highlight by hand on a real sheet of paper, you wouldn't care about marking below the line either, would you? Maybe I'm misunderstanding you? :-) I'm open to suggestions how to improve the code.
    – Jayjayyy
    2 hours ago










  • Yes, 'vertically' below (below implies vertical, doesn't it? ;-) ... Well, marking up by hand is done most time without rulers, so it is not very precise, but in a printed document, we can achieve better look, I think.
    – Christian Hupfer
    2 hours ago


















  • Underlining is not the best way of typography, however. Do you really want to have gray box portions below the line? That does not look nice!
    – Christian Hupfer
    2 hours ago










  • @ChristianHupfer Thanks for the feedback. However, I'm not sure what you mean. You mean "vertically" below the line, right? I don't think it looks too bad. In the complete documents it looks like someone highlighted certain words with a marker. If you would highlight by hand on a real sheet of paper, you wouldn't care about marking below the line either, would you? Maybe I'm misunderstanding you? :-) I'm open to suggestions how to improve the code.
    – Jayjayyy
    2 hours ago










  • Yes, 'vertically' below (below implies vertical, doesn't it? ;-) ... Well, marking up by hand is done most time without rulers, so it is not very precise, but in a printed document, we can achieve better look, I think.
    – Christian Hupfer
    2 hours ago
















Underlining is not the best way of typography, however. Do you really want to have gray box portions below the line? That does not look nice!
– Christian Hupfer
2 hours ago




Underlining is not the best way of typography, however. Do you really want to have gray box portions below the line? That does not look nice!
– Christian Hupfer
2 hours ago












@ChristianHupfer Thanks for the feedback. However, I'm not sure what you mean. You mean "vertically" below the line, right? I don't think it looks too bad. In the complete documents it looks like someone highlighted certain words with a marker. If you would highlight by hand on a real sheet of paper, you wouldn't care about marking below the line either, would you? Maybe I'm misunderstanding you? :-) I'm open to suggestions how to improve the code.
– Jayjayyy
2 hours ago




@ChristianHupfer Thanks for the feedback. However, I'm not sure what you mean. You mean "vertically" below the line, right? I don't think it looks too bad. In the complete documents it looks like someone highlighted certain words with a marker. If you would highlight by hand on a real sheet of paper, you wouldn't care about marking below the line either, would you? Maybe I'm misunderstanding you? :-) I'm open to suggestions how to improve the code.
– Jayjayyy
2 hours ago












Yes, 'vertically' below (below implies vertical, doesn't it? ;-) ... Well, marking up by hand is done most time without rulers, so it is not very precise, but in a printed document, we can achieve better look, I think.
– Christian Hupfer
2 hours ago




Yes, 'vertically' below (below implies vertical, doesn't it? ;-) ... Well, marking up by hand is done most time without rulers, so it is not very precise, but in a printed document, we can achieve better look, I think.
– Christian Hupfer
2 hours ago










3 Answers
3






active

oldest

votes


















3














Here is a way with tikz and using a node, drawing a line at the bottom of the node. However, this does not work with text - wrapping, i.e. if the text is wider than text width, it will fail.



In principle, underlining is not the best way of typographical markup, in my point of view.



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
%usepackage[normalem]{ulem}
usepackage{tikz}

newcommand{underlinethis}[3][0.15baselineskip]{%
tikz[remember picture,baseline=(A.base)]{%
node[inner sep=0pt,outer sep=0pt] (A) {#3}; % Place the node and typeset the text
draw[#2] ([yshift=#1]A.south west) -- ([yshift=#1]A.south east); % Draw the line, shifted up by some value
}%
}

begin{document}
underlinethis{blue, line width=1pt}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

underlinethis{red, line width=1pt,dashed}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}
end{document}


enter image description here






share|improve this answer



















  • 2




    Two wonderful examples of beautiful typography ;-)
    – Christian Hupfer
    2 hours ago



















2














For reasons beyond my understanding the depth of the underline in the colorbox doesn't work out automatically, so the following is using a rather ugly ULdepth=.42774ex.



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
usepackage[normalem]{ulem}

makeatletter
longdefafterelsefi#1else#2fi{fi#1}
longdefafterfi#1fi{fi#1}
defq@mark{q@mark}
newcommanduline@colorbox[3][q@mark]
{%
ifxq@mark#1%
afterelseficolorbox@orig{#2}%
else
afterficolorbox@orig[#1]{#2}%
fi
{%
ULdepth=.42774ex % this is dirty
hskip-fboxsep
uline{hskipfboxsep#3hskipfboxsep}%
hskip-fboxsep
}%
}
letcolorbox@origcolorbox
protecteddefuline
{%
relax
ifmmode
expandafterunderline
else
bgroup
letcolorboxuline@colorbox % this is added compared to the original definition
expandafterULset
fi
}
makeatother

begin{document}

uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

end{document}


enter image description here






share|improve this answer





















  • Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
    – Jayjayyy
    42 mins ago










  • @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
    – Skillmon
    1 min ago



















0














Don't underline.



When you call uline inside uline, the macro adds a further 1.2pt, because it thinks you want to double underline.



documentclass[12pt]{article}
usepackage[T1]{fontenc}
usepackage[utf8]{inputenc}
usepackage{lmodern}
usepackage{xcolor}
usepackage[normalem]{ulem}

letulemulineuline
renewcommand{uline}[1]{%
begingroup
redefinecolorbox
ulemuline{#1}%
endgroup
}
letlatexcolorboxcolorbox
newcommandredefinecolorbox{%
renewcommandcolorbox[2]{%
latexcolorbox{##1}{%
advanceULdepth-1.2pt
kern-fboxsep
ulemuline{hspace{fboxsep}##2hspace{fboxsep}}%
kern-fboxsep
}%
}%
}

begin{document}

uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

end{document}


enter image description here






share|improve this answer





















    Your Answer








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

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

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


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f468307%2fredefine-uline-so-colorbox-is-locally-defined-to-have-underlined-text-too%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














    Here is a way with tikz and using a node, drawing a line at the bottom of the node. However, this does not work with text - wrapping, i.e. if the text is wider than text width, it will fail.



    In principle, underlining is not the best way of typographical markup, in my point of view.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    %usepackage[normalem]{ulem}
    usepackage{tikz}

    newcommand{underlinethis}[3][0.15baselineskip]{%
    tikz[remember picture,baseline=(A.base)]{%
    node[inner sep=0pt,outer sep=0pt] (A) {#3}; % Place the node and typeset the text
    draw[#2] ([yshift=#1]A.south west) -- ([yshift=#1]A.south east); % Draw the line, shifted up by some value
    }%
    }

    begin{document}
    underlinethis{blue, line width=1pt}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    underlinethis{red, line width=1pt,dashed}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}
    end{document}


    enter image description here






    share|improve this answer



















    • 2




      Two wonderful examples of beautiful typography ;-)
      – Christian Hupfer
      2 hours ago
















    3














    Here is a way with tikz and using a node, drawing a line at the bottom of the node. However, this does not work with text - wrapping, i.e. if the text is wider than text width, it will fail.



    In principle, underlining is not the best way of typographical markup, in my point of view.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    %usepackage[normalem]{ulem}
    usepackage{tikz}

    newcommand{underlinethis}[3][0.15baselineskip]{%
    tikz[remember picture,baseline=(A.base)]{%
    node[inner sep=0pt,outer sep=0pt] (A) {#3}; % Place the node and typeset the text
    draw[#2] ([yshift=#1]A.south west) -- ([yshift=#1]A.south east); % Draw the line, shifted up by some value
    }%
    }

    begin{document}
    underlinethis{blue, line width=1pt}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    underlinethis{red, line width=1pt,dashed}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}
    end{document}


    enter image description here






    share|improve this answer



















    • 2




      Two wonderful examples of beautiful typography ;-)
      – Christian Hupfer
      2 hours ago














    3












    3








    3






    Here is a way with tikz and using a node, drawing a line at the bottom of the node. However, this does not work with text - wrapping, i.e. if the text is wider than text width, it will fail.



    In principle, underlining is not the best way of typographical markup, in my point of view.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    %usepackage[normalem]{ulem}
    usepackage{tikz}

    newcommand{underlinethis}[3][0.15baselineskip]{%
    tikz[remember picture,baseline=(A.base)]{%
    node[inner sep=0pt,outer sep=0pt] (A) {#3}; % Place the node and typeset the text
    draw[#2] ([yshift=#1]A.south west) -- ([yshift=#1]A.south east); % Draw the line, shifted up by some value
    }%
    }

    begin{document}
    underlinethis{blue, line width=1pt}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    underlinethis{red, line width=1pt,dashed}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}
    end{document}


    enter image description here






    share|improve this answer














    Here is a way with tikz and using a node, drawing a line at the bottom of the node. However, this does not work with text - wrapping, i.e. if the text is wider than text width, it will fail.



    In principle, underlining is not the best way of typographical markup, in my point of view.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    %usepackage[normalem]{ulem}
    usepackage{tikz}

    newcommand{underlinethis}[3][0.15baselineskip]{%
    tikz[remember picture,baseline=(A.base)]{%
    node[inner sep=0pt,outer sep=0pt] (A) {#3}; % Place the node and typeset the text
    draw[#2] ([yshift=#1]A.south west) -- ([yshift=#1]A.south east); % Draw the line, shifted up by some value
    }%
    }

    begin{document}
    underlinethis{blue, line width=1pt}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    underlinethis{red, line width=1pt,dashed}{No underlining for colorbox{lightgray}{everything} inside the colorbox.}
    end{document}


    enter image description here







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 2 hours ago

























    answered 2 hours ago









    Christian Hupfer

    148k14193388




    148k14193388








    • 2




      Two wonderful examples of beautiful typography ;-)
      – Christian Hupfer
      2 hours ago














    • 2




      Two wonderful examples of beautiful typography ;-)
      – Christian Hupfer
      2 hours ago








    2




    2




    Two wonderful examples of beautiful typography ;-)
    – Christian Hupfer
    2 hours ago




    Two wonderful examples of beautiful typography ;-)
    – Christian Hupfer
    2 hours ago











    2














    For reasons beyond my understanding the depth of the underline in the colorbox doesn't work out automatically, so the following is using a rather ugly ULdepth=.42774ex.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    usepackage[normalem]{ulem}

    makeatletter
    longdefafterelsefi#1else#2fi{fi#1}
    longdefafterfi#1fi{fi#1}
    defq@mark{q@mark}
    newcommanduline@colorbox[3][q@mark]
    {%
    ifxq@mark#1%
    afterelseficolorbox@orig{#2}%
    else
    afterficolorbox@orig[#1]{#2}%
    fi
    {%
    ULdepth=.42774ex % this is dirty
    hskip-fboxsep
    uline{hskipfboxsep#3hskipfboxsep}%
    hskip-fboxsep
    }%
    }
    letcolorbox@origcolorbox
    protecteddefuline
    {%
    relax
    ifmmode
    expandafterunderline
    else
    bgroup
    letcolorboxuline@colorbox % this is added compared to the original definition
    expandafterULset
    fi
    }
    makeatother

    begin{document}

    uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    end{document}


    enter image description here






    share|improve this answer





















    • Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
      – Jayjayyy
      42 mins ago










    • @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
      – Skillmon
      1 min ago
















    2














    For reasons beyond my understanding the depth of the underline in the colorbox doesn't work out automatically, so the following is using a rather ugly ULdepth=.42774ex.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    usepackage[normalem]{ulem}

    makeatletter
    longdefafterelsefi#1else#2fi{fi#1}
    longdefafterfi#1fi{fi#1}
    defq@mark{q@mark}
    newcommanduline@colorbox[3][q@mark]
    {%
    ifxq@mark#1%
    afterelseficolorbox@orig{#2}%
    else
    afterficolorbox@orig[#1]{#2}%
    fi
    {%
    ULdepth=.42774ex % this is dirty
    hskip-fboxsep
    uline{hskipfboxsep#3hskipfboxsep}%
    hskip-fboxsep
    }%
    }
    letcolorbox@origcolorbox
    protecteddefuline
    {%
    relax
    ifmmode
    expandafterunderline
    else
    bgroup
    letcolorboxuline@colorbox % this is added compared to the original definition
    expandafterULset
    fi
    }
    makeatother

    begin{document}

    uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    end{document}


    enter image description here






    share|improve this answer





















    • Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
      – Jayjayyy
      42 mins ago










    • @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
      – Skillmon
      1 min ago














    2












    2








    2






    For reasons beyond my understanding the depth of the underline in the colorbox doesn't work out automatically, so the following is using a rather ugly ULdepth=.42774ex.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    usepackage[normalem]{ulem}

    makeatletter
    longdefafterelsefi#1else#2fi{fi#1}
    longdefafterfi#1fi{fi#1}
    defq@mark{q@mark}
    newcommanduline@colorbox[3][q@mark]
    {%
    ifxq@mark#1%
    afterelseficolorbox@orig{#2}%
    else
    afterficolorbox@orig[#1]{#2}%
    fi
    {%
    ULdepth=.42774ex % this is dirty
    hskip-fboxsep
    uline{hskipfboxsep#3hskipfboxsep}%
    hskip-fboxsep
    }%
    }
    letcolorbox@origcolorbox
    protecteddefuline
    {%
    relax
    ifmmode
    expandafterunderline
    else
    bgroup
    letcolorboxuline@colorbox % this is added compared to the original definition
    expandafterULset
    fi
    }
    makeatother

    begin{document}

    uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    end{document}


    enter image description here






    share|improve this answer












    For reasons beyond my understanding the depth of the underline in the colorbox doesn't work out automatically, so the following is using a rather ugly ULdepth=.42774ex.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    usepackage[normalem]{ulem}

    makeatletter
    longdefafterelsefi#1else#2fi{fi#1}
    longdefafterfi#1fi{fi#1}
    defq@mark{q@mark}
    newcommanduline@colorbox[3][q@mark]
    {%
    ifxq@mark#1%
    afterelseficolorbox@orig{#2}%
    else
    afterficolorbox@orig[#1]{#2}%
    fi
    {%
    ULdepth=.42774ex % this is dirty
    hskip-fboxsep
    uline{hskipfboxsep#3hskipfboxsep}%
    hskip-fboxsep
    }%
    }
    letcolorbox@origcolorbox
    protecteddefuline
    {%
    relax
    ifmmode
    expandafterunderline
    else
    bgroup
    letcolorboxuline@colorbox % this is added compared to the original definition
    expandafterULset
    fi
    }
    makeatother

    begin{document}

    uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    end{document}


    enter image description here







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 2 hours ago









    Skillmon

    21.1k11941




    21.1k11941












    • Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
      – Jayjayyy
      42 mins ago










    • @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
      – Skillmon
      1 min ago


















    • Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
      – Jayjayyy
      42 mins ago










    • @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
      – Skillmon
      1 min ago
















    Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
    – Jayjayyy
    42 mins ago




    Hey, thanks. :-) I'll test this as soon as possible. Where does the value .42774ex come from? And why isn't it necessary in the initial workaround solution?
    – Jayjayyy
    42 mins ago












    @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
    – Skillmon
    1 min ago




    @Jayjayyy if I knew with certainty it wouldn't be necessary to use this ugly value. Seems to be because of the nesting of uline (I'll take another thorough look). .42774ex was determined by trial and error and a big zoom.
    – Skillmon
    1 min ago











    0














    Don't underline.



    When you call uline inside uline, the macro adds a further 1.2pt, because it thinks you want to double underline.



    documentclass[12pt]{article}
    usepackage[T1]{fontenc}
    usepackage[utf8]{inputenc}
    usepackage{lmodern}
    usepackage{xcolor}
    usepackage[normalem]{ulem}

    letulemulineuline
    renewcommand{uline}[1]{%
    begingroup
    redefinecolorbox
    ulemuline{#1}%
    endgroup
    }
    letlatexcolorboxcolorbox
    newcommandredefinecolorbox{%
    renewcommandcolorbox[2]{%
    latexcolorbox{##1}{%
    advanceULdepth-1.2pt
    kern-fboxsep
    ulemuline{hspace{fboxsep}##2hspace{fboxsep}}%
    kern-fboxsep
    }%
    }%
    }

    begin{document}

    uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

    end{document}


    enter image description here






    share|improve this answer


























      0














      Don't underline.



      When you call uline inside uline, the macro adds a further 1.2pt, because it thinks you want to double underline.



      documentclass[12pt]{article}
      usepackage[T1]{fontenc}
      usepackage[utf8]{inputenc}
      usepackage{lmodern}
      usepackage{xcolor}
      usepackage[normalem]{ulem}

      letulemulineuline
      renewcommand{uline}[1]{%
      begingroup
      redefinecolorbox
      ulemuline{#1}%
      endgroup
      }
      letlatexcolorboxcolorbox
      newcommandredefinecolorbox{%
      renewcommandcolorbox[2]{%
      latexcolorbox{##1}{%
      advanceULdepth-1.2pt
      kern-fboxsep
      ulemuline{hspace{fboxsep}##2hspace{fboxsep}}%
      kern-fboxsep
      }%
      }%
      }

      begin{document}

      uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

      end{document}


      enter image description here






      share|improve this answer
























        0












        0








        0






        Don't underline.



        When you call uline inside uline, the macro adds a further 1.2pt, because it thinks you want to double underline.



        documentclass[12pt]{article}
        usepackage[T1]{fontenc}
        usepackage[utf8]{inputenc}
        usepackage{lmodern}
        usepackage{xcolor}
        usepackage[normalem]{ulem}

        letulemulineuline
        renewcommand{uline}[1]{%
        begingroup
        redefinecolorbox
        ulemuline{#1}%
        endgroup
        }
        letlatexcolorboxcolorbox
        newcommandredefinecolorbox{%
        renewcommandcolorbox[2]{%
        latexcolorbox{##1}{%
        advanceULdepth-1.2pt
        kern-fboxsep
        ulemuline{hspace{fboxsep}##2hspace{fboxsep}}%
        kern-fboxsep
        }%
        }%
        }

        begin{document}

        uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

        end{document}


        enter image description here






        share|improve this answer












        Don't underline.



        When you call uline inside uline, the macro adds a further 1.2pt, because it thinks you want to double underline.



        documentclass[12pt]{article}
        usepackage[T1]{fontenc}
        usepackage[utf8]{inputenc}
        usepackage{lmodern}
        usepackage{xcolor}
        usepackage[normalem]{ulem}

        letulemulineuline
        renewcommand{uline}[1]{%
        begingroup
        redefinecolorbox
        ulemuline{#1}%
        endgroup
        }
        letlatexcolorboxcolorbox
        newcommandredefinecolorbox{%
        renewcommandcolorbox[2]{%
        latexcolorbox{##1}{%
        advanceULdepth-1.2pt
        kern-fboxsep
        ulemuline{hspace{fboxsep}##2hspace{fboxsep}}%
        kern-fboxsep
        }%
        }%
        }

        begin{document}

        uline{No underlining for colorbox{lightgray}{everything} inside the colorbox.}

        end{document}


        enter image description here







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 24 mins ago









        egreg

        709k8618833166




        709k8618833166






























            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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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%2f468307%2fredefine-uline-so-colorbox-is-locally-defined-to-have-underlined-text-too%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

            What visual should I use to simply compare current year value vs last year in Power BI desktop

            How to ignore python UserWarning in pytest?

            Alexandru Averescu