<!DOCTYPE html><html><head><title>R: An Rd Regression Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.3/dist/katex.min.css">
<script type="text/javascript">
const macros = { "\\R": "\\textsf{R}", "\\code": "\\texttt"};
function processMathHTML() {
    var l = document.getElementsByClassName('reqn');
    for (let e of l) { katex.render(e.textContent, e, { throwOnError: false, macros }); }
    return;
}</script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.3/dist/katex.min.js"
    onload="processMathHTML();"></script>
<link rel="stylesheet" type="text/css" href="R.css" />
</head><body><div class="container">

<table width="100%"><tr><td>testit</td><td style="text-align: right;">R Documentation</td></tr></table>

<h2>An Rd Regression Test</h2>

<h3>Usage</h3>

<pre><code class='language-R'>\x \y %{}

foo(<var>x</var>, <var>y</var>)
</code></pre>


<h3>Details</h3>

<p>Escaped backslash <code>\x</code>.
</p>
<p><code>%{}</code>
</p>
<p>a link and one to a known destination:
weighted.mean
</p>
<p>var in <var>text</var>.
</p>
<p><code>foo(<var>x</var>, <var>y</var>)</code>.
</p>
<pre>
  Escaped backslash \x.

  %{}

  var in \var{text}.
  
  foo(\var{x}, \var{y}).
  
  From gap: pedtodot.Rd -- n=split(m,par,"\034") 
  </pre>
<p>Yihui Xie's example:
</p>
<dl>
<dt>def</dt><dd><p>ghi</p>
</dd></dl>



<h3>Examples</h3>

<pre><code class='language-R'>\x
%{}
foo(<var>x</var>, <var>y</var>)
</code></pre>


</div>
</body></html>
