Search code examples
htmlcssrr-markdownbookdown

CSS and R markdown (bookdown). How can I use a CSS to build css boxes without changing the overall template?


Ok, I assume this can be a very naive question, but I did not find any helpful solution. I have an "R markdown" for teaching statistics in which I use a CSS file to customize some appearance for all my questions. I have imported this CSS file from here and it is pretty cool because I can easily create a question box, such as this one:

questions

However, now, in my R Markdown file, every time I type "1. " "2. " etc, it becomes a question box.
How can I modify the CSS to prevent transforming all my lists into a "question box" ?

Thank you.

Please check the CSS file below:

body {
    counter-reset: li; /* initialize counter named li */
}

h1 {
    font-family:Arial, Helvetica, sans-serif;
    font-weight:bold;
}

h2 {
    font-family:Arial, Helvetica, sans-serif;
    font-weight:bold;
    margin-top: 24px;
}

ol {
    margin-left:0; /* Remove the default left margin */
    padding-left:0; /* Remove the default left padding */
}
ol > li {
    position:relative; /* Create a positioning context */
    margin:0 0 10px 2em; /* Give each list item a left margin to make room for the numbers */
    padding:10px 80px; /* Add some spacing around the content */
    list-style:none; /* Disable the normal item numbering */
    border-top:2px solid #317EAC;
    background:rgba(49, 126, 172, 0.1);
}
ol > li:before {
    content:"Exercise " counter(li); /* Use the counter as content */
    counter-increment:li; /* Increment the counter by 1 */
    /* Position and style the number */
    position:absolute;
    top:-2px;
    left:-2em;
    -moz-box-sizing:border-box;
    -webkit-box-sizing:border-box;
    box-sizing:border-box;
    width:7em;
    /* Some space between the number and the content in browsers that support
       generated content but not positioning it (Camino 2 is one example) */
    margin-right:8px;
    padding:4px;
    border-top:2px solid #317EAC;
    color:#fff;
    background:#317EAC;
    font-weight:bold;
    font-family:"Helvetica Neue", Arial, sans-serif;
    text-align:center;
}
li ol,
li ul {margin-top:6px;}
ol ol li:last-child {margin-bottom:0;}

.oyo ul {
    list-style-type:decimal;
}

hr {
    border: 1px solid #357FAA;
}

div#boxedtext {
    background-color: rgba(86, 155, 189, 0.2);
    padding: 20px;
    margin-bottom: 20px;
    font-size: 10pt;
}

div#template {
    margin-top: 30px;
    margin-bottom: 30px;
    color: #808080;
    border:1px solid #808080;
    padding: 10px 10px;
    background-color: rgba(128, 128, 128, 0.2);
    border-radius: 5px;
}

div#license { 
    margin-top: 30px;
    margin-bottom: 30px;
    color: #4C721D;
    border:1px solid #4C721D;
    padding: 10px 10px;
    background-color: rgba(76, 114, 29, 0.2);
    border-radius: 5px;
}

Solution

  • If someone faces the same question, this is the solution.

    In the CSS file, start the commands with a specific string (below) and then, on Markdown, use the div notation. Such as:

    <div class="question">
    1. My first question 
    1. My second question
    </div>
    
      /* -----------Question counter ---------*/
    
      body {
        counter-reset: li;
      }
     h1 {
        font-family:Arial, Helvetica, sans-serif;
        font-weight:bold;
     }
    
     h2 {
        font-family:Arial, Helvetica, sans-serif;
        font-weight:bold;
        margin-top: 24px;
     }
      .question ol {
        margin-left:0; /* Remove the default left margin */
        padding-left:0; /* Remove the default left padding */
      }
    
      .question ol>li {
        position:relative; /* Create a positioning context */
        margin:0 0 10px 2em; /* Give each list item a left margin to make room for the numbers */
        padding:10px 80px; /* Add some spacing around the content */
        list-style:none; /* Disable the normal item numbering */
        border-top:2px solid #317EAC;
        background:rgba(49, 126, 172, 0.1);
      }
    
      .question ol>li:before,
      .question ol>p>li:before {
        content:"Questão " counter(li); /* Use the counter as content */
        counter-increment:li; /* Increment the counter by 1 */
        /* Position and style the number */
        position:absolute;
        top:-2px;
        left:-2em;
        -moz-box-sizing:border-box;
        -webkit-box-sizing:border-box;
        box-sizing:border-box;
        width:7em;
        /* Some space between the number and the content in browsers that support
           generated content but not positioning it (Camino 2 is one example) */
        margin-right:8px;
        padding:4px;
        border-top:2px solid #317EAC;
        color:#fff;
        background:#317EAC;
        font-weight:bold;
        font-family:"Helvetica Neue", Arial, sans-serif;
        text-align:center;
      }
    
      .question ol ol {
        counter-reset: subitem;
      }
    
      .question li ol,
      .question li ul {margin-top:6px;}
      .question ol ol li:last-child {margin-bottom:0;}