tomsu
tomsu

Reputation: 375

whitespace in R Shiny

I have a problem with text in Shiny Dashboard. I would like to save original text formatting, but shiny removes the whitespaces I want to keep.

output$frame <- renderUI({
    HTML(paste(
               p(strong("Name and Surname:"),("     John Smith"))
               )
         )
  })


tabItem(tabName = "aaa",
        h2("bbb"),
        fluidRow(
                box(width = 6, solidHeader = TRUE, htmlOutput("frame")) 
                )
      ),

Unfortunately I get "Name and Surname: John Smith". I wish to have "Name and Surname: John Smith".

How to solve this problem?

Upvotes: 5

Views: 9341

Answers (3)

mattador
mattador

Reputation: 481

I found this oddly difficult to achieve. Just adding the style element to pre-wrap introduced an extra new line:

p(strong("Name and Surname:"),("     John Smith"),style="white-space: pre-wrap")

No other style elements (margin:0, etc) could fix this...so,to get around it, I just converted your strong() to HTML, and it works great:

p(HTML("<b>Name and Surname:</b>         John Smith"),style="white-space: pre-wrap")

Upvotes: 2

tomsu
tomsu

Reputation: 375

I found that we can also use stri_dup(intToUtf8(160), 6) from package stringi.

Upvotes: 2

SBista
SBista

Reputation: 7704

You can use HTML('&nbsp;') to add 1 whitespace and HTML('&emsp;') to add 1 tab space. In your code it wold be as follows:

output$frame <- renderUI({
        HTML(paste(
          p(strong("Name and Surname:"), HTML('&nbsp;'),HTML('&nbsp;'),"John Smith")
        )
        )
      })

With this you get two white spaces and output looks like this: enter image description here

Upvotes: 9

Related Questions