CINXE.COM
Duke Collaboratory for Classics Computing (DC3) - a collection of parts flying in loose formation
<!DOCTYPE html> <!--[if IE 7]> <html class="ie ie7" lang="en-US"> <![endif]--> <!--[if !(IE 7) | !(IE 8) ]><!--> <html lang="en-US"> <!--<![endif]--> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> <meta name="viewport" content="width=device-width"> <title>Duke Collaboratory for Classics Computing (DC3) - a collection of parts flying in loose formation</title> <link rel="profile" href="//gmpg.org/xfn/11"> <link rel="pingback" href="https://blogs.library.duke.edu/dcthree/xmlrpc.php"> <!--[if lt IE 9]> <script src="https://blogs.library.duke.edu/dcthree/wp-content/themes/twentyfourteen/js/html5.js"></script> <![endif]--> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- This site is optimized with the Yoast SEO plugin v24.6 - https://yoast.com/wordpress/plugins/seo/ --> <meta name="description" content="a collection of parts flying in loose formation" /> <link rel="canonical" href="https://blogs.library.duke.edu/dcthree/" /> <link rel="next" href="https://blogs.library.duke.edu/dcthree/page/2/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="website" /> <meta property="og:title" content="Duke Collaboratory for Classics Computing (DC3)" /> <meta property="og:description" content="a collection of parts flying in loose formation" /> <meta property="og:url" content="https://blogs.library.duke.edu/dcthree/" /> <meta property="og:site_name" content="Duke Collaboratory for Classics Computing (DC3)" /> <meta name="twitter:card" content="summary_large_image" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://blogs.library.duke.edu/dcthree/","url":"https://blogs.library.duke.edu/dcthree/","name":"Duke Collaboratory for Classics Computing (DC3) - a collection of parts flying in loose formation","isPartOf":{"@id":"https://blogs.library.duke.edu/dcthree/#website"},"description":"a collection of parts flying in loose formation","breadcrumb":{"@id":"https://blogs.library.duke.edu/dcthree/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://blogs.library.duke.edu/dcthree/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://blogs.library.duke.edu/dcthree/#website","url":"https://blogs.library.duke.edu/dcthree/","name":"Duke Collaboratory for Classics Computing (DC3)","description":"a collection of parts flying in loose formation","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://blogs.library.duke.edu/dcthree/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script> <!-- / Yoast SEO plugin. --> <link rel="alternate" type="application/rss+xml" title="Duke Collaboratory for Classics Computing (DC3) » Feed" href="https://blogs.library.duke.edu/dcthree/feed/" /> <link rel="alternate" type="application/rss+xml" title="Duke Collaboratory for Classics Computing (DC3) » Comments Feed" href="https://blogs.library.duke.edu/dcthree/comments/feed/" /> <script> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blogs.library.duke.edu\/dcthree\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.2"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='twentyfourteen-lato-css' href='https://blogs.library.duke.edu/dcthree/wp-content/themes/twentyfourteen/fonts/font-lato.css?ver=20230328' media='all' /> <link rel='stylesheet' id='genericons-css' href='https://blogs.library.duke.edu/dcthree/wp-content/themes/twentyfourteen/genericons/genericons.css?ver=3.0.3' media='all' /> <link rel='stylesheet' id='twentyfourteen-style-css' href='https://blogs.library.duke.edu/dcthree/wp-content/themes/dul-2014/style.css?ver=20241112' media='all' /> <link rel='stylesheet' id='twentyfourteen-block-style-css' href='https://blogs.library.duke.edu/dcthree/wp-content/themes/twentyfourteen/css/blocks.css?ver=20240708' media='all' /> <!--[if lt IE 9]> <link rel='stylesheet' id='twentyfourteen-ie-css' href='https://blogs.library.duke.edu/dcthree/wp-content/themes/twentyfourteen/css/ie.css?ver=20140711' media='all' /> <![endif]--> <style id='akismet-widget-style-inline-css'> .a-stats { --akismet-color-mid-green: #357b49; --akismet-color-white: #fff; --akismet-color-light-grey: #f6f7f7; max-width: 350px; width: auto; } .a-stats * { all: unset; box-sizing: border-box; } .a-stats strong { font-weight: 600; } .a-stats a.a-stats__link, .a-stats a.a-stats__link:visited, .a-stats a.a-stats__link:active { background: var(--akismet-color-mid-green); border: none; box-shadow: none; border-radius: 8px; color: var(--akismet-color-white); cursor: pointer; display: block; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif; font-weight: 500; padding: 12px; text-align: center; text-decoration: none; transition: all 0.2s ease; } /* Extra specificity to deal with TwentyTwentyOne focus style */ .widget .a-stats a.a-stats__link:focus { background: var(--akismet-color-mid-green); color: var(--akismet-color-white); text-decoration: none; } .a-stats a.a-stats__link:hover { filter: brightness(110%); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16); } .a-stats .count { color: var(--akismet-color-white); display: block; font-size: 1.5em; line-height: 1.4; padding: 0 13px; white-space: nowrap; } </style> <script src="https://blogs.library.duke.edu/dcthree/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script src="https://blogs.library.duke.edu/dcthree/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script src="https://blogs.library.duke.edu/dcthree/wp-content/themes/twentyfourteen/js/functions.js?ver=20230526" id="twentyfourteen-script-js" defer data-wp-strategy="defer"></script> <link rel="https://api.w.org/" href="https://blogs.library.duke.edu/dcthree/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blogs.library.duke.edu/dcthree/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.2" /> <link href='//fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic' rel='stylesheet' type='text/css'> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//analytics.lib.duke.edu/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '28']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> </head> <body class="home blog wp-embed-responsive group-blog header-image list-view full-width grid"> <div id="page" class="hfeed site"> <div id="site-header"> <a href="https://blogs.library.duke.edu/dcthree/" rel="home"> <img alt="Duke Collaboratory for Classics Computing (DC3)" src="https://blogs.library.duke.edu/dcthree/files/2014/11/dc3.jpg" width="1260" height="200" alt=""> </a> </div> <div id="library_logo"><a href="//library.duke.edu" title="Duke University Libraries"><img src="/wp-content/themes/dul-2014/images/library_logo_transparent.png" alt="Duke University Libraries" border="0"></a></div> <nav id="primary-navigation" class="site-navigation primary-navigation" role="navigation"> <button class="menu-toggle">Primary Menu</button> <a class="screen-reader-text skip-link" href="#content">Skip to content</a> <div class="menu-main-container"><ul id="menu-main" class="nav-menu"><li id="menu-item-235" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-235"><a href="https://blogs.library.duke.edu/dcthree/partners/">Partners</a></li> <li id="menu-item-236" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-236"><a href="https://blogs.library.duke.edu/dcthree/people/">People</a></li> <li id="menu-item-237" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-237"><a href="https://blogs.library.duke.edu/dcthree/projects/">Projects</a></li> </ul></div> </nav> <div id="main" class="site-main"> <div id="main-content" class="main-content"> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <article id="post-296" class="post-296 post type-post status-publish format-standard hentry category-blog-posts"> <header class="entry-header"> <div class="entry-meta"> <span class="cat-links"><a href="https://blogs.library.duke.edu/dcthree/category/blog-posts/" rel="category tag">blog posts</a></span> </div> <h1 class="entry-title"><a href="https://blogs.library.duke.edu/dcthree/2018/01/10/digital-servius/" rel="bookmark">Digital Servius</a></h1> <div class="entry-meta"> <span class="entry-date"><a href="https://blogs.library.duke.edu/dcthree/2018/01/10/digital-servius/" rel="bookmark"><time class="entry-date" datetime="2018-01-10T10:29:39-05:00">January 10, 2018</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="https://blogs.library.duke.edu/dcthree/author/hac13duke-edu/" rel="author">Hugh Cayless</a></span></span> <span class="comments-link"><a href="https://blogs.library.duke.edu/dcthree/2018/01/10/digital-servius/#respond">Leave a comment</a></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Focoins.info%3Agenerator&rft.title=Digital+Servius&rft.aulast=Cayless&rft.aufirst=Hugh&rft.subject=blog+posts&rft.source=Duke+Collaboratory+for+Classics+Computing+%28DC3%29&rft.date=2018-01-10&rft.type=blogPost&rft.format=text&rft.identifier=https://blogs.library.duke.edu/dcthree/2018/01/10/digital-servius/&rft.language=English"></span> <p>The paper linked below is the text of what should have been the paper I delivered at the 2018 AIA/SCS annual meeting. Unfortunately, the conference’s start date coincided with the arrival of the “bomb cyclone” nicknamed Grayson in Boston, which curtailed pretty much all travel up the Eastern seaboard of the United States. It sounds like it was a fantastic meeting, and I was very sorry to miss it.</p> <p>The paper was written for delivery to an audience of Classicists who know little about TEI, but I think it will be accessible to anyone with a bit of background. So an introduction is in order. The panel was titled “New Age Servius”. Who was Servius, and why should you care? <a href="https://www.britannica.com/biography/Servius">Maurus Servius Honoratus</a> was a 4th/5th century grammarian, an ancient scholar, who wrote a commentary on the works of Vergil. So he’s interesting as an example of ancient scholarship, and also because his commentary preserves lots of knowledge about Roman religion, history, culture and language, as well as quotes from otherwise lost works. The commentary is also interesting because we have it in two distinct versions, the shorter version of Servius and a longer version which compiles Servius’s entries with others, many from another commentary, which may be the one by <a href=""https://www.britannica.com/biography/Aelius-Donatus">Aelius Donatus</a>, otherwise lost. The medieval compiler has done more than just mash these texts together: stylistic alterations have been made to make the new text flow better, and some of Servius’s entries have been trimmed. The longer version is known as Servius Auctus or Servius Danielis (Daniel’s Servius) from Pierre Daniel, who first published it in 1600. In the paper, I refer to the shorter version as “Servius” and the longer as “DS”. Since this was meant for oral delivery, I thought there would be less chance of confusing both myself and the audience by maintaining a strong aural distinction between the two.</p> <p>The history of editions of Servius is a bit fraught. The only complete edition is Thilo’s (<a href="https://archive.org/stream/serviigrammatici01bons#page/4/mode/2up">vol. 1 from Archive.org</a>) from the 19th century. It combines the two texts into a single one, indicating with italics where text comes only from DS. Combining the texts in this way can’t help but do some violence to both, however. The series commonly known as the “Harvard Servius”, begun by E. K. Rand, who published volume 2 (Aeneid 1-2) in 1946, and continued by A. F. Stocker and A. T. Travis with volume 3 (Aeneid 3–5), 1965, attempted to represent both, but to format the texts in such a way that it was easy to tell what text belongs to DS and what to Servius. P. K. Marshall worked on volume 4 (Aeneid 6–8), and C. E. Murgia on volume 5 (Aeneid 9–12). Sadly, neither lived to see the work to its conclusion. Robert Kaster collected Murgia’s papers and has completed work on assembling them into a publishable text. This is the work my paper refers to. James Brusuelas, who was also to present on the canceled panel, is working with Marshall’s text of the commentary to Aeneid 6.</p> <p>The Harvard Servius presents the text full-width on the page where Servius and DS agree, prints DS-only text 3/4-width and flush left, Servius-only text 3/4-width and indented 1/4, and where both have text but it doesn’t agree, it is printed in 2 columns, DS on the left and Servius on the right. So Servius is interesting from a technical perspective too. Figuring out the best way to mark it up is challenging and likewise figuring out how best to render it.</p> <p style="text-align: center; font-style: italic;"><img decoding="async" title="Harvard Servius 3.8-9" src="https://hcayless.github.io/digital-servius-SCS/images/servius3.8-9.png" /><br /> An example page from volume 3 of the Harvard Servius</p> <p>To accompany the paper, I worked up some demos. The <a href="https://hcayless.github.io/digital-servius-SCS/servius.html#line10">first</a> shows a snippet of Murgia-Kaster’s Servius from the beginning of book 9, the <a href="https://hcayless.github.io/digital-servius-SCS/servius-S.html#line10">second</a> and <a href="https://hcayless.github.io/digital-servius-SCS/servius-DS.html#line10">third</a> show how easy it is to produce either Servius-only or DS-only versions of the text. Only the CSS and a little bit of Javascript are different in the three views. All 3 are generated on the fly in your browser from a single XML source using <a href="https://github.com/TEIC/CETEIcean">CETEIcean</a> plus some extra Javascript. None of this should be regarded as final. There are still features of Murgia-Kaster that I haven’t decided how to represent, and other aspects of the markup that have yet to be finalized. I’m still inserting critical apparatus entries into the source, so it’s not fully populated at the time of writing. I will be updating it.</p> <p><a href="https://hcayless.github.io/digital-servius-SCS/digital-servius.html">Modeling Servius for the Digital Latin Library</a></p> </div><!-- .entry-content --> </article><!-- #post-296 --> <nav class="navigation paging-navigation"> <h1 class="screen-reader-text"> Posts navigation </h1> <div class="pagination loop-pagination"> <span aria-current="page" class="page-numbers current">1</span> <a class="page-numbers" href="https://blogs.library.duke.edu/dcthree/page/2/">2</a> <span class="page-numbers dots">…</span> <a class="page-numbers" href="https://blogs.library.duke.edu/dcthree/page/20/">20</a> <a class="next page-numbers" href="https://blogs.library.duke.edu/dcthree/page/2/">Next →</a> </div><!-- .pagination --> </nav><!-- .navigation --> </div><!-- #content --> </div><!-- #primary --> </div><!-- #main-content --> <div id="secondary"> <h2 class="site-description">a collection of parts flying in loose formation</h2> <div id="primary-sidebar" class="primary-sidebar widget-area" role="complementary"> <aside id="text-2" class="widget widget_text"><h1 class="widget-title">About</h1> <div class="textwidget">The Duke Collaboratory for Classics Computing, the DC3, is a no-nonsense, interdisciplinary, results-oriented research group devoted to the creation and care of standards, services, and tooling for digital classics and beyond. We aim to be flexible, durable, and to leverage the strengths of our many partnerships so as to be a collection of parts flying in loose formation. Like the plane. <p> <p>The DC3 manages papyri.info data and tooling, experiments in the development of new complementary resources, and engages in teaching and outreach at Duke and beyond.</div> </aside><aside id="search-3" class="widget widget_search"><h1 class="widget-title">Search the DC3 Blog</h1><form role="search" method="get" class="search-form" action="https://blogs.library.duke.edu/dcthree/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> </label> <input type="submit" class="search-submit" value="Search" /> </form></aside> <aside id="recent-posts-2" class="widget widget_recent_entries"> <h1 class="widget-title">Recent Posts</h1><nav aria-label="Recent Posts"> <ul> <li> <a href="https://blogs.library.duke.edu/dcthree/2018/01/10/digital-servius/">Digital Servius</a> <span class="post-date">January 10, 2018</span> </li> <li> <a href="https://blogs.library.duke.edu/dcthree/2016/08/04/theres-new-whale-town/">There’s a new whale in town</a> <span class="post-date">August 4, 2016</span> </li> <li> <a href="https://blogs.library.duke.edu/dcthree/2016/02/04/harpokration-done-but-not-even-almost/">Harpokration, done but not even almost.</a> <span class="post-date">February 4, 2016</span> </li> <li> <a href="https://blogs.library.duke.edu/dcthree/2015/05/26/harpokration-on-line/">Harpokration On Line</a> <span class="post-date">May 26, 2015</span> </li> <li> <a href="https://blogs.library.duke.edu/dcthree/2015/04/02/text-of-shifting-frontiers-in-the-digital-humanities/">Text of “Shifting Frontiers in the Digital Humanities”</a> <span class="post-date">April 2, 2015</span> </li> </ul> </nav></aside><aside id="archives-3" class="widget widget_archive"><h1 class="widget-title">Archives</h1><nav aria-label="Archives"> <ul> <li><a href='https://blogs.library.duke.edu/dcthree/2018/01/'>January 2018</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2016/08/'>August 2016</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2016/02/'>February 2016</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2015/05/'>May 2015</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2015/04/'>April 2015</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2015/03/'>March 2015</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2014/09/'>September 2014</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2014/08/'>August 2014</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2014/02/'>February 2014</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2013/12/'>December 2013</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2013/11/'>November 2013</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2013/08/'>August 2013</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2013/07/'>July 2013</a></li> <li><a href='https://blogs.library.duke.edu/dcthree/2013/06/'>June 2013</a></li> </ul> </nav></aside> </div><!-- #primary-sidebar --> </div><!-- #secondary --> </div><!-- #main --> <footer id="colophon" class="site-footer" role="contentinfo"> <div class="site-info"> <a href="https://blogs.library.duke.edu/dcthree/" rel="home">Duke Collaboratory for Classics Computing (DC3)</a> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> </body> </html>