<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>S.J. Huskey&#39;s Blog</title>
  <subtitle>I post about technical issues and problems that I run into while building, using, and maintaining various digital resources, mostly to keep a record for myself of how I solved them. If that information helps someone else, all the better!</subtitle>
  <type>atom</type>
  <link href="https://sjhuskey.info/feed/feed.xml" rel="self" />
  <link href="" />
  <updated>2025-07-30T00:00:00Z</updated>
  <id>https://sjhuskey.info/feed/feed.xml</id>
  <language>en</language>
  <author>
    <name>Samuel J. Huskey</name>
    <email>huskey@ou.edu</email>
  </author> 
  <entry>
    <title>Git for Digital Humanities</title>
    <link href="https://sjhuskey.info/posts/git-for-dh/" />
    <updated>2025-07-30T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/git-for-dh/</id>
    <content type="html">&lt;p&gt;Version control is not only for keeping track of research data and files; it is also a potential safeguard against loss of information and a vital component in making research reproducible and, if done well, understandable.&lt;/p&gt;
&lt;p&gt;Here are some tips I have developed for myself over the years:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Every DH research project should employ the distributed version control system &lt;a href=&quot;https://git-scm.com/&quot;&gt;Git&lt;/a&gt; for code and, in a separate repository, data.
&lt;ul&gt;
&lt;li&gt;Concerns about the size of the dataset and its content (e.g., whether it contains protected, private, sensitive, or proprietary information) must dictate how the dataset is tracked.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://git-lfs.com/&quot;&gt;Git LFS&lt;/a&gt; for tracking large files (audio, video, large datasets, etc.).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;.gitignore&lt;/code&gt; file should be used judiciously to prevent sensitive, protected, or proprietary knowledge from being tracked by Git and pushed to remote repositories. A useful collection of ready-made &lt;code&gt;.gitignore&lt;/code&gt; files can be found at &lt;a href=&quot;https://github.com/github/gitignore&quot;&gt;https://github.com/github/gitignore&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Exercise great caution when tracking private or sensitive information with Git. If protected data is included in even one commit, it will be discoverable if the repository is publicly shared—even if the file is removed from later commits. Never fear, though. You can use &lt;a href=&quot;https://github.com/newren/git-filter-repo&quot;&gt;git-filter-repo&lt;/a&gt; to, well, filter that mistake out of all commits and tags in your repo. You can also do &lt;a href=&quot;https://stackoverflow.com/questions/8740187/git-how-to-remove-file-from-historical-commit/8741530#8741530&quot;&gt;this&lt;/a&gt;, but it&#39;s riskier.&lt;/li&gt;
&lt;li&gt;Every Git repository should have a &lt;code&gt;README.md&lt;/code&gt; file that provides basic information about the project.&lt;/li&gt;
&lt;li&gt;Every Git repository should have a license clearly indicating whether the content can be shared, reused, repurposed, etc. The site &lt;a href=&quot;https://choosealicense.com/&quot;&gt;https://choosealicense.com/&lt;/a&gt; is a good resource for determining which license is appropriate.&lt;/li&gt;
&lt;li&gt;Code repositories should include files (e.g., &lt;code&gt;requirements.txt&lt;/code&gt;, &lt;code&gt;environment.yml&lt;/code&gt;) that enable other researchers to use the same software versions that were used in the original project.&lt;/li&gt;
&lt;li&gt;Commit messages should be thought of as a research journal, containing consistent and clear language. The &lt;a href=&quot;https://www.conventionalcommits.org/en/v1.0.0/&quot;&gt;Conventional Commits&lt;/a&gt; standard is worth following.e Not to toot my own horn, but &lt;a href=&quot;https://link.springer.com/article/10.1007/s42803-023-00076-9&quot;&gt;I wrote an article on this subject&lt;/a&gt;. Don&#39;t follow this example: &lt;a href=&quot;https://xkcd.com/1296/&quot;&gt;https://xkcd.com/1296/&lt;/a&gt; 😉.&lt;/li&gt;
&lt;li&gt;Milestones in the project should have annotated tags that follow an obvious system (e.g., &lt;a href=&quot;https://semver.org/&quot;&gt;Semantic Versioning&lt;/a&gt;), and those tags should be pushed to the remote repository.&lt;/li&gt;
&lt;li&gt;Major milestones should be &lt;a href=&quot;https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content&quot;&gt;made citable&lt;/a&gt; with a service such as &lt;a href=&quot;https://zenodo.org/&quot;&gt;Zenodo&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Each project should have a remote repository on a platform such as &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;https://gitlab.com/&quot;&gt;GitLab&lt;/a&gt;, or ideally an institutional repository.&lt;/li&gt;
&lt;li&gt;Remote repositories should be set to private if they contain any information that should not be publicly available.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/@6heinz3r?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&quot;&gt;Gabriel Heinzer&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/photos/a-close-up-of-a-computer-screen-with-a-bunch-of-words-on-it-EUzk9BIEq6M?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Wrestling with Solr on Docker</title>
    <link href="https://sjhuskey.info/posts/wrestling-with-solr/" />
    <updated>2024-07-31T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/wrestling-with-solr/</id>
    <content type="html">&lt;p&gt;Every time I install and configure Apache Solr for a Drupal site, I find myself bogged down in a variety of issues, so I thought it would be helpful (if only to me) to record what I gleaned from the latest instance.&lt;/p&gt;
&lt;h2&gt;My History with Solr&lt;/h2&gt;
&lt;p&gt;My first experience with Solr was on the original Digital Latin Library Catalog site, which was on Drupal 7. I preparation for working with it, I read the extensive &lt;a href=&quot;https://solr.apache.org/guide/solr/latest/index.html&quot;&gt;documentation&lt;/a&gt;. With all its talk of &lt;a href=&quot;https://zookeeper.apache.org/&quot;&gt;zookeepers&lt;/a&gt;, my confusion and trepidation grew quickly. Then I realized that Drupal&#39;s &lt;a href=&quot;https://www.drupal.org/project/search_api_solr&quot;&gt;Search API Solr module&lt;/a&gt; took care of most, but certainly not all, of the difficulties. I still had to install and configure Solr, but I eventually managed to get it up and running. I wish that I had documented all the steps back then, but I was so relieved to have made progress that I moved on to something else.&lt;/p&gt;
&lt;p&gt;My second experience with Solr was when I enhanced the search features on the website of the &lt;a href=&quot;https://classicalstudies.org/&quot;&gt;Society for Classical Studies&lt;/a&gt;. Since I am not the system administrator for the SCS, we paid the hosting company (the heroic and wonderful folks at &lt;a href=&quot;https://www.esosoft.com/&quot;&gt;EsoSoft&lt;/a&gt;) to spin up a Solr server. They opted to install Solr as a &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; container, so I had the opportunity to learn about managing Solr via &lt;code&gt;docker&lt;/code&gt; commands. I wish that I had documented that experience, too, but I was eager to move on after I had a working setup.&lt;/p&gt;
&lt;p&gt;When I started using the super-awesome &lt;a href=&quot;https://ddev.com/&quot;&gt;DDEV&lt;/a&gt; for local development, I had to work with Solr again as a Docker container. In this instance, I did take the time to &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-10/&quot;&gt;document the process&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that I have finished &lt;a href=&quot;https://sjhuskey.info/posts/drupal-7-to-drupal-10/&quot;&gt;migrating the content of the DLL&#39;s Catalog site from Drupal 7 to Drupal 10&lt;/a&gt; and &lt;a href=&quot;https://sjhuskey.info/posts/drupal-7-to-drupal-10/&quot;&gt;rebuilding its theme&lt;/a&gt;, I need to move the site to my production server, and that involves upgrading Solr. Having learned my lesson from previous experiences, I&#39;m going to document the process here.&lt;/p&gt;
&lt;h2&gt;Upgrading or Reinstalling Solr?&lt;/h2&gt;
&lt;p&gt;Since the server is currently configured for a Drupal 7 site, Solr wasn&#39;t the only item in need of an upgrade. I had to upgrade PHP, MariaDB, and Java, among other things. Fortunately, the &lt;code&gt;dnf&lt;/code&gt; package manager made quick work of that.&lt;/p&gt;
&lt;p&gt;I tried simply upgrading Solr, but I ran into a mess of conflicts and permissions issues, so I decided to uninstall it, remove it, and start with a clean slate. I had a decision to make: run Solr as an application on the server or as a Docker container? The latter has a lot to recommend it, particularly when it comes to maintenance and upkeep, so I decided to install it that way.&lt;/p&gt;
&lt;h2&gt;Solr in Docker&lt;/h2&gt;
&lt;p&gt;Apache&#39;s &lt;a href=&quot;https://solr.apache.org/guide/solr/latest/deployment-guide/solr-in-docker.html&quot;&gt;documentation on Solr in Docker&lt;/a&gt; is pretty good, as is the &lt;a href=&quot;https://www.drupal.org/docs/extending-drupal/contributed-modules/contributed-module-documentation/search-api-solr&quot;&gt;documentation for the Search API Solr module&lt;/a&gt;. But there are definitely gaps here and there, and I spent more hours than I care to admit trying to figure out how to fill them. It was a &amp;quot;non-trivial&amp;quot; number of hours. That&#39;s all I will say.&lt;/p&gt;
&lt;h3&gt;Installing Docker and Solr&lt;/h3&gt;
&lt;p&gt;To run Solr in Docker, you obviously need to have Docker on your server. That&#39;s easy. I&#39;m using a Red Hat Linux server, so the &lt;code&gt;dnf&lt;/code&gt; package manager can take care of it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure that &lt;code&gt;dnf&lt;/code&gt; can find the Docker repository: &lt;code&gt;sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install Docker, et al.: &lt;code&gt;sudo dnf install -y docker-ce docker-ce-cli containerd.io&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Start Docker: &lt;code&gt;sudo systemctl start docker&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enable Docker (i.e., make sure that it will start automatically after rebooting): &lt;code&gt;sudo systemctl enable docker&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Grabbing the &lt;a href=&quot;https://hub.docker.com/_/solr/&quot;&gt;official Docker Solr image&lt;/a&gt; is not difficult, either: &lt;code&gt;sudo docker pull solr:9.6.1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Okay, I have all the components. Now what?&lt;/p&gt;
&lt;p&gt;This is where the documentation becomes opaque, at least for me. It&#39;s clear enough if you just need to start a Solr server and get to work. If you need Drupal to connect to your Solr server, you have to hold your mouth just right. At least it seems that way.&lt;/p&gt;
&lt;p&gt;The Search API Solr module makes you put the cart before the horse, as it were. That is, you have to create a server first, then connect Drupal to it. Only then can you download a configuration set and create the Solr core that you need to start indexing content.&lt;/p&gt;
&lt;p&gt;So, the first step is to create a Solr server.&lt;/p&gt;
&lt;h3&gt;Creating a Solr Server&lt;/h3&gt;
&lt;p&gt;In the following steps, the Solr server I&#39;m creating is &lt;code&gt;dllsolr&lt;/code&gt;, and the core is &lt;code&gt;dllcatsolr&lt;/code&gt;. You should be able to substitute your own values for those.&lt;/p&gt;
&lt;p&gt;Since I&#39;m going to run Solr in a Docker container, I need to use a &lt;code&gt;docker&lt;/code&gt; command to create it: &lt;code&gt;docker run -d -p 8983:8983 --name dllsolr solr&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I&#39;ll break that down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker run&lt;/code&gt; is the command to create and run a container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt; causes the container to run in the background&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p 8983:8983&lt;/code&gt; maps the container to port 8983, which is the port often used for Solr&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--name dllsolr&lt;/code&gt; gives the container the name &lt;code&gt;dllsolr&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;solr&lt;/code&gt; tells Docker to use the Solr image that I downloaded earlier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After running that command, Solr was running as a Docker container. Great! But Drupal wasn&#39;t able to connect to it because the Search API Solr module expects to use a username and password. To satisfy that requirement, I need to secure Solr with a &lt;code&gt;security.json&lt;/code&gt; file.&lt;/p&gt;
&lt;h3&gt;Securing Solr&lt;/h3&gt;
&lt;p&gt;Fortunately, the DLL Catalog doesn&#39;t need most of the &lt;a href=&quot;https://solr.apache.org/guide/solr/latest/deployment-guide/securing-solr.html&quot;&gt;robust security measures available&lt;/a&gt;. I just need to add a &lt;code&gt;security.json&lt;/code&gt; file to set up Basic Authentication. But even that&#39;s not a trivial affair.&lt;/p&gt;
&lt;p&gt;At a minimum, a &lt;code&gt;security.json&lt;/code&gt; file should look like this:&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token property&quot;&gt;&quot;authentication&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;class&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;solr.BasicAuthPlugin&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;credentials&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;solr&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c=&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token property&quot;&gt;&quot;authorization&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;class&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;solr.RuleBasedAuthorizationPlugin&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;permissions&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;security-edit&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;         &lt;span class=&quot;token property&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;admin&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;user-role&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;solr&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;admin&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s directly from the &lt;a href=&quot;https://solr.apache.org/guide/solr/latest/deployment-guide/authentication-and-authorization-plugins.html#configuring-security-json&quot;&gt;Apache Solr documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The really important part is this:&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token property&quot;&gt;&quot;credentials&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;solr&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c=&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;   &lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the line that establishes the credentials (obviously) needed to log on to the Solr server and perform operations. It&#39;s pretty clear that &lt;code&gt;solr&lt;/code&gt; is meant to be the username, but the password needs some explaining. In this example, the password is actually &amp;quot;SolrRocks&amp;quot;. But it wouldn&#39;t be safe to put that in plain text, so it must be &amp;quot;hashed&amp;quot; first. And you can&#39;t use just any tool to hash the password. I tried using a Python script with the &lt;code&gt;bcrypt&lt;/code&gt; library to hash a password, but that didn&#39;t work. Well, it produced a hashed password, but it didn&#39;t work with Solr. I couldn&#39;t find any guidance in the Solr documentation about how to create the hash, so I did a search of the internet and found this wonderful tool: &lt;a href=&quot;https://clemente-biondo.github.io/&quot;&gt;https://clemente-biondo.github.io&lt;/a&gt;. (Bless you, Clemente Biondo, whoever you are!) This client-side tool allows you to enter a password of your choice into a form and get a hashed password and a template for using it in a &lt;code&gt;security.json&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Okay, now that I had a hashed password in a &lt;code&gt;security.json&lt;/code&gt; file, I had to get it into the Docker container. Here, again, you need to know a secret.&lt;/p&gt;
&lt;p&gt;It&#39;s easy to copy files to and from a Docker container. As long as you know the ID of the container, you just use &lt;code&gt;docker cp&lt;/code&gt;, as in &lt;code&gt;docker cp myfile.txt DOCKERID:/path/to/directory&lt;/code&gt;. But if you just do that, the file you copy won&#39;t have the correct permissions, and &lt;em&gt;there will be no way to change them or to remove the file after it is in the container&lt;/em&gt;. The answer is to use the &lt;code&gt;-a&lt;/code&gt; switch on &lt;code&gt;docker cp&lt;/code&gt;. That switch preserves (the &amp;quot;a&amp;quot; is for &amp;quot;archive&amp;quot;) everything about the file&#39;s permissions and ownership and prevents it from being changed by Docker.&lt;/p&gt;
&lt;p&gt;So, after hashing the password and adding it to &lt;code&gt;security.json&lt;/code&gt;, copy it into the Solr Docker container like this: &lt;code&gt;docker cp -a security.json 82fd162cad53:/var/solr/data&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I&#39;ll break that down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker cp&lt;/code&gt; tells Docker to copy something into or out of a container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt;: archive mode, to preserve the file&#39;s permissions from being modified by Docker&lt;/li&gt;
&lt;li&gt;&lt;code&gt;security.json&lt;/code&gt; is the name of the file to be copied from the server to the Docker container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;82fd162cad53:&lt;/code&gt; is the ID of the Docker container. The ID can be discovered by doing &lt;code&gt;docker ps&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/var/solr/data&lt;/code&gt; is the destination for the file in the Docker container.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, do &lt;code&gt;docker restart dllsolr&lt;/code&gt; to put the security measure into effect.&lt;/p&gt;
&lt;p&gt;Great! I have a Solr server running in a Docker container, and it is secured with basic authentication. Now I need to tell Drupal how to reach it.&lt;/p&gt;
&lt;h2&gt;Configure Search API Solr in Drupal&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Important, time-saving advice&lt;/strong&gt;: Before doing anything else, determine the IP address of the Docker container. This is a crucial piece of information for configuring Drupal to connect to the Solr server:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;docker inspect -f &quot;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;range &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NetworkSettings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Networks&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;IPAddress&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;end&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&quot; dllsolr&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copy the IP address into a text file and keep it on hand.&lt;/p&gt;
&lt;p&gt;Now, to start the process of creating a Solr &amp;quot;server&amp;quot; in Drupal, go to &lt;code&gt;/admin/config/search/search-api&lt;/code&gt; in the Drupal site. I put &amp;quot;server&amp;quot; in quotation marks because we&#39;ve already created the server. That&#39;s what everything above was about. It&#39;s more accurate to say that we&#39;re creating a connection to the Solr server.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &amp;quot;+Add server&amp;quot;&lt;/li&gt;
&lt;li&gt;Enter a name for the server&lt;/li&gt;
&lt;li&gt;Check the &amp;quot;Enabled&amp;quot; box (if it isn&#39;t already checked)&lt;/li&gt;
&lt;li&gt;Enter a description&lt;/li&gt;
&lt;li&gt;Select &amp;quot;Solr&amp;quot; as the Backend&lt;/li&gt;
&lt;li&gt;In &amp;quot;Configure Solr backend&amp;quot;, select &amp;quot;Basic Auth&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, in the &amp;quot;Configure Basic Auth Solr connector&amp;quot; submenu, do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;HTTP protocol&lt;/strong&gt;: http&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solr host&lt;/strong&gt;: Enter the IP address of the Docker container that you obtained earlier. You&#39;ll see some instructions that say you should enter &lt;code&gt;localhost&lt;/code&gt; here. That&#39;s true if you&#39;re running Solr as an application (i.e., not in a Docker container). But if you&#39;re running Solr in a Docker container, you need the IP address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solr port&lt;/strong&gt;: enter &amp;quot;8983&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solr path&lt;/strong&gt;: enter &amp;quot;/&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solr core&lt;/strong&gt;: enter the name of the core that you will create later. I&#39;m using &amp;quot;dllcatsolr&amp;quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Leave everything else as it is, except for the HTTP basic authentication fields. Here you should enter the username from your &lt;code&gt;security.json&lt;/code&gt; file (e.g., &amp;quot;solr&amp;quot;) and the actual password (i.e., NOT THE HASH in the &lt;code&gt;security.json&lt;/code&gt; file). If you entered &amp;quot;MYPASSWORD&amp;quot; in the hashing tool &lt;a href=&quot;https://clemente-biondo.github.io/&quot;&gt;https://clemente-biondo.github.io/&lt;/a&gt;, enter &amp;quot;MYPASSWORD&amp;quot; in the password field here.&lt;/p&gt;
&lt;p&gt;Click &amp;quot;Save&amp;quot;. If all goes well, you should see a message that the Solr server could be reached. The &lt;strong&gt;Core Connection&lt;/strong&gt; field, however, should say &amp;quot;The Solr core could not be accessed&amp;quot; (or something like that). That&#39;s because we still need to create a core on the Solr server.&lt;/p&gt;
&lt;h2&gt;Create a Solr Core&lt;/h2&gt;
&lt;p&gt;This is the most involved part of this whole process. The first step is to download a configuration set (&amp;quot;configset&amp;quot;):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;/admin/config/search/search-api&lt;/code&gt; in the Drupal UI&lt;/li&gt;
&lt;li&gt;Click the name of your server&lt;/li&gt;
&lt;li&gt;On the &amp;quot;View&amp;quot; page that should come up, click the button &amp;quot;+ Get config.zip&amp;quot; to download the configset (probably named something like &lt;code&gt;solr_9.x_config.zip&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you need to upload the configset to your the server that hosts your site and your Solr Docker container. I use &lt;code&gt;scp&lt;/code&gt; (&amp;quot;secure copy&amp;quot;) to do that: &lt;code&gt;scp solr_9.x_config.zip myuser@myserver:~/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;After logging on to your server:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make a new director called &amp;quot;conf&amp;quot;: &lt;code&gt;mkdir conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Unzip the configset to the &amp;quot;conf&amp;quot; directory: &lt;code&gt;unzip solr_9.x_config.zip -d conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy the &amp;quot;conf&amp;quot; directory to Solr&#39;s home directory (&lt;code&gt;/var/solr/data&lt;/code&gt;) in the Docker container: &lt;code&gt;docker cp -a conf 82fd162cad53:/var/solr/data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Restart the Docker container: &lt;code&gt;sudo systemctl restart dllsolr&lt;/code&gt; (replace &lt;code&gt;dllsolr&lt;/code&gt; with the name of your Solr Docker container)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now it&#39;s time to log on to the Solr Docker container and create the core:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log on to the Docker container: &lt;code&gt;docker exec -it dllsolr /bin/bash&lt;/code&gt; (replace &lt;code&gt;dllsolr&lt;/code&gt; with the name of your Solr Docker container)&lt;/li&gt;
&lt;li&gt;Create the core: &lt;code&gt;/opt/solr/bin/solr create_core -c dllcatsolr -d conf&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&#39;ll break that last line down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/opt/solr/bin/solr&lt;/code&gt;: This is the directory where Solr&#39;s commands are stored&lt;/li&gt;
&lt;li&gt;&lt;code&gt;create_core&lt;/code&gt;: This is one of the commands stored in &lt;code&gt;/opt/solr/bin/solr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c dllcatsolr&lt;/code&gt;: This tells Solr to name the core &amp;quot;dllcatsolr&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;d conf&lt;/code&gt;: This tells Solr to use the configset that you downloaded from your Drupal site and copied to the Solr Docker container&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If all goes well, you should now have a Solr core.&lt;/p&gt;
&lt;h2&gt;Make Sure Docker and Solr Restart Automatically&lt;/h2&gt;
&lt;p&gt;In the section on installing Docker above, I recommended doing &lt;code&gt;sudo systemctl enable docker&lt;/code&gt; to make sure that Docker restarts automatically whenever the server is rebooted. We need to update the Solr Docker container to tell it to restart automatically, too. That can be done with &lt;code&gt;docker update --restart always dllsolr&lt;/code&gt; (or whatever your Solr server is called). Now, both Docker and the Solr server should start up automatically whenever the system is rebooted.&lt;/p&gt;
&lt;h2&gt;Useful Commands&lt;/h2&gt;
&lt;p&gt;Some useful commands to know for managing Solr as a Docker container:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker ps&lt;/code&gt;: Shows the ID of any running containers and their status, among other things&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker exec -it dllsolr /bin/bash&lt;/code&gt;: Get access to the container&#39;s shell&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker logs dllsolr&lt;/code&gt;: Outputs all the log entries for your Solr server. The output can be reduced to the most recent entries by piping it to &lt;code&gt;tail&lt;/code&gt;: &lt;code&gt;docker logs dllsolr | tail&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;curl http://localhost:8983/solr/admin/info/system&lt;/code&gt;: Check the status of the Solr server&lt;/li&gt;
&lt;li&gt;&lt;code&gt;curl http://localhost:8983/solr/admin/cores&#92;?action&#92;=STATUS&#92;&amp;amp;core&#92;=&#92;dllcatsolr&lt;/code&gt;: Check the status of a core (the last value in the URL string)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, to find the IP address of the Docker container:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;docker inspect -f &quot;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;range &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NetworkSettings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Networks&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;IPAddress&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;end&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&#39; dllsolr&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Image credit: The Blue Whale of Catoosa. Photo by Carol M. Highsmith - &lt;a href=&quot;https://www.loc.gov/pictures/collection/highsm/item/2010630004/&quot;&gt;https://www.loc.gov/pictures/collection/highsm/item/2010630004/&lt;/a&gt;, Public Domain, &lt;a href=&quot;https://commons.wikimedia.org/w/index.php?curid=20572688&quot;&gt;https://commons.wikimedia.org/w/index.php?curid=20572688&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part XII: Styling the Search Page</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-12/" />
    <updated>2024-07-24T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-12/</id>
    <content type="html">&lt;p&gt;Now that I have a search view and a template for displaying it (&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-11/&quot;&gt;see part 11 of this series&lt;/a&gt;), I can begin styling it.&lt;/p&gt;
&lt;p&gt;Here is what that looks like without any styling:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-vergil-unthemed.png&quot; alt=&quot;Screenshot of search for Vergil, unthemed&quot; title=&quot;Search for Vergil, unthemed&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My goals are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To display the search form prominently in the center of the page&lt;/li&gt;
&lt;li&gt;To give the facets a background color and to remove the redundant bullets from the checkboxes&lt;/li&gt;
&lt;li&gt;To make the display of results tidier and easier to read&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#39;ll be working mostly in the &lt;code&gt;style.scss&lt;/code&gt; file to accomplish those goals.&lt;/p&gt;
&lt;h2&gt;Search Form&lt;/h2&gt;
&lt;p&gt;First I&#39;ll center the search form&#39;s heading. Using my browser&#39;s web developer tools, I see that it has the following classes: &lt;code&gt;views-exposed-form contextual-region block block-views block-views-exposed-filter-blockmain-solr-search-search&lt;/code&gt;. The last one is the most specific, so I&#39;ll use that:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.block-views-exposed-filter-blockmain-solr-search-search h2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I want to center the form. Using the web developer tools, I&#39;ll highlight the form and inspect its HTML and CSS. I see that the &lt;code&gt;div&lt;/code&gt; enclosing it is currently subject to this:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.form--inline .form-item&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Both the &lt;code&gt;float&lt;/code&gt; and &lt;code&gt;margin-right&lt;/code&gt; properties will interfere with any effort to center the form, so I&#39;ll need to override them. But I don&#39;t want to override them globally; I just want to override them in this one place. I&#39;ll do that by adding another one of the classes that I see on the &lt;code&gt;div&lt;/code&gt;: &lt;code&gt;form-type-search-api-autocomplete&lt;/code&gt;. Here&#39;s the CSS:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Centering the search box.*/&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.form--inline .form-item.form-type-search-api-autocomplete&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 75%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That takes care of the &lt;code&gt;float&lt;/code&gt;, and it uses the value of &lt;code&gt;auto&lt;/code&gt; on &lt;code&gt;margin-left&lt;/code&gt; and &lt;code&gt;margin-right&lt;/code&gt; to center the &lt;code&gt;div&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-form-center-1.png&quot; alt=&quot;Search form beginning to be centered&quot; title=&quot;Search form beginning to be centered&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The helper text inside the &lt;code&gt;input&lt;/code&gt; area is aligned to the left. It would look better aligned to the center. Since I don&#39;t want to style &lt;em&gt;all&lt;/em&gt; &lt;code&gt;input&lt;/code&gt; tags, I&#39;ll specify the &lt;code&gt;input&lt;/code&gt; tag inside of the &lt;code&gt;form&lt;/code&gt; with &lt;code&gt;id=&amp;quot;views-exposed-form-main-solr-search-search&amp;quot;&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Centering the search terms */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#views-exposed-form-main-solr-search-search input&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I&#39;ll deal with the &amp;quot;Go&amp;quot; button. After some experimentation, I found that I could control the placement of the button by setting &lt;code&gt;text-align&lt;/code&gt; on &lt;code&gt;form&lt;/code&gt; with &lt;code&gt;id=&amp;quot;views-exposed-form-main-solr-search-search&amp;quot;&lt;/code&gt; to &lt;code&gt;center&lt;/code&gt;. Since that is the same style for the search terms above, I can just add that selector to the existing style:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Centering the search terms and the &quot;Go&quot; button */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#views-exposed-form-main-solr-search-search,&lt;br /&gt;#views-exposed-form-main-solr-search-search input&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-form-center-2.png&quot; alt=&quot;Search form centered&quot; title=&quot;Search form centered&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cool! Now I can move on to styling the facets and the search results.&lt;/p&gt;
&lt;h2&gt;Facets&lt;/h2&gt;
&lt;p&gt;The first thing I want to do is set a background color for the facets. I like the light blue color that I used for the sidebar in the templates for my content types, so I&#39;ll use that. When I created the &lt;code&gt;page--search.html.twig&lt;/code&gt; template, I added the class &lt;code&gt;search-sidebar&lt;/code&gt; to the &lt;code&gt;div&lt;/code&gt; where the facets are placed. That means that I can set &lt;code&gt;background-color&lt;/code&gt; on that &lt;code&gt;div&lt;/code&gt;. I&#39;ll also give it some padding, so that the content isn&#39;t smooshed on all sides.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Search Sidebar (facets) */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.search-sidebar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ade0f2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem 0.5rem 1.5rem 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The way I&#39;ve handled &lt;code&gt;padding&lt;/code&gt; is shorthand, by the way, for setting &lt;code&gt;padding-top&lt;/code&gt;, &lt;code&gt;padding-right&lt;/code&gt;, &lt;code&gt;padding-bottom&lt;/code&gt;, and &lt;code&gt;padding-left&lt;/code&gt;, in that order (i.e., clockwise).&lt;/p&gt;
&lt;p&gt;I want the heading for the sidebar to be set off from the content, so I&#39;ll add a bottom border and some spacing:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Search sidebar h3 style */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.search-sidebar h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid thin grey&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.25rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I need to remove the redundant bullets from the checkboxes and adjust for their removal. I can do that by specifying that &lt;code&gt;li&lt;/code&gt; (list item) tags in the &lt;code&gt;div&lt;/code&gt; with class &lt;code&gt;search-sidebar&lt;/code&gt; should have their &lt;code&gt;display&lt;/code&gt; property set to &lt;code&gt;block&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Remove bullets from facet checkboxes */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.search-sidebar li&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While I&#39;m at it, I&#39;ll add some spacing to the &lt;code&gt;label&lt;/code&gt;, too:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Add some space between facet checkboxes and labels */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.search-sidebar label&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now my facets sidebar is looking better!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-sidebar-styled.png&quot; alt=&quot;Search sidebar styled&quot; title=&quot;Search sidebar styled&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On to the search results!&lt;/p&gt;
&lt;h2&gt;Search Results&lt;/h2&gt;
&lt;p&gt;I don&#39;t think the results require a lot of styling. To my admittedly untrained eye, the items in the list could benefit from a border to make them more distinct. I&#39;ll try adding a box shadow around them, too.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Search results */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#views-bootstrap-main-solr-search-search--2 article&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; thin solid grey&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0 5px &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.5&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The box-shadow might be over the top. I added it just as an example of what can be done with CSS. Here&#39;s a screenshot:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-styled-articles.png&quot; alt=&quot;Search articles styled&quot; title=&quot;Search articles styled&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;No, I don&#39;t like the box-shadow. Let&#39;s try giving a different background color to the odd items in the list. For this, I can use the &lt;code&gt;nth-of-type(odd)&lt;/code&gt; pseudo-class. Since every result is a list item (&lt;code&gt;li&lt;/code&gt;) in an unordered list (&lt;code&gt;ul&lt;/code&gt;), and since each list item has the class &lt;code&gt;list-group-item&lt;/code&gt;, I can apply a background color to the odd or even list items. For the record, I could also use a number (n) to specify every nth item. Here&#39;s what I ended up doing to give each odd item a grey background:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;// Grey background for odd items in the search results&lt;br /&gt;#views-bootstrap-main-solr-search-search--2 li.list-group-item:nth-of-type(odd)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #f6f7f8&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also added another facet and selected a lighter shade of blue for the sidebar. Here&#39;s a screenshot:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-grey-odd-item.png&quot; alt=&quot;Grey background for odd items&quot; title=&quot;Grey background for odd items&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;p&gt;I&#39;m by no means a CSS guru, but I hope that I&#39;ve demonstrated how powerful it is. With just a few properties and units in your toolbox, you can do quite a lot to change the look of your site.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part XI: Template for the Search Page</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-11/" />
    <updated>2024-07-22T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-11/</id>
    <content type="html">&lt;p&gt;After installing and configuring Solr and creating a search view and facets (&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-10/&quot;&gt;see part 10 of this series&lt;/a&gt;), I can begin building the search page and the view of results.&lt;/p&gt;
&lt;p&gt;To do that, I need to do create a &lt;code&gt;page--search.html.twig&lt;/code&gt; template, use Twig Tweak to place the relevant blocks in the template, and style the components with CSS.&lt;/p&gt;
&lt;h2&gt;Extending the Existing Page Template&lt;/h2&gt;
&lt;p&gt;When I created the search view, I specified the path as &lt;code&gt;/search&lt;/code&gt;. When I navigate to that page in my browser and inspect it with the web developer tools, I can see that Twig&#39;s file name suggestions list two options for the layout: &lt;code&gt;page--search.html.twig&lt;/code&gt; and &lt;code&gt;page.html.twig&lt;/code&gt;. The latter is currently active, so I&#39;m going to make a new template with the name of the former in my subtheme&#39;s &lt;code&gt;templates/layouts&lt;/code&gt; directory.&lt;/p&gt;
&lt;p&gt;Since the search page will look different from other pages on the site, this is not just a matter of copying the content of &lt;code&gt;page.html.twig&lt;/code&gt; and making some minor adjustments. Remember that &lt;code&gt;page.html.twig&lt;/code&gt; covers practically everything you see on a given page: the header, the navbar, the content, and the footer. I don&#39;t want to repeat all that in my &lt;code&gt;page--search.html.twig&lt;/code&gt; template, since that would mean that if I make any changes to the navbar, for example, I&#39;d have to be sure that I made the changes in both &lt;code&gt;page.html.twig&lt;/code&gt; and &lt;code&gt;page--search.html.twig&lt;/code&gt;—and that&#39;s just wasting time! Fortunately, I can just make a couple of minor adjustments to my &lt;code&gt;page.html.twig&lt;/code&gt; template to turn it into something I can &lt;em&gt;extend&lt;/em&gt; with other templates.&lt;/p&gt;
&lt;p&gt;Specifically, I&#39;ll enclose the &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; section with &lt;code&gt;{% block main %} … {% endblock %}&lt;/code&gt;, and I&#39;ll enclose &lt;code&gt;{{ page.content }}&lt;/code&gt; with &lt;code&gt;{% block content %} … {% endblock %}&lt;/code&gt;. This is a nice feature of Twig that gives me the option to override a portion of a template. In other words, it is effectively a condition: &amp;quot;If another template extends this one, and if it has content, insert the content here; otherwise, just render the content of the current page.&amp;quot;&lt;/p&gt;
&lt;p&gt;Here&#39;s the new code for the relevant area of &lt;code&gt;page.html.twig&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;block&lt;/span&gt; main &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;main&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;role&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;main&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;main-content&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;tabindex&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# link is in html.html.twig #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; sidebar_first_classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_first &lt;span class=&quot;token operator&quot;&gt;and&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12 col-sm-6 col-lg-3&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12 col-lg-3&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; sidebar_second_classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_first &lt;span class=&quot;token operator&quot;&gt;and&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12 col-sm-6 col-lg-3&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12 col-lg-3&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; content_classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_first &lt;span class=&quot;token operator&quot;&gt;and&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12 col-lg-6&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_first &lt;span class=&quot;token operator&quot;&gt;or&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12 col-lg-9&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;col-12&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; b5_top_container &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;breadcrumb &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;breadcrumb &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row g-0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_first &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;order-2 order-lg-1 &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; sidebar_first_classes &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_first &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;order-1 order-lg-2 &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; content_classes &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;block&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;content &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endblock&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_second &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;order-3 &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; sidebar_second_classes &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sidebar_second &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endblock&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I can focus on the &lt;code&gt;content&lt;/code&gt; part in the &lt;code&gt;page--search.html.twig&lt;/code&gt; template. If I make any adjustments to other parts of the &lt;code&gt;page.html.twig&lt;/code&gt; template (e.g., the navbar), those will affect &lt;code&gt;page--search.html.twig&lt;/code&gt;, too.&lt;/p&gt;
&lt;p&gt;At the top of my &lt;code&gt;page--search.html.twig&lt;/code&gt; template, I&#39;ll insert the following code:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page.html.twig&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;block&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endblock&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first line shows that this template &lt;em&gt;extends&lt;/em&gt; the default page template. The next lines signal that everything between after &lt;code&gt;block content&lt;/code&gt; and &lt;code&gt;endblock&lt;/code&gt; should be inserted into the corresponding &lt;code&gt;content&lt;/code&gt; block in &lt;code&gt;page.html.twig&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now I can work on setting up my search page without worrying about inserting code for the navbar or any other part of the regular page structure.&lt;/p&gt;
&lt;h2&gt;Placing the Search Form&lt;/h2&gt;
&lt;p&gt;In the &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-10/&quot;&gt;previous post&lt;/a&gt;, I described the process of creating a block for the exposed search form that is part of the search view. That is what I see when I look at my unstyled search page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-page-unstyled.png&quot; alt=&quot;Unstyled search page&quot; title=&quot;Unstyled search page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&#39;s doing the job, but I don&#39;t like the fact that it&#39;s displaying the &amp;quot;No results&amp;quot; text (&amp;quot;Your search returned no results&amp;quot;) when I haven&#39;t even searched for anything. Also, if I search for something, I want the form to remain at the top of the list of results so that I can do a new search.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.drupal.org/project/twig_tweak&quot;&gt;Twig Tweak module&lt;/a&gt; has a handy &lt;code&gt;drupal_block()&lt;/code&gt; function that I can use to place the search block that I created earlier. First, though, I need to know the machine name for that block. The &lt;a href=&quot;https://git.drupalcode.org/project/twig_tweak/-/blob/3.x/docs/cheat-sheet.md&quot;&gt;Twig Tweak Cheat Sheet&lt;/a&gt; tells me how to do that using &lt;code&gt;drush&lt;/code&gt;: &lt;code&gt;drush ev &amp;quot;print_r(array_keys(&#92;Drupal::service(&#39;plugin.manager.block&#39;)-&amp;gt;getDefinitions()));&amp;quot;&lt;/code&gt;. That gives me a list of all the blocks with their ID numbers. The one I&#39;m looking for is &lt;code&gt;views_exposed_filter_block:main_solr_search-search&#39;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;With that information, I&#39;ll add this to my &lt;code&gt;page--search.html.twig&lt;/code&gt; template:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;content &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;page__content&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Place the search form block #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_block&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;views_exposed_filter_block:main_solr_search-search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After clearing the caches (&lt;code&gt;drush cr&lt;/code&gt;) and reloading the page in my browser, I now see this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-block-with-twig.png&quot; alt=&quot;Screenshot of the search form generated by Twig Tweak function&quot; title=&quot;Twig Tweak function for search block&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But if I search for something, no results will be displayed, because the template doesn&#39;t yet have a place for results.&lt;/p&gt;
&lt;h2&gt;Search Results&lt;/h2&gt;
&lt;p&gt;I don&#39;t want my &amp;quot;No results&amp;quot; text to be displayed when I haven&#39;t searched for anything, so I need a way to control the initial view of the search page. I have a trick for that:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Don&#39;t display search results if there aren&#39;t any #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; drupal_view_result&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;main_solr_search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;is&lt;/span&gt; empty &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;…&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;{}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;if&lt;/code&gt; statement makes use of Twig Tweak&#39;s &lt;code&gt;drupal_view_result()&lt;/code&gt; function and displays an empty &lt;code&gt;div&lt;/code&gt; if there aren&#39;t any results—and there won&#39;t be on the initial view of the search page!&lt;/p&gt;
&lt;p&gt;When there are results, I want to display them, obviously, so here&#39;s what happens after the &lt;code&gt;else&lt;/code&gt; statement:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container search-container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Render the search results #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Search Results&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;main_solr_search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I use the Twig Tweak function &lt;code&gt;drupal_view()&lt;/code&gt; function to display the results.&lt;/p&gt;
&lt;h2&gt;Facets&lt;/h2&gt;
&lt;p&gt;Solr is all about facets, but I haven&#39;t done anything about them yet. Fortunately, they&#39;re just Drupal blocks, so I can use the &lt;code&gt;drupal_block()&lt;/code&gt; function again. First, I have to identify the facets I want to use, so I&#39;ll execute the &lt;code&gt;drush&lt;/code&gt; command that I used earlier: ``drush ev &amp;quot;print_r(array_keys(&#92;Drupal::service(&#39;plugin.manager.block&#39;)-&amp;gt;getDefinitions()));&amp;quot;&lt;code&gt;. The resulting list tells me that I want&lt;/code&gt;facet_block:content_type&lt;code&gt;and&lt;/code&gt;facet_block:time_period` (at least for now).&lt;/p&gt;
&lt;p&gt;I&#39;d like to use a columnar layout for the search page, so that the facets are in a thin column on the left side of the screen, and the results are in a wider column to the right of that. Here&#39;s the code to accomplish that:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page.html.twig&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;block&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;content &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;page__content&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Place the search form block #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_block&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;views_exposed_filter_block:main_solr_search-search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Don&#39;t display search results if there aren&#39;t any #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; drupal_view_result&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;main_solr_search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;is&lt;/span&gt; empty &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container search-container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-sm-3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Render the facets #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;search-sidebar&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Filter(s)&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Content type&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_block&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;facet_block:content_type&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Time period&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_block&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;facet_block:time_period&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;br /&gt;       &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Render the search results #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-sm-9&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Search Results&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;main_solr_search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;search&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endblock&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is what that looks like when I search for &amp;quot;Vergil&amp;quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-vergil-unthemed.png&quot; alt=&quot;Screenshot of search for Vergil, unthemed&quot; title=&quot;Search for Vergil, unthemed&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It doesn&#39;t look great because I haven&#39;t done anything about styling it. That&#39;s in the next post.&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The ability to &lt;em&gt;extend&lt;/em&gt; a template is a great way to keep your theme&#39;s code easy to manage.&lt;/li&gt;
&lt;li&gt;Twig Tweak functions make it really easy to place blocks, views, and other elements.&lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;if&lt;/code&gt; statements can give you a lot of control over what is displayed on the screen.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part X: Solr</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-10/" />
    <updated>2024-07-19T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-10/</id>
    <content type="html">&lt;p&gt;The old Drupal 7 version of the DLL Catalog uses &lt;a href=&quot;https://solr.apache.org/&quot;&gt;Apache Solr&lt;/a&gt; to provide &lt;a href=&quot;https://en.wikipedia.org/wiki/Faceted_search&quot;&gt;faceted search&lt;/a&gt;. Since the search page and its results are important features on the DLL Catalog site, I need to install and configure Solr before I can continue rebuilding my theme.&lt;/p&gt;
&lt;p&gt;Fortunately, that&#39;s relatively easy to do in DDEV, which I&#39;m using to develop my theme locally. &lt;a href=&quot;https://github.com/ddev/ddev-solr&quot;&gt;The ddev-solr repo&lt;/a&gt; has instructions for installation and configuration, but I&#39;m going to document what I did, since I ran into some obstacles along the way.&lt;/p&gt;
&lt;h2&gt;Install DDEV Solr&lt;/h2&gt;
&lt;p&gt;Installation of ddev-solr boils down to these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ddev get ddev/ddev-solr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev restart&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Install Drupal Modules&lt;/h2&gt;
&lt;p&gt;Again, fortunately, the ddev-solr repo also has &lt;a href=&quot;https://github.com/ddev/ddev-solr?tab=readme-ov-file#drupal-and-search-api-solr&quot;&gt;instructions for preparing a Drupal site for using Solr&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the &lt;a href=&quot;https://www.drupal.org/project/search_api_solr&quot;&gt;Search API Solr module&lt;/a&gt;: &lt;code&gt;composer require &#39;drupal/search_api_solr:^4.3&#39;&lt;/code&gt;. That will cause a bunch of other things to be installed.&lt;/li&gt;
&lt;li&gt;Enable the Search API Solr module: &lt;code&gt;drush en -y search_api_solr&lt;/code&gt;. Again, this will cause some other modules to be installed, too. Be sure to enable the &lt;code&gt;search_api_solr_admin&lt;/code&gt; module, too. It comes with the Search API Solr module, but it isn&#39;t installed automatically: &lt;code&gt;drush en -y search_api_solr_admin&lt;/code&gt;. If you want autocomplete functionality, enable the Search API Solr Autocomplete module: &lt;code&gt;drush en -y search_api_solr_autocomplete&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install the &lt;a href=&quot;https://www.drupal.org/project/search_api_autocomplete&quot;&gt;Search API Autocomplete module&lt;/a&gt;, if you want search forms to have autocomplete functionality: &lt;code&gt;composer require drupal/search_api_autocomplete&lt;/code&gt;, then &lt;code&gt;drush en -y search_api_autocomplete&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install the &lt;a href=&quot;https://www.drupal.org/project/facets/&quot;&gt;Facets module&lt;/a&gt;: &lt;code&gt;composer require &#39;drupal/facets:^2.0&#39;&lt;/code&gt;, then &lt;code&gt;drush en -y facets&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since my theme is a subtheme of the &lt;a href=&quot;https://www.drupal.org/project/bootstrap5&quot;&gt;Bootstrap5 theme&lt;/a&gt;, I&#39;m also going to install the &lt;a href=&quot;https://www.drupal.org/project/views_bootstrap&quot;&gt;Views Bootstrap module&lt;/a&gt;. It will give me some nice options for rendering the search results.&lt;/p&gt;
&lt;h2&gt;Configure Solr&lt;/h2&gt;
&lt;p&gt;The documentation is a little hazy here, at least for me. The &lt;a href=&quot;https://solr.apache.org/resources.html#documentation&quot;&gt;documentation for Solr&lt;/a&gt; uses the terms &amp;quot;core&amp;quot; and &amp;quot;collection,&amp;quot; but the Search API Solr interface at &lt;code&gt;/admin/config/search/search-api&lt;/code&gt; only gives you the option to add a new &amp;quot;server&amp;quot; or &amp;quot;index&amp;quot;. I finally realized that a &amp;quot;server&amp;quot; in Search API Solr is really a &amp;quot;core&amp;quot; or a &amp;quot;collection&amp;quot;, depending on which mode your installation of Solr is using (traditional = core; cloud = collection).&lt;/p&gt;
&lt;p&gt;In any case, the first step is to create a server in Drupal&#39;s UI.&lt;/p&gt;
&lt;h3&gt;Create a server&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;admin/config/search/search-api&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click &amp;quot;+Add Server&amp;quot;. This will open a new page.&lt;/li&gt;
&lt;li&gt;Enter a name into the &amp;quot;Server name&amp;quot; field and note the corresponding machine name to the right of the field. In my case, I named the server &amp;quot;DLL Catalog&amp;quot;; the machine name is &lt;code&gt;dll_catalog&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Leave the &amp;quot;Enabled&amp;quot; box checked&lt;/li&gt;
&lt;li&gt;Enter a description in the &amp;quot;Description&amp;quot; field&lt;/li&gt;
&lt;li&gt;Under &amp;quot;Backend&amp;quot;, choose &amp;quot;Solr&amp;quot;&lt;/li&gt;
&lt;li&gt;In &amp;quot;Configure Solr backend&amp;quot;, select &amp;quot;Solr Cloud with Basic Auth&amp;quot;&lt;/li&gt;
&lt;li&gt;In &amp;quot;Solr node&amp;quot;, insert &amp;quot;solr&amp;quot;. &lt;strong&gt;Don&#39;t miss this step!&lt;/strong&gt; If you leave it at &amp;quot;localhost&amp;quot;, you&#39;ll run into a lot of trouble. I speak from experience!&lt;/li&gt;
&lt;li&gt;In &amp;quot;Solr port&amp;quot;, insert &amp;quot;8983&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Solr path&amp;quot; should be just &amp;quot;/&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Default Solr collection&amp;quot;: Insert the name you want to use for your collection.&lt;/li&gt;
&lt;li&gt;Leave everything else alone, but scroll down and enter &amp;quot;solr&amp;quot; in the &amp;quot;Username&amp;quot; field and &amp;quot;SolrRocks&amp;quot; in the &amp;quot;Password&amp;quot; field.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save&amp;quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You&#39;ll probably see some warning messages at this point. That&#39;s okay. They&#39;ll be handled by the next step. Also, the &amp;quot;Server Connection&amp;quot; field should say &amp;quot;The Solr server could be reached.&amp;quot; The &amp;quot;Collection Connection&amp;quot; should say that the collection could not be accessed. That&#39;s because you haven&#39;t uploaded a configset yet. That&#39;s the next step.&lt;/p&gt;
&lt;h3&gt;Upload a configset&lt;/h3&gt;
&lt;p&gt;There are two ways to do this.&lt;/p&gt;
&lt;p&gt;The easiest way is in the UI. If you enabled the &lt;code&gt;search_api_solr_admin&lt;/code&gt; module, you should see a button &amp;quot;+Upload Configset&amp;quot;. Click that. After a bit, you should see status messages that say &amp;quot;Successfully uploaded configset&amp;quot; and &amp;quot;Successfully created collection&amp;quot;, with the name of your collection. Additionally, the &amp;quot;Collection Connection&amp;quot; should now say that the collection could be accessed.&lt;/p&gt;
&lt;p&gt;You can also use &lt;code&gt;drush&lt;/code&gt; on the command line. Navigate to your site&#39;s root directory (i.e., where your site is saved on your computer. Mine is in&lt;code&gt;~/Sites/d10dllcat&lt;/code&gt;) and execute this command:&lt;code&gt;ddev drush --numShards=1 search-api-solr:upload-configset SEARCH_API_SERVER_ID&lt;/code&gt;, replacing&lt;code&gt;SEARCH_API_SERVER_ID&lt;/code&gt; with the machine name of your server (see above). In my case, the command looks like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ddev drush --numShards=1 search-api-solr:upload-configset dllcatalog&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Create the Index&lt;/h2&gt;
&lt;p&gt;Solr needs something to search. That&#39;s the role of an index. I&#39;m going to create an index for site-wide searching of my four main content types here.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;/admin/config/search/search-api&lt;/code&gt; in the UI.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;+Add index&amp;quot;&lt;/li&gt;
&lt;li&gt;On the page that comes up, give the index a name in the &amp;quot;Index name&amp;quot; field. I&#39;m using &amp;quot;DLL Catalog Search&amp;quot;.&lt;/li&gt;
&lt;li&gt;In the &amp;quot;Datasources&amp;quot; area, select &amp;quot;Content&amp;quot; to search the content of the site. There are several other options that you might wish to explore.&lt;/li&gt;
&lt;li&gt;A warning message appeared at this point: &amp;quot;Configure the used datasources&amp;quot;. In my case, a &amp;quot;Bundles&amp;quot; area appeared. I&#39;m going to answer the question &amp;quot;Which bundles should be indexed?&amp;quot; with &amp;quot;Only those selected&amp;quot;, since I don&#39;t want to include blog posts and basic pages.&lt;/li&gt;
&lt;li&gt;In the &amp;quot;Bundles&amp;quot; checklist, I&#39;m going to select &amp;quot;Author Authority&amp;quot;, &amp;quot;DLL Work&amp;quot;, &amp;quot;Item Record&amp;quot;, and &amp;quot;Web Page&amp;quot;.&lt;/li&gt;
&lt;li&gt;I&#39;ll leave the &amp;quot;Languages&amp;quot; section alone, since I don&#39;t have multilingual content.&lt;/li&gt;
&lt;li&gt;Under &amp;quot;Server&amp;quot;, I&#39;ll select the server I created above: DLLCatalog.&lt;/li&gt;
&lt;li&gt;I&#39;ll check &amp;quot;Enabled&amp;quot;&lt;/li&gt;
&lt;li&gt;I&#39;ll enter a description in the &amp;quot;Description&amp;quot; box.&lt;/li&gt;
&lt;li&gt;I don&#39;t need to do anything in &amp;quot;Index options&amp;quot; or &amp;quot;Solr specific index options&amp;quot;.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save and add fields&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Selecting fields takes time and care. You have to make a lot of decisions about what is important to include in the search and how it should be indexed. Since my experience tells me that each site has different needs, I can&#39;t offer any general wisdom other than this: consider including the &amp;quot;Rendered HTML output&amp;quot; (&lt;code&gt;rendered_item&lt;/code&gt;) along with other specific fields that you want to use as facets. &amp;quot;Content type&amp;quot; is another good one. If you want to use text fields as facets, make sure the &amp;quot;Type&amp;quot; is set to &amp;quot;String&amp;quot;, since &amp;quot;Fulltext&amp;quot; will not work for facets. Unless you&#39;re a super genius, you&#39;ll probably have to tinker with this and revise the selection as you test the search functionality.&lt;/p&gt;
&lt;p&gt;When you&#39;re finished with selecting fields, click &amp;quot;Save changes&amp;quot;, then move on to the &amp;quot;Processors&amp;quot; tab. Again, the processors selected here will vary for each site.&lt;/p&gt;
&lt;p&gt;You won&#39;t be able to do anything with the &amp;quot;Autocomplete&amp;quot; tab until you have set up a search view (see below).&lt;/p&gt;
&lt;p&gt;Go back to the &amp;quot;View&amp;quot; tab and select &amp;quot;Queue all items for reindexing&amp;quot;, then click &amp;quot;Index now&amp;quot; in the &amp;quot;Start indexing now&amp;quot; area.&lt;/p&gt;
&lt;h2&gt;Create a Display Mode for the Content&lt;/h2&gt;
&lt;p&gt;The search view that I&#39;ll create below will display either &amp;quot;Rendered Entity&amp;quot; or &amp;quot;Fields.&amp;quot; I&#39;d like to use &amp;quot;Rendered Entity&amp;quot; because I don&#39;t want to configure a bunch of individual fields. But I also don&#39;t want the view to display the full node for each result. The solution is to create a &lt;a href=&quot;https://www.drupal.org/docs/drupal-apis/entity-api/display-modes-view-modes-and-form-modes&quot;&gt;display mode&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;/admin/structure/display-modes&lt;/code&gt; in the UI&lt;/li&gt;
&lt;li&gt;Click &amp;quot;View modes&amp;quot;&lt;/li&gt;
&lt;li&gt;Click &amp;quot;+Add view mode&amp;quot;&lt;/li&gt;
&lt;li&gt;Choose view mode entity type &amp;quot;Content&amp;quot;&lt;/li&gt;
&lt;li&gt;Give the view mode a descriptive name (e.g., &amp;quot;Solr Search&amp;quot;) and a description&lt;/li&gt;
&lt;li&gt;Check the content types that the view mode should apply to&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now it&#39;s time to indicate what will be displayed when different content types are rendered in the new view mode.&lt;/p&gt;
&lt;p&gt;First, go to &lt;code&gt;/admin/structure/types&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now, for each content type that was specified when the view mode was created:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the arrow in the &amp;quot;Operations&amp;quot; column&lt;/li&gt;
&lt;li&gt;Select &amp;quot;Manage display&amp;quot;&lt;/li&gt;
&lt;li&gt;When the display window appears, select the new view mode&#39;s name&lt;/li&gt;
&lt;li&gt;Drag and drop the field names into or out of the &amp;quot;Disabled&amp;quot; area according to your needs. Whatever is not in the &amp;quot;Disabled&amp;quot; area will appear on the screen when the content is rendered in the view mode, in the order in which it is listed in &amp;quot;Field&amp;quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Create a Search View&lt;/h2&gt;
&lt;p&gt;Go to &lt;code&gt;/admin/structure/views&lt;/code&gt; in the UI and click &amp;quot;+Add view&amp;quot;&lt;/p&gt;
&lt;h3&gt;Add View&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Give the view a name (e.g., &amp;quot;Main Solr Search&amp;quot;) and a description&lt;/li&gt;
&lt;li&gt;In &amp;quot;View Settings&amp;quot;, in the &amp;quot;Show&amp;quot; dropdown menu, select the name of the index you created above (e.g., &amp;quot;Index DLL Catalog Search&amp;quot;)&lt;/li&gt;
&lt;li&gt;In &amp;quot;Page Settings&amp;quot;, check &amp;quot;Create a page&amp;quot; and give the page a title and a path. I&#39;m setting my title to &amp;quot;Search&amp;quot; and the path to &lt;code&gt;search&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;I&#39;m going to select &amp;quot;Bootstrap List Group&amp;quot; of &amp;quot;Rendered entity&amp;quot; in the &amp;quot;Page display settings&amp;quot; area. I can change it later, if needed.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save and edit&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Views Interface&lt;/h3&gt;
&lt;p&gt;You&#39;ll need to do a lot of work here, so save early and save often. I&#39;m going to break it down according to the columns of the Views interface.&lt;/p&gt;
&lt;h4&gt;First column&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;: You can change the title if you want. It isn&#39;t necessary unless you&#39;re going to have multiple displays in your view.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Format&lt;/strong&gt;: I like to use the Bootstrap List Group here because it fits well with my overall use of the Bootstrap framework.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Show&lt;/strong&gt;: I have used &amp;quot;Rendered Entity&amp;quot; or &amp;quot;Fields&amp;quot; here for different projects. In this one, I&#39;m using &amp;quot;Rendered Entity&amp;quot; because I don&#39;t want to configure a bunch of individual fields. Instead, I&#39;m going to use the view mode I created above. I&#39;ll click &amp;quot;Settings&amp;quot; and select the name of my new view mode for each of the content types listed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Filter criteria&lt;/strong&gt;: This is where you create the search box. This one requires a lot of configuration. To get started, click &amp;quot;Add&amp;quot; and select &amp;quot;Fulltext search&amp;quot;. In the window that appears when you click &amp;quot;Apply and configure filter criteria&amp;quot; do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check &amp;quot;Expose this filter to visitors, to allow them to change it&amp;quot;&lt;/li&gt;
&lt;li&gt;Check &amp;quot;Required&amp;quot;&lt;/li&gt;
&lt;li&gt;Choose &amp;quot;Single filter&amp;quot; in &amp;quot;Filter type to expose&amp;quot;&lt;/li&gt;
&lt;li&gt;Make a label and a description, if you wish&lt;/li&gt;
&lt;li&gt;In &amp;quot;Operator&amp;quot;, choose &amp;quot;Contains any of theses words&amp;quot; to ensure a greedy search&lt;/li&gt;
&lt;li&gt;&amp;quot;Parse mode&amp;quot; should be set to &amp;quot;Multiple words&amp;quot;&lt;/li&gt;
&lt;li&gt;If you want to give your users a hint, insert some text in &amp;quot;Placeholder&amp;quot; (e.g., &amp;quot;Enter your search term(s) …&amp;quot;)&lt;/li&gt;
&lt;li&gt;Set the &amp;quot;Minimum keyword length&amp;quot; to &amp;quot;1&amp;quot; to ensure that &lt;em&gt;something&lt;/em&gt; has to be in the field to search&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Second column&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Page settings&lt;/strong&gt;: Enter the path that you want for your search page. I chose &lt;code&gt;search&lt;/code&gt;. Leave &lt;strong&gt;Menu&lt;/strong&gt; and &lt;strong&gt;Administration&lt;/strong&gt; theme alone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: The default &amp;quot;Unrestricted&amp;quot; is fine, unless you want to restrict your search to certain users or roles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Header&lt;/strong&gt;: Click &amp;quot;Add&amp;quot; and select &amp;quot;Result summary&amp;quot;. In the configuration window, enter &amp;quot;Displaying @start - @end of @total results. Use the filters to limit the results.&amp;quot; Those placeholders will change as needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Footer&lt;/strong&gt;: I leave this blank.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No results behavior&lt;/strong&gt;: Click &amp;quot;Add&amp;quot; and select &amp;quot;Text area&amp;quot;. In the configuration window, enter &amp;quot;Your search returned no results.&amp;quot; You&#39;ll need to do some work with a Twig template later to keep that from showing up even before a user has performed a search.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pager&lt;/strong&gt;: Select &amp;quot;Full&amp;quot; and &amp;quot;Paged, 10 items&amp;quot;.&lt;/p&gt;
&lt;h4&gt;Third column (Advanced)&lt;/h4&gt;
&lt;p&gt;Expland the column by clicking on the arrow next to &amp;quot;Advanced&amp;quot;. There&#39;s no need to do anything in either the &amp;quot;Relationships&amp;quot; or the &amp;quot;Contextual filters&amp;quot; area.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exposed form&lt;/strong&gt;: Change &amp;quot;No&amp;quot; to &amp;quot;Yes&amp;quot; in &amp;quot;Exposed form in block&amp;quot;. In &amp;quot;Exposed form style&amp;quot;, select &amp;quot;Basic&amp;quot;. In &amp;quot;Settings&amp;quot;, I like to use &amp;quot;Go&amp;quot; as my &amp;quot;Submit button text&amp;quot;. I don&#39;t check either of the boxes in this window, and I leave &amp;quot;Exposed sorts label&amp;quot; as it is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Machine Name: &amp;quot;search&amp;quot;&lt;/li&gt;
&lt;li&gt;Administrative comment: &amp;quot;None&amp;quot;&lt;/li&gt;
&lt;li&gt;Use Ajax: &amp;quot;No&amp;quot;&lt;/li&gt;
&lt;li&gt;Hide attachments in summary: &amp;quot;No&amp;quot;&lt;/li&gt;
&lt;li&gt;Contextual links: &amp;quot;Shown&amp;quot;&lt;/li&gt;
&lt;li&gt;Query settings: Check &amp;quot;Skip item access checks&amp;quot; and &amp;quot;Bypass access checks&amp;quot;&lt;/li&gt;
&lt;li&gt;Caching: &amp;quot;Search API (none)&amp;quot;&lt;/li&gt;
&lt;li&gt;CSS class: &amp;quot;search-index&amp;quot;. I add this class so that I can do some styling later on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Click &amp;quot;Save&amp;quot;&lt;/p&gt;
&lt;h2&gt;Create Facets&lt;/h2&gt;
&lt;p&gt;Now that you have a search view, you can go to &lt;code&gt;/admin/config/search/facets&lt;/code&gt; in the UI and add some facets.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &amp;quot;+Add facet&amp;quot;&lt;/li&gt;
&lt;li&gt;Select your search view&#39;s name in &amp;quot;Facet source&amp;quot;&lt;/li&gt;
&lt;li&gt;Select a field that you want to use as a facet&lt;/li&gt;
&lt;li&gt;Enter a name for the facet&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you need to configure the facet.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &amp;quot;Widget&amp;quot; area, I like to use &amp;quot;List of checkboxes&amp;quot; for most things, but the others can be good options depending on the use case.&lt;/li&gt;
&lt;li&gt;In &amp;quot;List of links settings&amp;quot;, I select all the boxes.&lt;/li&gt;
&lt;li&gt;&amp;quot;Facet settings&amp;quot; includes a lot of options that will depend on the site&#39;s needs. The names make their functions more or less obvious.&lt;/li&gt;
&lt;li&gt;Facet sorting: I tend to leave the default values, unless there&#39;s a special circumstance.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Set Autocomplete&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Go back to &lt;code&gt;/admin/config/search/search-api&lt;/code&gt; and click on your index&lt;/li&gt;
&lt;li&gt;Click the &amp;quot;Autocomplete&amp;quot; tab&lt;/li&gt;
&lt;li&gt;Your search view&#39;s name should appear in a list. Check it.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You should see a notice telling you to set the permissions for the search. Click on its link or go to &lt;code&gt;/admin/people/permissions&lt;/code&gt; and filter on &amp;quot;search&amp;quot;. Under &amp;quot;Search API Autocomplete&amp;quot;, check &amp;quot;anonymous user&amp;quot; and &amp;quot;authenticated user&amp;quot; for the permission &amp;quot;Use autocomplete for the YOUR_SEARCH_NAME search.&amp;quot; Click &amp;quot;Save permissions&amp;quot;.&lt;/p&gt;
&lt;h2&gt;Enable and Place the Search Block&lt;/h2&gt;
&lt;p&gt;If you go to &lt;code&gt;your-url.com/search&lt;/code&gt; now, you will probably see a mostly blank page. That is because the search block that you created when you made the search view has not been enabled and placed in a page.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;/admin/structure/block&lt;/code&gt; in the UI&lt;/li&gt;
&lt;li&gt;Scroll down to &amp;quot;Main content&amp;quot; and click &amp;quot;Place block&amp;quot;&lt;/li&gt;
&lt;li&gt;Filter by your search view&#39;s name. Mine was &amp;quot;Exposed form: main_solr_search-search&amp;quot;&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Place block&amp;quot;&lt;/li&gt;
&lt;li&gt;I generally uncheck &amp;quot;Display title&amp;quot; and choose &amp;quot;Override title&amp;quot; so that I can specify the text I want to appear on the search page. I&#39;ve settled on &amp;quot;Search&amp;quot;.&lt;/li&gt;
&lt;li&gt;In the &amp;quot;Visibility&amp;quot; area, click the &amp;quot;Pages&amp;quot; tab, enter &amp;quot;/&amp;quot; and the path of your search view on one line, then &amp;quot;/&amp;quot; and the path of your search view plus &amp;quot;/*&amp;quot; on a second line:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-block-config.png&quot; alt=&quot;Search block configuration&quot; title=&quot;Search block configuration&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click &amp;quot;Save block&amp;quot;.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;After all that, you should have a functioning search page, but you&#39;re not going to like how it looks. Here&#39;s mine:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/search-page-unstyled.png&quot; alt=&quot;Unstyled search page&quot; title=&quot;Unstyled search page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&#39;s because it hasn&#39;t been styled! In the next post(s)—it will probably take more than one—I&#39;ll write about making a display mode for search results, overriding the template for the search page, placing the facets, and styling the various elements.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part IX: Content Types, Continued</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-9/" />
    <updated>2024-07-18T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-9/</id>
    <content type="html">&lt;p&gt;As I mentioned in the &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-8&quot;&gt;last post&lt;/a&gt;, The DLL Catalog site has four main content types:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Author Authority&lt;/strong&gt;: Nodes in this content type contain information about an author&#39;s authorized name, variations on the name, dates, and various identifiers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DLL Work&lt;/strong&gt;: This content type contains the title(s) of works.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Item Record&lt;/strong&gt;: These nodes contain metadata for published editions of works.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Page&lt;/strong&gt;: This content type is for internet pages that present the texts of works.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The site also makes use of the default Drupal content types &lt;strong&gt;Article&lt;/strong&gt; (for blog posts and updates) and &lt;strong&gt;Basic Page&lt;/strong&gt; (for static content).&lt;/p&gt;
&lt;p&gt;The work I did on the Author Authority content type will be the starting place for working on the other content types. I&#39;ll start with DLL Work.&lt;/p&gt;
&lt;h2&gt;DLL Work&lt;/h2&gt;
&lt;p&gt;Nodes of the DLL Work content type on the old version of the site look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-dll-work-old.png&quot; alt=&quot;Screenshot of the old DLL Work page&quot; title=&quot;Old DLL Work page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Like the old Author Authority page, the old DLL Work page is based on &lt;a href=&quot;https://www.drupal.org/project/panels&quot;&gt;Panels&lt;/a&gt;, but I don&#39;t want to use that module anymore. Fortunately, the layout of the two pages is very similar: two-columns of different widths and colors. My first step, then, is to make a copy of the &lt;code&gt;node--author-authorities.html.twig&lt;/code&gt; template and name it &lt;code&gt;node--dll-work.html.twig&lt;/code&gt;, according to the file name suggestions provided by Twig. &lt;em&gt;Mutatis mutandis&lt;/em&gt;, here is the content of the new template:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node--type-&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bundle&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;clean_class&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isPromoted&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node--promoted&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isSticky&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node--sticky&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token operator&quot;&gt;not&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isPublished&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node--unpublished&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    view_mode &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node--view-mode-&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~&lt;/span&gt; view_mode&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;clean_class&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; attach_library&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;bootstrap5/node&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;article&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;classes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; title_prefix &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; label &lt;span class=&quot;token operator&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;not&lt;/span&gt; page &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;title_attributes&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; url &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;bookmark&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; label &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; title_suffix &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;content_attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node__content&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Render the content of the DLL Work node in a thin column #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;work-data&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-md-4 col-md-4 order-lg-2 order-md-2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;DLL Work Data&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Render the contextual views in a wider column #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;work-contextual-views&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-md-8 order-lg-1 order-md-1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Set the variable for the contextual filter #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; arg_1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;field_dll_identifier&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;work-item-records&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Item Records&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_dll_work&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_1&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;work-web-pages&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Texts on the Internet&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_dll_work&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_2&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;article&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The only things I changed are the values of the ID attributes on the &lt;code&gt;div&lt;/code&gt; elements (e.g., from &lt;code&gt;author-data&lt;/code&gt; to &lt;code&gt;work-data&lt;/code&gt;) and the information for the contextual views. Everything else is the same.&lt;/p&gt;
&lt;p&gt;Now I need to update my &lt;code&gt;style.scss&lt;/code&gt; file. Since I&#39;m going for the same basic look, I can piggy-back onto the styles I wrote for the Author Authority page. For example, to match the blue background and other formatting of the &lt;code&gt;author-data&lt;/code&gt; column, I can just add &lt;code&gt;#work-data&lt;/code&gt; to those blocks in &lt;code&gt;style.css&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data,&lt;br /&gt;#work-data&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #eaf7fb&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data .field,&lt;br /&gt;#work-data .field&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data .field__label,&lt;br /&gt;#work-data .field__label&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that I inserted a comma after the existing style, then added &lt;code&gt;#word-data&lt;/code&gt;. I&#39;ll do the same thing to the other styles:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-contextual-views &gt; div,&lt;br /&gt;#work-contextual-views &gt; div&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data h3,&lt;br /&gt;#author-contextual-views h3,&lt;br /&gt;#work-data h3,&lt;br /&gt;#work-contextual-views h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; thin solid gray&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; no-repeat&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left top&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0 0.75rem 3rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/authority-record-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#work-data h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/dll-work-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-works .views-field-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-works h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/dll-work-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-item-records h3,&lt;br /&gt;#work-item-records h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/item-record-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-web-pages h3,&lt;br /&gt;#work-web-pages h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/webpage-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After compiling the SCSS (&lt;code&gt;sass scss/style.scss css/style.css &amp;amp;&amp;amp; sass scss/ck5style.scss css/ck5style.css&lt;/code&gt;) and clear the caches (&lt;code&gt;drush cr&lt;/code&gt;), this is what I see on my screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-dll-work-new.png&quot; alt=&quot;New DLL Work page&quot; title=&quot;New DLL Work page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That was pretty easy!&lt;/p&gt;
&lt;h2&gt;Item Record&lt;/h2&gt;
&lt;p&gt;Comparatively speaking, the Item Record content type has a pretty straightforward display. Here&#39;s a screenshot of the old version:&lt;/p&gt;
&lt;p image=&quot;&quot;&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-item-record-old.png&quot; alt=&quot;Old Item Record&quot; title=&quot;Old Item Record page&quot; /&gt;.&lt;/p&gt;
&lt;p&gt;Here&#39;s the same record on the new site, without any extra styling:&lt;/p&gt;
&lt;p image=&quot;&quot;&gt;![New Item Record](/assets/images/front-end/content-item-record-new.png &amp;quot;New Item Record page).&lt;/p&gt;
&lt;p&gt;I don&#39;t need to do much to it! Hooray!&lt;/p&gt;
&lt;p&gt;I&#39;ll just transform the field labels to uppercase, adjust the spacing, and add the icon to the heading. The first two items are easy: I&#39;ll just add the id for the content type to the relevant styles in &lt;code&gt;style.scss&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data .field,&lt;br /&gt;#work-data .field,&lt;br /&gt;#item-record .field&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data .field__label,&lt;br /&gt;#work-data .field__label,&lt;br /&gt;#item-record .field__label&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I&#39;ll add the icon to the heading. When I started to work on this, I noticed an opportunity to make my CSS less redundant. Here&#39;s the CSS for the headings of Author Authority and DLL Work nodes:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-authority-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/authority-record-on-orange.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2.75rem 2.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; no-repeat&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left 8px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.25rem 0 1rem 3.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#dll-work-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/dll-work-on-orange.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2.75rem 2.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; no-repeat&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left 8px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.25rem 0 1rem 3.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The only difference between them is the value of &lt;code&gt;background-image&lt;/code&gt;. Instead of making a third block for &lt;code&gt;item-record-title&lt;/code&gt;, I&#39;ll make one block for the positioning of all three, then separate blocks for the background images:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-authority-title,&lt;br /&gt;#dll-work-title,&lt;br /&gt;#item-record-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2.75rem 2.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; no-repeat&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left 8px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.25rem 0 1rem 3.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-authority-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/authority-record-on-orange.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#dll-work-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/dll-work-on-orange.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#item-record-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/item-record-on-orange.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, if I need to adjust the positioning of all three title areas, I can do it in one place.&lt;/p&gt;
&lt;p&gt;After compiling the SCSS (&lt;code&gt;sass scss/style.scss css/style.css &amp;amp;&amp;amp; sass scss/ck5style.scss css/ck5style.css&lt;/code&gt;) and clear the caches (&lt;code&gt;drush cr&lt;/code&gt;), this is what I see on my screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-dll-work-new-styled.png&quot; alt=&quot;Screenshot of styled Item Record page&quot; title=&quot;New styled Item Record page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Web Page&lt;/h2&gt;
&lt;p&gt;I can repeat the process for the Web Page content type. Here&#39;s how a Web Page node appears on the old site:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-web-page-old.png&quot; alt=&quot;Screenshot of old Web Page page&quot; title=&quot;Old Web Page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here is the same content on the new page, after I add the relevant ID values to the existing styles:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-web-page-new-styled.png&quot; alt=&quot;Screenshot of new Web Page page&quot; title=&quot;New Web Page styled&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Takeaway&lt;/h2&gt;
&lt;p&gt;Repurposing existing templates and styles is a great way to save time and make your code more efficient! After investing time in styling the Author Authority content type, I was able to do the other three main content types in one morning!&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part VIII: Content Types</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-8/" />
    <updated>2024-07-17T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-8/</id>
    <content type="html">&lt;p&gt;The DLL Catalog site has four main content types:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Author Authority: Nodes in this content type contain information about an author&#39;s authorized name, variations on the name, dates, and various identifiers.&lt;/li&gt;
&lt;li&gt;DLL Work: This content type contains the title(s) of works.&lt;/li&gt;
&lt;li&gt;Item Record: These nodes contain metadata for published editions of works.&lt;/li&gt;
&lt;li&gt;Web Page: This content type is for internet pages that present the texts of works.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The site also makes use of the default Drupal content types Article (for blog posts and updates) and Basic Page (for static content).&lt;/p&gt;
&lt;p&gt;The old site made heavy use of &lt;a href=&quot;https://www.drupal.org/project/panels&quot;&gt;Panels&lt;/a&gt;, a module that took a point and click approach to content layout. It was useful at the time, but it was complicated and difficult to learn. It has been ported over to Drupal 10, but it now has serious competition from &lt;a href=&quot;https://www.drupal.org/project/gutenberg&quot;&gt;Gutenberg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Rather than attempt to migrate the panel pages, I&#39;m going to recreate the functionality with a combination of Drupal blocks and Twig. The advantage to this approach is that if there&#39;s another big migration in the future, my layouts won&#39;t be tied to a specific module that might or might not be ported over to the new version.&lt;/p&gt;
&lt;h2&gt;Author Authority&lt;/h2&gt;
&lt;p&gt;Here&#39;s a screenshot of an Author Authority page on the old site:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-old.png&quot; alt=&quot;Screenshot of the old Author Authority page&quot; title=&quot;Old Author Authority page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here&#39;s a screenshot of the same Author Authority as migrated into Drupal 10:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-unthemed.png&quot; alt=&quot;Screenshot of the unthemed Author Authority page&quot; title=&quot;Unthemed Author Authority page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Most of the Author Authority content on the old site is in a sidebar, while contextual views are pulling related DLL Work, Item Record, and Web Page content into Panels. Since I already recreated those contextual views in my new site (see &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-7&quot;&gt;Rebuilding A Theme, Part VII: Contextual Views&lt;/a&gt;), I&#39;m ready to insert them into the templates for the Author Authority content type.&lt;/p&gt;
&lt;p&gt;But first I need to deal with rendering the fields already in the Author Authority content type.&lt;/p&gt;
&lt;h2&gt;Node Fields&lt;/h2&gt;
&lt;p&gt;If I navigate to an Author Authority node and inspect it with my Developer Tools, I&#39;ll see that the current Twig template in use is &lt;code&gt;node.html.twig&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- FILE NAME SUGGESTIONS:&lt;br /&gt;   ▪️ node--29982--full.html.twig&lt;br /&gt;   ▪️ node--29982.html.twig&lt;br /&gt;   ▪️ node--author-authorities--full.html.twig&lt;br /&gt;   ▪️ node--author-authorities.html.twig&lt;br /&gt;   ▪️ node--full.html.twig&lt;br /&gt;   ✅ node.html.twig&lt;br /&gt;--&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also see that &lt;code&gt;node--author-authorities--full.html.twig&lt;/code&gt; is one of the file name suggestions, so I&#39;ll go to the Bootstrap5 parent theme&#39;s &lt;code&gt;templates/content&lt;/code&gt; directory, copy the content of &lt;code&gt;node.html.twig&lt;/code&gt;, and create a new &lt;code&gt;node--author-authorities--full.html.twig&lt;/code&gt; file in my subtheme&#39;s &lt;code&gt;templates/content&lt;/code&gt; directory, which I have created beforehand. I&#39;ve selected &lt;code&gt;node-author-authories--full.html.twig&lt;/code&gt; instead of just &lt;code&gt;node--author-authorities.html.twig&lt;/code&gt; because it is more specific. If I need to create other &lt;a href=&quot;https://www.drupal.org/docs/drupal-apis/entity-api/display-modes-view-modes-and-form-modes&quot;&gt;display modes&lt;/a&gt; for this content type, I&#39;ll need to make sure that the template I&#39;m making now won&#39;t override them. It&#39;s always best to be as specific as you can be with your Twig template names—but not so specific that the template applies to only one specific node, like &lt;code&gt;node--29982.html.twig&lt;/code&gt; would.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;node.html.twig&lt;/code&gt; template renders the content all at once with &lt;code&gt;{{ content }}&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt;content_attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;node__content&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the old version of the site, I used a feature of the Panel layout to display select fields from the content. I can do that directly in Twig by building onto the &lt;code&gt;{{ content }}&lt;/code&gt; variable. For example, if I want to display the &amp;quot;Authorized Name&amp;quot; field, I can do this: &lt;code&gt;{{ content.field_authorized_name }}&lt;/code&gt;. That will display the field and its markup. If I just want the value of the field, I can do this: &lt;code&gt;{{ node.field_authorized_name.value }}&lt;/code&gt;. Here&#39;s what happens if I replace &lt;code&gt;{{ content }}&lt;/code&gt; with &lt;code&gt;{{ content.field_authorized_name }}&lt;/code&gt; in my template:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-field-authorized-name.png&quot; alt=&quot;Screenshot of one rendered field&quot; title=&quot;One rendered field&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But we put a lot of work into those metadata records, so I&#39;m going to reverse course and display all the data points available. I think I&#39;ll render them in a column on the left side of the page, with the rest of the page reserved for the contextual views that show other records associated with the author.&lt;/p&gt;
&lt;p&gt;To do that, I&#39;ll do something like what I did &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-6&quot;&gt;when I made three columns for the site&#39;s footer&lt;/a&gt;. There, I made three columns of equal width. Here, I&#39;m going to make two columns of different widths.&lt;/p&gt;
&lt;h2&gt;Columns&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.3/layout/grid/&quot;&gt;Bootstrap&#39;s grid system&lt;/a&gt; is based on twelve columns. When I used three columns in the footer, I didn&#39;t specify their width, so they defaulted to four units: 4 + 4 + 4 = 12. But now I want a thin column for the metadata fields and a wider one for the contextual views. I can do that by adding a number value to the &lt;code&gt;col&lt;/code&gt; class on &lt;code&gt;div&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Thin column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Wide column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To give you an idea of what that looks like, here&#39;s a mock-up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-columns-different-widths.png&quot; alt=&quot;Screenshot of columns with different widths&quot; title=&quot;Columns of different widths&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&#39;ll insert the content into the first column and give it an &lt;code&gt;id&lt;/code&gt; to make it easy to style.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-data&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;{{ content }}&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Wide column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And I&#39;ll use the &lt;code&gt;{{ drupal_view() }}&lt;/code&gt; function from the &lt;a href=&quot;https://www.drupal.org/project/twig_tweak&quot;&gt;Twig Tweak module&lt;/a&gt; to render my contextual views. Since the contextual views need &lt;em&gt;context&lt;/em&gt; (obviously!), I&#39;ll need to supply the information they need. In this case, it&#39;s the value of the author&#39;s DLL Identifier. The &lt;a href=&quot;https://git.drupalcode.org/project/twig_tweak/-/blob/3.x/docs/cheat-sheet.md&quot;&gt;Twig Tweak Cheat Sheet&lt;/a&gt; shows me almost all the details for doing that.&lt;/p&gt;
&lt;p&gt;The example given looks like this: &lt;code&gt;{{ drupal_view(&#39;who_s_new&#39;, &#39;block_1&#39;, arg_1, arg_2, arg_3) }}&lt;/code&gt;. It doesn&#39;t tell me that I have to set the values for the arguments. See below for the way to do that:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-data&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-contextual-views&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-works&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Works&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_author_authority&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_1&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-item-records&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Item Records&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_author_authority&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_2&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-web-pages&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Texts on the Internet&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_author_authority&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_3&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With those functions in place, my Author Authority node now looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-unthemed-2.png&quot; alt=&quot;Screenshot of the unthemed Author Authority page&quot; title=&quot;Unthemed Author Authority page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The content is being displayed, but it doesn&#39;t look very good because I haven&#39;t styled it.&lt;/p&gt;
&lt;h2&gt;Styling&lt;/h2&gt;
&lt;p&gt;I gave each of the different &lt;code&gt;div&lt;/code&gt; elements an ID because that makes them easier to style on an individual basis, if I need to.&lt;/p&gt;
&lt;p&gt;I&#39;m going to give the &lt;code&gt;author-data&lt;/code&gt; a background color of the light blue that is in the DLL&#39;s logo, and I&#39;ll insert a bit of padding at the top so that the content has some room to breathe:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #eaf7fb&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also want to insert some space between the fields for the sake of readability:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data .field&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I like the way the field labels on the old site were in all capitals, so I&#39;ll do that:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data .field__label&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, I&#39;d like to give the &lt;code&gt;author-data&lt;/code&gt; section a header and use the icon for author authorities that the old theme included. To do that, I&#39;ll need to edit the &lt;code&gt;node--author-authorities--full.html.twig&lt;/code&gt; template by inserting &lt;code&gt;&amp;lt;h3&amp;gt;Author Data&amp;lt;/h3&amp;gt;&lt;/code&gt; inside of &lt;code&gt;&amp;lt;div id=&amp;quot;author-data&amp;quot;&amp;gt;&lt;/code&gt;. I will also need to make an &lt;code&gt;image&lt;/code&gt; directory in my subtheme and add the image I need. After that, I can use CSS to add the image to the header:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/authority-record-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; thin solid gray&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; no-repeat&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left top&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0 0.75rem 3rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actually, since I want those last four properties to apply to &lt;code&gt;h3&lt;/code&gt; in the &lt;code&gt;contextual-views&lt;/code&gt; column, too, I&#39;ll do this:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data h3,&lt;br /&gt;#author-contextual-views h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; thin solid gray&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; no-repeat&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left top&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0 0.75rem 3rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And now my &lt;code&gt;author-data&lt;/code&gt; heading can be styled like this:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-data h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/authority-record-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&#39;ll do something similar for the contextual views. First of all, I want to increase the space between the sections, so I&#39;ll use the &lt;code&gt;margin-bottom&lt;/code&gt; property:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-contextual-views &gt; div&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I already added &lt;code&gt;#author-contextual-views h3&lt;/code&gt; to the block for &lt;code&gt;author-data h3&lt;/code&gt; to make sure that the headings in this section have the same border. Now I will add the background images to the &lt;code&gt;h3&lt;/code&gt; tags for each contextual view:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#author-works h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/dll-work-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-item-records h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/item-record-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;#author-web-pages h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/themes/custom/dll_catalog/images/webpage-on-blue.svg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If I compile my SCSS (&lt;code&gt;sass scss/style.scss css/style.css &amp;amp;&amp;amp; sass scss/ck5style.scss css/ck5style.css&lt;/code&gt;) and refresh the caches (&lt;code&gt;drush cr&lt;/code&gt;), I can see the outcome of this work:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-styled-columns.png&quot; alt=&quot;Screenshot of the styled columns&quot; title=&quot;Styled columns&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The images are in place and the headings look okay, but I&#39;m not wild about the look. On the old site, the blue side bar was on the right side of the page. I could just switch the order of the &lt;code&gt;div&lt;/code&gt; elements and put the one with &lt;code&gt;id=&amp;quot;author-contextual-views&amp;quot;&lt;/code&gt; first, but that would cause trouble on smaller screen sizes, since the author data would be pushed to the very bottom of the screen, requiring the user to scroll and scroll to see it.&lt;/p&gt;
&lt;p&gt;What&#39;s the solution? This might be a good place for &lt;a href=&quot;https://getbootstrap.com/docs/5.3/layout/columns/#reordering&quot;&gt;Bootstrap&#39;s &lt;code&gt;order&lt;/code&gt; class&lt;/a&gt;, which allows you to control the order in which elements are displayed on different screen sizes.&lt;/p&gt;
&lt;p&gt;If I add &lt;code&gt;order-lg-2 order-md-2&lt;/code&gt; to the &lt;code&gt;div&lt;/code&gt; with &lt;code&gt;id=&amp;quot;author-data&amp;quot;&lt;/code&gt; and &lt;code&gt;order-lg-1 order-md-1&lt;/code&gt; to the &lt;code&gt;div&lt;/code&gt; with &lt;code&gt;id=&amp;quot;author-contextual-views&lt;/code&gt;, I can reverse the order in which the &lt;code&gt;div&lt;/code&gt; elements will be displayed: &lt;code&gt;order-lg-2 order-md-2&lt;/code&gt; cause the&lt;code&gt;author-data&lt;/code&gt; div to be displayed second (i.e., on the right side of the page) on large (&lt;code&gt;lg&lt;/code&gt;) and medium (&lt;code&gt;md&lt;/code&gt;) screens, but it will be displayed in its natural order on small and extra-small screens. Here&#39;s the new code:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-data&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-contextual-views&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-works&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Works&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_author_authority&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_1&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-item-records&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Item Records&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_author_authority&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_2&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;author-web-pages&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Texts on the Internet&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_view&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;contextual_view_for_author_authority&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;page_3&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arg_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&#39;s a screenshot of the page viewed on a desktop screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-columns-large.png&quot; alt=&quot;Screenshot of the the page on a large screen&quot; title=&quot;Large screen view&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here it is on a tablet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-columns-medium.png&quot; alt=&quot;Screenshot of the the page on a medium screen&quot; title=&quot;Medium screen view&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here it is, with the columns in their natural order, on a phone:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-columns-small.png&quot; alt=&quot;Screenshot of the the page on a small screen&quot; title=&quot;Small screen view&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;p&gt;It should be pretty clear that Bootstrap, Twig, and CSS are a powerful combination.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.3/layout/grid/&quot;&gt;Bootstrap&#39;s grid system&lt;/a&gt; makes responsive content layout a breeze, as long as you remember that it&#39;s based on the number &amp;quot;12&amp;quot;&lt;/li&gt;
&lt;li&gt;Twig gives you almost total control over where (and whether!) your content is placed on the screen. The &lt;a href=&quot;https://www.drupal.org/project/twig_tweak&quot;&gt;Twig Tweak module&lt;/a&gt; adds a lot of extra functionality to Twig&#39;s already full feature set.&lt;/li&gt;
&lt;li&gt;CSS gives you a log of control over the appearance of the content. With just a little knowledge of CSS, you can do quite a lot!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the next post, I&#39;ll use my &lt;code&gt;node--author-authorities--full.html.twig&lt;/code&gt; file and the CSS work that I did to theme the other content types.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part VII: Contextual Views</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-7/" />
    <updated>2024-07-16T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-7/</id>
    <content type="html">&lt;p&gt;When users come to an author&#39;s page on the DLL Catalog site, they should see all of the information about that author, plus links to related content such as works by that author, individual editions of those works, and web pages that contain the author&#39;s works.&lt;/p&gt;
&lt;p&gt;Here&#39;s what that looks like on the old site:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/content-author-authority-old.png&quot; alt=&quot;Screenshot of the old Author Authority page&quot; title=&quot;Old Author Authority page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I accomplished the lists of related content with contextual views. A contextual view is a feature of the powerful &lt;a href=&quot;https://www.drupal.org/docs/8/core/modules/views&quot;&gt;Views module&lt;/a&gt;, an interface for generating, obviously, views of content. The &amp;quot;contextual&amp;quot; part refers to the display of content depending on a specific context, like when a particular value (e.g., a node&#39;s ID) is in the page&#39;s URL.&lt;/p&gt;
&lt;p&gt;Since there isn&#39;t a migration path for views, I must rebuild all of the site&#39;s views from scratch. Fortunately, it&#39;s a pretty easy job. I&#39;ll just go through the steps for showing works related to an author, since the others pretty much work the same way on my site.&lt;/p&gt;
&lt;h2&gt;Adding a View&lt;/h2&gt;
&lt;p&gt;I&#39;ll head over to the Views interface at &lt;code&gt;admin/structure/views&lt;/code&gt;. From there I&#39;ll click &amp;quot;+Add view&amp;quot;, which will take me to a form for creating my view:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/view-add-view.png&quot; alt=&quot;Screenshot of the Add view page&quot; title=&quot;Add View page&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;View name&lt;/strong&gt;: I like to be as systematic and descriptive as possible with view names, so I&#39;m going to name this view &amp;quot;Contextual view for Author Authority: DLL Work&amp;quot;. I&#39;ll also check the &amp;quot;Description&amp;quot; box and enter &amp;quot;A contextual view that displays DLL Work nodes related to a specific Author Authority&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;View settings&lt;/strong&gt;: I want to show &amp;quot;Content&amp;quot; of type &amp;quot;DLL Work&amp;quot;. I don&#39;t really care how the content is sorted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Page settings&lt;/strong&gt;: I want to create a page, so I&#39;ll check this box. I can leave the default values in the other fields, but I want to select &amp;quot;HTML List&amp;quot; of &amp;quot;Titles (linked)&amp;quot; in the pulldown menus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block settings&lt;/strong&gt;: I don&#39;t need to create a block, so I&#39;ll leave this unchecked.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Save and edit&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now I&#39;ll see the View interface:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/views-interface.png&quot; alt=&quot;Screenshot of the View interface&quot; title=&quot;View Interface&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Building a Relationship&lt;/h2&gt;
&lt;p&gt;Since establishing a relationship between DLL Work nodes and their corresponding Author Authority node is essential for this view (i.e., it&#39;s the contextual part), I&#39;ll go over to the &amp;quot;Advanced&amp;quot; part of the View interface first and click &amp;quot;Add&amp;quot; next to &amp;quot;Relationships&amp;quot;. I want to select &amp;quot;Content referenced from field_author&amp;quot; so that I can have access to all of the fields of the Author Authority node associated with DLL Work through the &amp;quot;Author&amp;quot; field (&lt;code&gt;field_author&lt;/code&gt;). Basically, this opens a window onto the associated Author Authority record, and I&#39;ll be able to grab practially any data from it. I&#39;ll click &amp;quot;Add and configure relationships&amp;quot;. Now I&#39;ll check &amp;quot;Require this relationship&amp;quot; so that I won&#39;t get any unrelated content, then I&#39;ll click &amp;quot;Apply&amp;quot;.&lt;/p&gt;
&lt;h2&gt;Providing Context&lt;/h2&gt;
&lt;p&gt;Now I can create the contextual part of the view. In the &amp;quot;Advanced&amp;quot; part of the View interface, I&#39;ll click &amp;quot;Add&amp;quot; next to &amp;quot;Contextual filters&amp;quot;. In the window that opens, I&#39;ll select &amp;quot;DLL Identifier (field_dll_identifier)&amp;quot;, since I want to view DLL Work nodes &lt;em&gt;in the context of&lt;/em&gt; their author, each of which has a unique identifier. Now I&#39;ll click &amp;quot;Add and configure contextual filters&amp;quot;.  In the new window, I&#39;ll select &amp;quot;field_author: Content&amp;quot; from the Relationship dropdown, to make sure that the context is dependent upon that relationship. Now, sometimes there aren&#39;t any works to display, so I need a way to handle that. That&#39;s where the &amp;quot;When the filter value is NOT available&amp;quot; part comes in handy. I&#39;ll select &amp;quot;Display contents of &#39;No results found&#39;&amp;quot;. Later, I&#39;ll go to the &amp;quot;No results behavior&amp;quot; area of the Views interface and add a text field with the content &lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;No records have been entered for this author at this time.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;. That way, the user will see &lt;em&gt;something&lt;/em&gt; if there aren&#39;t any records to display. Now I&#39;ll click &amp;quot;Apply&amp;quot; to, well, apply those settings.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/view-contextual-filter-window.png&quot; alt=&quot;Screenshot of the contextual filter window&quot; title=&quot;Contextual filter window&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Testing&lt;/h2&gt;
&lt;p&gt;Now I can test the contextual view. The Views interface has a handy &amp;quot;Preview&amp;quot; feature. I&#39;ll scroll down to that part and enter the DLL Identifier for Virgil (A4830) in the &amp;quot;Preview with contextual filters&amp;quot; field. This is what I see after clicking &amp;quot;Update preview&amp;quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/view-update-preview.png&quot; alt=&quot;Screenshot of the Views preview&quot; title=&quot;Previewing a contextual view&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It works! The DLL Works related to Virgil—and only those DLL Works—are listed.&lt;/p&gt;
&lt;h2&gt;Fine-tuning&lt;/h2&gt;
&lt;p&gt;For a contextual view to work, it needs a placeholder (e.g., &lt;code&gt;%&lt;/code&gt;) in its URL. I&#39;ll go to the &amp;quot;Page Settings&amp;quot; part of the Views interface and click on &amp;quot;Path:&amp;quot;. Now I&#39;ll insert &lt;code&gt;/%&lt;/code&gt; at the end of the URL (e.g., &lt;code&gt;contextual-view-for-author-authority-dll-work/%&lt;/code&gt;). Now I&#39;ll be able to use the DLL identifier in the Twig template for the Author Authority content type to filter this view.&lt;/p&gt;
&lt;p&gt;I also want to be sure to list &lt;em&gt;all&lt;/em&gt; of the works without relying on a pager. I&#39;ll go down to the &amp;quot;Pager&amp;quot; section and click on &amp;quot;Mini&amp;quot;, the default value for &amp;quot;Use pager:&amp;quot;. Now I&#39;ll select &amp;quot;Display all items&amp;quot; and click on &amp;quot;Apply&amp;quot;. I&#39;ll click &amp;quot;Apply&amp;quot; again in response to the next window about offset values. The &amp;quot;Use pager:&amp;quot; field should now have the values &amp;quot;Display all items | All items&amp;quot;.&lt;/p&gt;
&lt;p&gt;I&#39;ll click &amp;quot;Save&amp;quot; now and move on to creating my other contextual displays. I can easily do that from the same Views interface I&#39;ve been working on in this post. I just click &amp;quot;+Add&amp;quot; in the Views interface and select &amp;quot;Page&amp;quot; to create a copy of the display that I have just made. I&#39;ll change &amp;quot;Content: Content type (= DLL Work)&amp;quot; in the &amp;quot;Filter Criteria&amp;quot; section to &amp;quot;Content: Content type (= Item Record)&amp;quot;. Now the relationship and contextual filter I created previously will apply to this display, too, only this time it will display &amp;quot;Item Record&amp;quot; content. I need to change the URL, too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: When changing the filter criteria, select &amp;quot;This page (override)&amp;quot; in the &amp;quot;For&amp;quot; dropdown at the top of the window. Otherwise, whatever you do will apply to EVERY display in the View.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Another note&lt;/strong&gt;: Give your pages distinctive names by clicking the &amp;quot;Display name&amp;quot; link and entering something descriptive. That makes managing the site much easier.&lt;/p&gt;
&lt;p&gt;I might have to come back to this view when I start to work on theming the content type that will use it, but at least it does what I need it to do for now.&lt;/p&gt;
&lt;h2&gt;Takeaway&lt;/h2&gt;
&lt;p&gt;Views is a powerful, extremely useful feature of Drupal. It&#39;s no wonder that it became a part of Drupal&#39;s core starting with version 8. Relationships and contexts make Views even more versatile, since they make it easy to connect content on a Drupal site in a dynamic way.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part VI: Customizing the Footer</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-6/" />
    <updated>2024-07-15T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-6/</id>
    <content type="html">&lt;p&gt;The footer on the old Drupal 7 version of the DLL Catalog site looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-old.png&quot; alt=&quot;Screenshot of the old footer&quot; title=&quot;Old footer&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After migration to Drupal 10, this is what the footer looks like without any extra theming:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-unthemed.png&quot; alt=&quot;Screenshot of the unthemed footer&quot; title=&quot;Unthemed footer&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I kind of like the darker gray, so I&#39;ll keep it. But I need to restore the footer menu, the contact information, and the social media icons and links.&lt;/p&gt;
&lt;h2&gt;Inspecting the Structure of the Footer&lt;/h2&gt;
&lt;p&gt;Using the Developer Tools, I see that the footer is handled by a number of different templates, but &lt;code&gt;region.html.twig&lt;/code&gt; is the one responsible for the overall structure. Since I want to have three columns in my footer (one each for navigation, social media, and contact information), I&#39;m going to use Twig&#39;s file name suggestion and create a new template in my subtheme&#39;s &lt;code&gt;templates/layouts&lt;/code&gt; directory called &lt;code&gt;region--footer.html.twig&lt;/code&gt;. I&#39;ll copy the contents of Bootstrap5 parent theme&#39;s &lt;code&gt;region.html.twig&lt;/code&gt; file as a starting place and customize it for my purposes.&lt;/p&gt;
&lt;h2&gt;Creating a Three-column Layout&lt;/h2&gt;
&lt;p&gt;My new &lt;code&gt;region--footer.html.twig&lt;/code&gt; template looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region-&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~&lt;/span&gt; region&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;clean_class&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;if&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;classes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; content &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt; &lt;span class=&quot;token tag-name keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To create the three-column layout, I&#39;ll focus on the part between the &lt;code&gt;if content&lt;/code&gt; and &lt;code&gt;endif&lt;/code&gt; tags.&lt;/p&gt;
&lt;p&gt;In Bootstrap, columns are easy to make: we need a &lt;code&gt;div&lt;/code&gt; with class &lt;code&gt;container&lt;/code&gt;, another &lt;code&gt;div&lt;/code&gt; inside that with class &lt;code&gt;row&lt;/code&gt;, and then &lt;code&gt;div&lt;/code&gt;s with class &lt;code&gt;col&lt;/code&gt; inside of that. So, here&#39;s my customized template, with some placeholder text:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region-&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~&lt;/span&gt; region&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;clean_class&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;classes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row align-items-start&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;First column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Second column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Third column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After clearing the caches, this is what it looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-columns.png&quot; alt=&quot;Screenshot of the three columns&quot; title=&quot;Footer with columns&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&#39;s a start. I want the first column to have a footer navigation menu, and I&#39;d like to use that to point users to other parts of the DLL&#39;s corner of the internet. In my case, the footer menu from the old site came over in the migration, so I can simply place the menu into the first column with some help from the &lt;a href=&quot;https://www.drupal.org/project/twig_tweak&quot;&gt;Twig Tweak module&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Place an Existing Menu&lt;/h2&gt;
&lt;p&gt;The first step in placing a menu into a template is finding the machine name for the block. The simplest way to do this is in the UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;admin/structure/menu&lt;/code&gt; in your site&lt;/li&gt;
&lt;li&gt;Look for the menu you want and click &amp;quot;Edit menu&amp;quot;&lt;/li&gt;
&lt;li&gt;Copy whatever is in the &amp;quot;Machine name&amp;quot; field. In my case, it was &lt;code&gt;menu-footer-menu&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When you have the machine name of your block, add it to the Twig template like this:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_menu&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;menu-footer-menu&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In my case, I did this:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region-&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~&lt;/span&gt; region&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;clean_class&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;classes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row align-items-start&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_menu&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;menu-footer-menu&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Second column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Third column&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That does the trick for my footer navigation menu:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-with-menu.png&quot; alt=&quot;Screenshot of the footer with menu&quot; title=&quot;Footer with menu&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Social Icons&lt;/h2&gt;
&lt;p&gt;I like to use &lt;a href=&quot;https://www.niftybuttons.com/&quot;&gt;Nifty Buttons&lt;/a&gt; for social media icons. It makes the job easy and quick with a very simple workflow. I need icons for Facebook, Twitter (a.k.a. &amp;quot;X&amp;quot;), and YouTube, so I&#39;ll go to Nifty Buttons and select my icons, choose the background shape, customize the colors, and add the links to the social media feeds. I choose to donate to the developer, so after I take care of that, I get my code:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- Social Media Icons by NiftyButtons https://niftybuttons.com --&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; grid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://www.facebook.com/digitallatin&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;#fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-facebook&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;fac&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Facebook&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Facebook social icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M211.9 197.4h-36.7v59.9h36.7V433.1h70.5V256.5h49.2l5.2-59.1h-54.4c0 0 0-22.1 0-33.7 0-13.9 2.8-19.5 16.3-19.5 10.9 0 38.2 0 38.2 0V82.9c0 0-40.2 0-48.8 0 -52.5 0-76.1 23.1-76.1 67.3C211.9 188.8 211.9 197.4 211.9 197.4z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://x.com/digitallatin&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;#fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-twitter&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;twi&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Twitter&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Twitter social icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M419.6 168.6c-11.7 5.2-24.2 8.7-37.4 10.2 13.4-8.1 23.8-20.8 28.6-36 -12.6 7.5-26.5 12.9-41.3 15.8 -11.9-12.6-28.8-20.6-47.5-20.6 -42 0-72.9 39.2-63.4 79.9 -54.1-2.7-102.1-28.6-134.2-68 -17 29.2-8.8 67.5 20.1 86.9 -10.7-0.3-20.7-3.3-29.5-8.1 -0.7 30.2 20.9 58.4 52.2 64.6 -9.2 2.5-19.2 3.1-29.4 1.1 8.3 25.9 32.3 44.7 60.8 45.2 -27.4 21.4-61.8 31-96.4 27 28.8 18.5 63 29.2 99.8 29.2 120.8 0 189.1-102.1 185-193.6C399.9 193.1 410.9 181.7 419.6 168.6z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://www.youtube.com/@DigitalLatinLibrary&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;#fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-youtube&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;you&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;YouTube&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;YouTube social icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M422.6 193.6c-5.3-45.3-23.3-51.6-59-54 -50.8-3.5-164.3-3.5-215.1 0 -35.7 2.4-53.7 8.7-59 54 -4 33.6-4 91.1 0 124.8 5.3 45.3 23.3 51.6 59 54 50.9 3.5 164.3 3.5 215.1 0 35.7-2.4 53.7-8.7 59-54C426.6 284.8 426.6 227.3 422.6 193.6zM222.2 303.4v-94.6l90.7 47.3L222.2 303.4z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://catalog.digitallatin.org/rss&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;#fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-rss&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rss&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;RSS&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;RSS icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M201.8 347.2c0 20.3-16.5 36.8-36.8 36.8 -20.3 0-36.8-16.5-36.8-36.8s16.5-36.8 36.8-36.8C185.3 310.4 201.8 326.8 201.8 347.2zM128.2 204.7v54.5c68.5 0.7 124 56.3 124.7 124.7h54.5C306.7 285.3 226.9 205.4 128.2 204.7zM128.2 166.6c57.9 0.3 112.3 22.9 153.2 63.9 41 41 63.7 95.5 63.9 153.5h54.5c-0.3-149.9-121.7-271.4-271.6-271.9V166.6L128.2 166.6z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s cool, but I made some alterations. For one, that&#39;s a lot of CSS in the &lt;code&gt;style&lt;/code&gt; attribute, and it&#39;s repeated four times. I like to keep my code &amp;quot;&lt;a href=&quot;https://thevaluable.dev/dry-principle-cost-benefit-example/&quot;&gt;DRY&lt;/a&gt;&amp;quot; (&amp;quot;Don&#39;t Repeat Yourself&amp;quot;), as much as possible, so I&#39;ve copied the content of &lt;code&gt;style&lt;/code&gt; on &lt;code&gt;a&lt;/code&gt; into a class in my subtheme&#39;s &lt;code&gt;style.scss&lt;/code&gt; file and replaced the entire &lt;code&gt;style&lt;/code&gt; attribute string with &lt;code&gt;class=&amp;quot;social-icon&amp;quot;&lt;/code&gt;. In my &lt;code&gt;style.scss&lt;/code&gt; file, I added this:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.social-icon&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 36px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also didn&#39;t want my icons to be on one line, but rather stacked vertically. To accomplish that, I replaced the style of the parent &lt;code&gt;div&lt;/code&gt; with &lt;code&gt;display: grid&lt;/code&gt;. That&#39;s all it took! Here&#39;s the footer with the social icons:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-with-social.png&quot; alt=&quot;Screenshot of the footer with social icons&quot; title=&quot;Footer with social icons&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Contact Information&lt;/h2&gt;
&lt;p&gt;For the contact information, I&#39;m going to use a Drupal block. I could hard code it into the template, but hard-coding text is to be avoided, if possible, because it makes it difficult for future developers to track down. It&#39;s best to leave content in the Content Management System and reserve cosmetics for the theme.&lt;/p&gt;
&lt;p&gt;As it happens, my footer contact block was included in the migration, so I don&#39;t have to do much. To create a custom block, go to &lt;code&gt;admin/content/block&lt;/code&gt; in the UI and select &amp;quot;+Add content block&amp;quot;. Add a description of the block in the &amp;quot;Block description&amp;quot; field and then insert the content into the &amp;quot;Body&amp;quot; field and click &amp;quot;Save&amp;quot;.&lt;/p&gt;
&lt;p&gt;I need to find the ID of my footer contact block. The simplest way to do that is in the UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;admin/content/block&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click the link for the block that you want&lt;/li&gt;
&lt;li&gt;Look at the URL in the browser: the ID is the last part of the address.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;My footer contact block has ID &amp;quot;2&amp;quot;, so now I can insert the following into my Twig template:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_entity&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;block_content&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&#39;s the code for the final column of my footer:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_entity&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;block_content&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&#39;s how it looks:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-contact.png&quot; alt=&quot;Screenshot of the footer with contact info&quot; title=&quot;Footer with contact&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Almost done!&lt;/p&gt;
&lt;h2&gt;Copyright&lt;/h2&gt;
&lt;p&gt;On the old site, the copyright statement was just a simple text string: &amp;quot;© Copyright 2024 Digital Latin Library&amp;quot;. That&#39;s okay, but it means that I have to be sure to update the year each January 1. Since I often forget to do that, I&#39;m going to automate it with a Twig filter.&lt;/p&gt;
&lt;p&gt;Twig has a ton of built-in functionality, including a &lt;code&gt;date&lt;/code&gt; filter that, obviously, renders the date based on the information provided by the server. You can learn all about Twig filters at &lt;a href=&quot;https://twig.symfony.com/doc/3.x/&quot;&gt;https://twig.symfony.com/doc/3.x/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this simple case, I&#39;m going to add this to the &lt;code&gt;div&lt;/code&gt; that contains my site&#39;s contact information:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;copyright&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  © &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;now&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; date&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;Y&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt; Digital Latin Library&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That translates to &amp;quot;get the current date and show only the year.&amp;quot;&lt;/p&gt;
&lt;p&gt;After clearing the cache, this is how my footer looks:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-copyright.png&quot; alt=&quot;Screenshot of the footer with copyright&quot; title=&quot;Footer with copyright&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Adding a Hint of Pizzazz&lt;/h2&gt;
&lt;p&gt;It&#39;s nice to show users which links are active, so I&#39;m going to add some CSS to make the links change color when a user hovers the mouse over them:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;footer.footer-dark a:hover,&lt;br /&gt;.social-icon a:hover&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #a33701&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the links turn a reddish-brown color on hover.&lt;/p&gt;
&lt;h2&gt;Making the Footer More Responsive&lt;/h2&gt;
&lt;p&gt;The footer looks okay on large and medium devices, but it&#39;s going to run into trouble on small screens because the columns are going to be scrunched into each other. I&#39;d prefer them to be stacked on top of each other instead, so I&#39;ll edit their class to &lt;code&gt;col-md&lt;/code&gt;. The &lt;code&gt;md&lt;/code&gt; stands for &lt;code&gt;medium&lt;/code&gt;, and it refers to the breakpoint at which stacking will cease to occur. My final code for the footer looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{%&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag-name keyword&quot;&gt;set&lt;/span&gt; classes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;region-&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~&lt;/span&gt; region&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;clean_class&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;%}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; attributes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;addClass&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;classes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;container&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;row align-items-start&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;footer-menu&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-md&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;{# Insert the footer menu. #}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_menu&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;menu-footer-menu&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;social-media-icons&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-md&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- Social Media Icons by NiftyButtons https://niftybuttons.com --&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; grid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://www.facebook.com/digitallatin&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;social-icon&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-facebook&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;fac&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Facebook&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Facebook social icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M211.9 197.4h-36.7v59.9h36.7V433.1h70.5V256.5h49.2l5.2-59.1h-54.4c0 0 0-22.1 0-33.7 0-13.9 2.8-19.5 16.3-19.5 10.9 0 38.2 0 38.2 0V82.9c0 0-40.2 0-48.8 0 -52.5 0-76.1 23.1-76.1 67.3C211.9 188.8 211.9 197.4 211.9 197.4z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://x.com/digitallatin&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;social-icon&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-twitter&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;twi&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Twitter&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Twitter social icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M419.6 168.6c-11.7 5.2-24.2 8.7-37.4 10.2 13.4-8.1 23.8-20.8 28.6-36 -12.6 7.5-26.5 12.9-41.3 15.8 -11.9-12.6-28.8-20.6-47.5-20.6 -42 0-72.9 39.2-63.4 79.9 -54.1-2.7-102.1-28.6-134.2-68 -17 29.2-8.8 67.5 20.1 86.9 -10.7-0.3-20.7-3.3-29.5-8.1 -0.7 30.2 20.9 58.4 52.2 64.6 -9.2 2.5-19.2 3.1-29.4 1.1 8.3 25.9 32.3 44.7 60.8 45.2 -27.4 21.4-61.8 31-96.4 27 28.8 18.5 63 29.2 99.8 29.2 120.8 0 189.1-102.1 185-193.6C399.9 193.1 410.9 181.7 419.6 168.6z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://www.youtube.com/@DigitalLatinLibrary&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;social-icon&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-youtube&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;you&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;YouTube&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;YouTube social icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M422.6 193.6c-5.3-45.3-23.3-51.6-59-54 -50.8-3.5-164.3-3.5-215.1 0 -35.7 2.4-53.7 8.7-59 54 -4 33.6-4 91.1 0 124.8 5.3 45.3 23.3 51.6 59 54 50.9 3.5 164.3 3.5 215.1 0 35.7-2.4 53.7-8.7 59-54C426.6 284.8 426.6 227.3 422.6 193.6zM222.2 303.4v-94.6l90.7 47.3L222.2 303.4z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://catalog.digitallatin.org/rss&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;_blank&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noopener noreferrer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;social-icon&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;niftybutton-rss&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;currentColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-donate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;rss&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;RSS&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;viewbox&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0 0 512 512&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;preserveaspectratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;xMidYMid meet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;RSS icon&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;path&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;M201.8 347.2c0 20.3-16.5 36.8-36.8 36.8 -20.3 0-36.8-16.5-36.8-36.8s16.5-36.8 36.8-36.8C185.3 310.4 201.8 326.8 201.8 347.2zM128.2 204.7v54.5c68.5 0.7 124 56.3 124.7 124.7h54.5C306.7 285.3 226.9 205.4 128.2 204.7zM128.2 166.6c57.9 0.3 112.3 22.9 153.2 63.9 41 41 63.7 95.5 63.9 153.5h54.5c-0.3-149.9-121.7-271.4-271.6-271.9V166.6L128.2 166.6z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;contact&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;col-md&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; drupal_entity&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;block_content&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;copyright&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          © &lt;span class=&quot;token twig language-twig&quot;&gt;&lt;span class=&quot;token delimiter punctuation&quot;&gt;{{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;now&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; date&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;Y&lt;span class=&quot;token punctuation&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token delimiter punctuation&quot;&gt;}}&lt;/span&gt;&lt;/span&gt; Digital Latin Library&lt;br /&gt;        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On small screens, the footer now looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/footer-columns-stacked.png&quot; alt=&quot;Screenshot of the footer with stacked columns&quot; title=&quot;Footer with stacked columns&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Making a columnar layout is easy with Bootstrap&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://www.drupal.org/project/twig_tweak&quot;&gt;Twig Tweak module&lt;/a&gt; makes it easy to place Drupal menus and blocks wherever you need to place them, if you know how to find the information you need&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.niftybuttons.com/&quot;&gt;Nifty Buttons&lt;/a&gt; is an excellent source for social media icons&lt;/li&gt;
&lt;li&gt;Twig functions can interact with the server to get the current date&lt;/li&gt;
&lt;li&gt;Bootstrap&#39;s &lt;code&gt;col&lt;/code&gt; style can be enhanced with breakpoints (e.g., &lt;code&gt;col-md&lt;/code&gt;) to tell browsers to display the content differently according to screen size&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the next post, I&#39;ll work on the contextual views I&#39;ll need before I work on styling the content types.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding A Theme, Part V: Customizing the Navbar</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-5/" />
    <updated>2024-07-12T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-5/</id>
    <content type="html">&lt;h2&gt;Bootstrap&#39;s Navbar&lt;/h2&gt;
&lt;p&gt;I could spend a long time reinventing the wheel or implementing a snazzy navigation bar, but I don&#39;t have that kind of time, and I&#39;m not a professional graphic designer. I want something simple that just works. Fortunately, &lt;a href=&quot;https://getbootstrap.com/docs/5.3/components/navbar/&quot;&gt;Bootstrap&#39;s navbar&lt;/a&gt; has me covered. The trade-off is that my site&#39;s navbar will look like other sites made with Bootstrap, but that&#39;s okay with me. The ease of implementing a responsive navbar more than makes up for it.&lt;/p&gt;
&lt;p&gt;Still, there are things I can do to make my site distinctive. That&#39;s the subject of this post.&lt;/p&gt;
&lt;h2&gt;My Navbar Without Styling&lt;/h2&gt;
&lt;p&gt;As a reminder, after I changed the background color of the navbar in the &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-4&quot;&gt;last post&lt;/a&gt;, my site&#39;s header looked like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/new-navbar-color.png&quot; alt=&quot;Screenshot of my new navbar color&quot; title=&quot;New Navbar Color&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Logo&lt;/h2&gt;
&lt;p&gt;The name of the site and its logo are handled by the &amp;quot;branding block&amp;quot;. My subtheme of Bootstrap5 came with a logo.svg (= &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/SVG&quot;&gt;Scalable Vector Graphic&lt;/a&gt;, a particularly good format for images that must be used in different places with different sizes), a favicon.ico file, and a screenshot.png file to display in the &amp;quot;Appearance&amp;quot; menu of Drupal&#39;s user interface. My first task is to replace them with the DLL&#39;s files.&lt;/p&gt;
&lt;p&gt;I happened to have those files from a previous version of the site, so I dropped them into the subtheme&#39;s root directory. Since the &amp;quot;Appearance&amp;quot; menu of my site is already set to use the theme&#39;s logo and shortcut icon, I just cleared the caches (&lt;code&gt;drush cr&lt;/code&gt;), and voilà:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/new-logo.png&quot; alt=&quot;Screenshot of the site with the DLL&#39;s logo&quot; title=&quot;DLL&#39;s logo&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Site Name&lt;/h2&gt;
&lt;p&gt;As the last screenshot shows, I now have a logo that says &amp;quot;Digital Latin Library&amp;quot; and some text that says &amp;quot;DLL CATALOG&amp;quot; in big, chunky letters. I want the text to match or at least resemble the text on the old site:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/old-logo-and-name.png&quot; alt=&quot;Screenshot of the old site&#39;s branding block&quot; title=&quot;Old Branding Block&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I can do this with some CSS code. Using my browser&#39;s Developer Tools, I inspect the site&#39;s name and find that it has the class &amp;quot;site-title&amp;quot;:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Home&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;home&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;site-title&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;DLL Catalog&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The CSS window shows that the following code applies to that class:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; bold&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token property&quot;&gt;letter-spacing&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If I remove the &lt;code&gt;font-weight&lt;/code&gt; and &lt;code&gt;text-transform&lt;/code&gt; properties, my site&#39;s name looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/name-updated-style.png&quot; alt=&quot;Screenshot of the site&#39;s name with updated style&quot; title=&quot;Updated site name&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&#39;s better, but not quite what I want yet. If I bump the &lt;code&gt;font-size&lt;/code&gt; up to &lt;code&gt;2rem&lt;/code&gt; and set the &lt;code&gt;font-weight&lt;/code&gt; to &lt;code&gt;lighter&lt;/code&gt;, it looks good enough for my purposes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/name-lighter-bigger.png&quot; alt=&quot;Screenshot of the site&#39;s name with larger and lighter font&quot; title=&quot;Updated site name&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We&#39;re almost there, but there&#39;s a problem: on smaller screens (e.g., tablets and phones), the &lt;code&gt;2rem&lt;/code&gt; font size will be out of proportion to the logo, which will scale down as the screen size decreases. Instead of specifying separate sizes for tablets and phones, I can use the value &lt;code&gt;larger&lt;/code&gt;, which is proportional. I&#39;ll also use a &lt;a href=&quot;https://getbootstrap.com/docs/5.3/layout/breakpoints/#media-queries&quot;&gt;media query&lt;/a&gt; to make the value change according to screen size:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Change the appearance of the site&#39;s name */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.navbar-brand .site-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; larger&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; lighter&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;letter-spacing&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;/* Media query for large screens */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;min-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 992px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token selector&quot;&gt;.navbar-brand .site-title&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, as we&#39;ll see below, the font size of the site&#39;s name changes in proportion to the screen size. That&#39;s an improvement from the standpoint of accessibility, since the site&#39;s name in the old version was part of an image file. Now it is in plain text for anyone to read, however they might read it.&lt;/p&gt;
&lt;h2&gt;Menus&lt;/h2&gt;
&lt;p&gt;Just looking at the screenshot above, it&#39;s clear that the navigation menu is out of control. The old site had menus with sub menus leading to pages on the other sites in the DLL&#39;s domain. There was a point to that: to make sure that users understood where they were in the DLL&#39;s corner of the internet. After all, we have the main informational site (&lt;a href=&quot;https://digitallatin.org/&quot;&gt;https://digitallatin.org/&lt;/a&gt;), the online reading interface for &lt;em&gt;Library of Digital Latin Texts&lt;/em&gt; (&lt;a href=&quot;https://ldlt.digitallatin.org/&quot;&gt;https://ldlt.digitallatin.org/&lt;/a&gt;), and the DLL Catalog (&lt;a href=&quot;https://catalog.digitallatin.org/&quot;&gt;https://catalog.digitallatin.org/&lt;/a&gt;), so it is important to provide some signposting for users. But the way we were doing it on the old version of the catalog site made the navigation far too busy and cluttered. Besides, it&#39;s best to keep a site&#39;s main navigation menu simple so that it will be easy to use on mobile, tablet, laptop, and desktop devices. Moreover, dropdown submenus have to be styled, and that is a tedious job.&lt;/p&gt;
&lt;p&gt;Fortunately, clearing up the main navigation menu is simple. When I &lt;a href=&quot;https://sjhuskey.info/posts/drupal-7-to-drupal-10/&quot;&gt;migrated the site to Drupal 10&lt;/a&gt;, all the menus were included. That means that I can go into the &amp;quot;Menus&amp;quot; interface (&lt;code&gt;/admin/structure/menu&lt;/code&gt;) and turn off or delete any items I don&#39;t want to appear in the new version.&lt;/p&gt;
&lt;p&gt;For now, I&#39;ll disable all the main menu items:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/navbar-no-main.png&quot; alt=&quot;Screenshot of the navbar without main menu&quot; title=&quot;Navbar minus main menu&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The navbar still has the user menu (&amp;quot;My Account&amp;quot; and &amp;quot;Log Out&amp;quot; for logged-in users) and a search bar. I don&#39;t need the user menu, since users don&#39;t need accounts to use the site, and I can log in using &lt;code&gt;/user/login&lt;/code&gt; whenever I need to. I also plan to make the search bar a much more prominent part of the site, so I can get rid of that, too. In this case, instead of disabling those menu items, I&#39;ll edit the Twig template &lt;code&gt;page.html.twig&lt;/code&gt;, which has this code near the top:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;navbar-toggler collapsed&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;button&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;data-bs-toggle&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;collapse&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;data-bs-target&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;#navbarSupportedContent&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;aria-controls&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;navbarSupportedContent&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;aria-expanded&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;false&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;aria-label&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Toggle navigation&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;navbar-toggler-icon&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;collapse navbar-collapse justify-content-md-end&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;navbarSupportedContent&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   {{ page.nav_main }} {{ page.nav_additional }} &lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The user menu and search bar are included in &lt;code&gt;{{ page.nav_additional }}&lt;/code&gt;, so if I remove that line, I&#39;ll have this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/navbar-no-menus-at-all.png&quot; alt=&quot;Screenshot of the navbar without any menu items&quot; title=&quot;Navbar minus all menus&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now I can think more clearly about what I want in that space. The old site had a secondary menu with links relevant to the DLL Catalog:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/old-site-secondary-menu.png&quot; alt=&quot;Screenshot of the old site&#39;s secondary menu&quot; title=&quot;Old site&#39;s secondary menu&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It would make a lot more sense to put that into the main navigation space. So, I&#39;ll go into the &amp;quot;Menus&amp;quot; interface (&lt;code&gt;/admin/structure/menu&lt;/code&gt;) edit the &amp;quot;Main menu&amp;quot; (&lt;code&gt;/admin/structure/menu/manage/main&lt;/code&gt;), et voilà:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/navbar-new-menu-items.png&quot; alt=&quot;Screenshot of the navbar with menu items&quot; title=&quot;Navbar with menu items&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What&#39;s more, without having to do anything extra (other than the media query I mentioned above), my navbar responds well to different screen sizes. I can do a quick check with my browser&#39;s &amp;quot;Developer Tools&amp;quot; if I click on the icon that looks like a phone next to a tablet. That opens up a new menu that lets me emulate the appearance of my site on numerous devices of different shapes and sizes.&lt;/p&gt;
&lt;p&gt;Here is my navbar on a tablet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/navbar-tablet.png&quot; alt=&quot;Screenshot of the navbar on a tablet&quot; title=&quot;Navbar on a tablet&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here it is on a phone:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/navbar-phone.png&quot; alt=&quot;Screenshot of the navbar on a phone&quot; title=&quot;Navbar on a phone&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In both cases, the menu turns into a &amp;quot;hamburger menu&amp;quot; that will expand when clicked:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/navbar-hamburger.png&quot; alt=&quot;Screenshot of the navbar hamburger menu&quot; title=&quot;Navbar hamburger menu&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I didn&#39;t have to write any code to make that happens, since it is baked into Bootstrap&#39;s grid system!&lt;/p&gt;
&lt;p&gt;Now that I&#39;ve styled the navbar, I&#39;ll work on the footer in the next post.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding a Theme, Part IV: Working with Bootstrap</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-4/" />
    <updated>2024-07-11T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-4/</id>
    <content type="html">&lt;p&gt;Bootstrap has a lot of default settings, so it&#39;s good to familiarize yourself with how the subtheme handles the defaults and, more importantly, how to override them.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.drupal.org/project/bootstrap5&quot;&gt;Bootstrap5&lt;/a&gt; theme handles default settings and overrides in an intelligent way. In the &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-2&quot;&gt;subtheme that I made earlier&lt;/a&gt;, there&#39;s a directory called &lt;code&gt;scss&lt;/code&gt;. It contains four files:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;_variables_bootstrap.scss&lt;/li&gt;
&lt;li&gt;_variables_drupal.scss&lt;/li&gt;
&lt;li&gt;ck5style.scss&lt;/li&gt;
&lt;li&gt;style.scss&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The extension &lt;code&gt;.scss&lt;/code&gt; stands for &amp;quot;Sassy Cascading Style Sheets, by the way. I don&#39;t know how &amp;quot;sassy&amp;quot; they are, but it&#39;s a cool system for dealing with CSS.&lt;/p&gt;
&lt;h2&gt;_variables_bootstrap.scss&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;_variables_bootstrap.scss&lt;/code&gt; file is where I&#39;ll override any of the Bootstrap settings that I might want to customize. The subtheme already has the following overrides:&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Bootstrap variables (overrides).&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token property&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$form-text-margin-top&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token property&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$legend-font-size&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token property&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$table-cell-padding-x&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obviously, I need to know the names of the variables before I can override them. Fortunately, I can look to the parent theme for that. The file at &lt;code&gt;web/themes/contrib/bootstrap5/dist/bootstrap/5.3.3/scss/_variables.scss&lt;/code&gt; lists most of the available variables. If I want to override one across the site, I can copy its name into the &lt;code&gt;_variables_bootstrap.scss&lt;/code&gt; file and enter the updated value(s) for it.&lt;/p&gt;
&lt;p&gt;Let&#39;s say you have a specific shade of blue that is important for your organization&#39;s brand. You could use the &lt;code&gt;_variables_bootstrap.scss&lt;/code&gt; file to set the variable &lt;code&gt;$blue&lt;/code&gt; to your shade of blue. That way, you can just use the word &amp;quot;blue&amp;quot; in your CSS. Bear in mind, however, that you&#39;ll affect the other shades of blue that are built into Bootstrap. You could also use these variables to set a specific color for links, font-size, and many, many other aspects of the look of your site.&lt;/p&gt;
&lt;h2&gt;_variables_drupal.scss&lt;/h2&gt;
&lt;p&gt;The Bootstrap5 theme also has a bunch of default settings above and beyond what Bootstrap makes available. The &lt;code&gt;_variables_drupal.scss&lt;/code&gt; file in the subtheme already has this:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;// Theme variables.&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-image-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 36px !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-image-height-lg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 60px !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-image-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; auto !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-image-margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 1rem 0 0 !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-site-title-text-transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; uppercase !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-site-title-font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-site-title-font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; bold !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-site-title-letter-spacing&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;navbar-brand-site-slogan-font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.875rem !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;region-padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0.5rem !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;footer-padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem 0 !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;nav-tabs-link-active-bg-sm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #dee2e6 !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;local-tasks-primary-margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem 0 !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;local-tasks-secondary-margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0 1rem 0 !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$&lt;span class=&quot;token property&quot;&gt;table-striped-bg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #f9f9f9 !default&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The full list of available &amp;quot;theme&amp;quot; variables can be found at &lt;code&gt;web/themes/contrib/bootstrap5/scss/drupal&lt;/code&gt;. That directory contains several files with transparent names like &lt;code&gt;_footer.scss&lt;/code&gt; and &lt;code&gt;_navbar.scss&lt;/code&gt; that make it easy to identify the file that matters to you. Well done, Bootstrap5 developers!&lt;/p&gt;
&lt;h2&gt;ck5style.scss&lt;/h2&gt;
&lt;p&gt;Don&#39;t touch this file unless you really, really need to style specific things about the WYSIWYG editor CKEditor.&lt;/p&gt;
&lt;h2&gt;style.scss&lt;/h2&gt;
&lt;p&gt;This is where I&#39;ll do most of my styling work. For example, the &lt;code&gt;navbar&lt;/code&gt; in my brand-new subtheme is black. The Digital Latin Library&#39;s brand features a specific shade of blue (&lt;code&gt;#005cb9&lt;/code&gt;), and I&#39;d like to change the background color of the &lt;code&gt;navbar&lt;/code&gt; to that.&lt;/p&gt;
&lt;p&gt;I&#39;ll follow Carol Kelly&#39;s suggestion at &lt;a href=&quot;https://stackoverflow.com/a/43382283&quot;&gt;https://stackoverflow.com/a/43382283&lt;/a&gt; for accomplishing this objective.&lt;/p&gt;
&lt;p&gt;I&#39;ll need to override the Twig template for the navbar to change its CSS class, and I&#39;ll need to add some CSS code to &lt;code&gt;style.scss&lt;/code&gt; to define the new class.&lt;/p&gt;
&lt;p&gt;When I use my browser&#39;s Developer Tools to inspect the &lt;code&gt;navbar&lt;/code&gt;, I find that the Twig debugger tells me that it is handled by the &lt;code&gt;page.html.twig&lt;/code&gt; template. When I pull up that file in the Bootstrap5 parent theme&#39;s &lt;code&gt;templates/layouts&lt;/code&gt; directory, I can see a block that is setting a variable &lt;code&gt;nav_classes&lt;/code&gt;. That sets the navbar&#39;s classes to specific values for every page. After copying &lt;code&gt;page.html.twig&lt;/code&gt; to my subtheme&#39;s &lt;code&gt;templates/layouts&lt;/code&gt; directory, I&#39;ll add &lt;code&gt;navbar-custom&lt;/code&gt; to that first line, and then I&#39;ll define &lt;code&gt;navbar-custom&lt;/code&gt; in &lt;code&gt;style.scss&lt;/code&gt;. So, I&#39;ll change &lt;code&gt;set nav_classes = &#39;navbar navbar-expand-lg&#39; ~&lt;/code&gt; to &lt;code&gt;set nav_classes = &#39;navbar navbar-expand-lg navbar-custom&#39; ~&lt;/code&gt;. I also need to change the logic of this line:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;(b5_navbar_bg_schema != &#39;none&#39; ? &quot; bg-#{b5_navbar_bg_schema}&quot; : &#39; &#39;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to this:&lt;/p&gt;
&lt;pre class=&quot;language-twig&quot;&gt;&lt;code class=&quot;language-twig&quot;&gt;(b5_navbar_bg_schema != &#39;dark&#39; and b5_navbar_bg_schema != &#39;none&#39; ? &quot; bg-#{b5_navbar_bg_schema}&quot; : &#39;&#39;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The original version translates to &amp;quot;If the b5_navbar background scheme is not set to &#39;none&#39;, then set the background to the value of the navbar background schema; otherwise, set it to nothing.&amp;quot; The new version translates to &amp;quot;If the background schema is not &#39;dark&#39; and it isn&#39;t set to &#39;none&#39;, then set the background to the background schema; otherwise, set it to nothing.&amp;quot; That way, I can remove the &lt;code&gt;bg-dark&lt;/code&gt; class that is currently controlling the look of my header.&lt;/p&gt;
&lt;p&gt;Now, I need to define the style for &lt;code&gt;navbar-custom&lt;/code&gt;. I&#39;ll open &lt;code&gt;style.scss&lt;/code&gt; and add this below the existing content:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* ===================================================== &lt;br /&gt;    Navbar&lt;br /&gt;   ===================================================== */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;/* Cribbed from https://stackoverflow.com/a/43382283 */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;/* change the background color */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.navbar-custom&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #005cb9&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;/* change the link color */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.navbar-custom .navbar-nav .nav-link&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;/* change the color of active or hovered links */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token selector&quot;&gt;.navbar-custom .nav-item.active .nav-link,&lt;br /&gt;.navbar-custom .nav-item:focus .nav-link,&lt;br /&gt;.navbar-custom .nav-item:hover .nav-link&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #a33701&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice that I added a comment with some fancy formatting to make it stand out and to give some structure to my SCSS document. This will make it easier to maintain. I also added a comment to give credit where credit is due.&lt;/p&gt;
&lt;p&gt;I&#39;ve changed the background color of the navbar to the DLL&#39;s shade of blue. I also specified that the links in the navbar should be white (#fff), and when they are active they should be a reddish-brown color (#A33701).&lt;/p&gt;
&lt;p&gt;Since I made a change to &lt;code&gt;style.scss&lt;/code&gt;, I need to recompile the CSS. The theme&#39;s README file instructs me to execute the command &lt;code&gt;sass scss/style.scss css/style.css &amp;amp;&amp;amp; sass scss/ck5style.scss css/ck5style.css&lt;/code&gt; in the root directory of the subtheme. I did that, then I did &lt;code&gt;drush cr&lt;/code&gt; to clear the caches. The result is that my navbar&#39;s background color is now the right shade of blue!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/new-navbar-color.png&quot; alt=&quot;Screenshot of my new navbar color&quot; title=&quot;New Navbar Color&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&#39;ll take care of navbar&#39;s content in the next post.&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Bootstrap has a lot of pre-defined styles that can be overridden to customize the look of your site&lt;/li&gt;
&lt;li&gt;It&#39;s important to familiarize yourself with the variables that can be customized or overridden&lt;/li&gt;
&lt;li&gt;Theming in Bootstrap typically involves making changes to Twig templates——to add, remove, or change a CSS class or ID—and SCSS files—to define or override CSS classes&lt;/li&gt;
&lt;li&gt;Even though it took several lines of code in both Twig and SCSS to change the color of the background for a single region in the site, that change will be applied to the entire site, and I won&#39;t have to repeat that code anywhere else&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding a Theme, Part III: Working with Twig</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-3/" />
    <updated>2024-07-09T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-3/</id>
    <content type="html">&lt;p&gt;After creating my subtheme, this is what the front page looked like without any custom styling:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/new-subtheme.png&quot; alt=&quot;Screenshot of my bare subtheme&quot; title=&quot;New Subtheme&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I tend to work from top to bottom when doing front end work, so I&#39;m going to start with the &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, which contains everything inside the black bar in the image above.&lt;/p&gt;
&lt;p&gt;If I open my Web Developer Tools (see &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-1&quot;&gt;part 1&lt;/a&gt;), and scroll to the &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt; section, this is what I see:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/developer-tools.png&quot; alt=&quot;Screenshot of developer tools for header&quot; title=&quot;Developer Tools&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The lines in green text are supplied by the Twig debugger that I turned on earlier (again, see &lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-1&quot;&gt;part 1&lt;/a&gt;). They tell me which Twig files are responsible for rendering the content. If I&#39;m happy with them, I can leave them as they are. But if I want to change anything, I&#39;ll need to &lt;strong&gt;override&lt;/strong&gt; the Twig template.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;!-- FILE NAME SUGGESTIONS: …&amp;gt;&lt;/code&gt; comment tells developers two things: the name of the template currently responsible for rendering something and other potential names that are available, if the template needs to be overridden. The names go from very specific to generic as they go from left to right.&lt;/p&gt;
&lt;p&gt;For example, the following is the list of suggestions for the template that renders the entire page:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- FILE NAME SUGGESTIONS: ▪️ page--front.html.twig ▪️ page--node--9938.html.twig &lt;br /&gt; ▪️ page--node--%.html.twig ▪️ page--node.html.twig ✅ page.html.twig --&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The check mark in front of &lt;code&gt;page.html.twig&lt;/code&gt; tells me that it&#39;s the currently active template. As I read back up the list, I find increasingly specific names:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;page--node.html.twig&lt;/code&gt;: This is the name for a template that would handle all nodes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page--node--%.html.twig&lt;/code&gt;: The &lt;code&gt;%&lt;/code&gt; is a kind of placeholder for other information, such as what follows in the next point&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page--node--9938.html.twig&lt;/code&gt;: &amp;quot;9938&amp;quot; is the node ID of the content that is displayed on my front page. I could use this template name to give that node a special layout.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page--front.html.twig&lt;/code&gt;: &lt;code&gt;front&lt;/code&gt; specifies this template name for any node set as the front page&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Example: Overriding the Template for the Front Page&lt;/h2&gt;
&lt;p&gt;Let&#39;s say that I want to create a template just for the front page, so &lt;code&gt;page--front.html.twig&lt;/code&gt;. I need to make a new file with that name in my subtheme. For guidance on the location, I&#39;ll look at the Twig debug comment right below the file name suggestions:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from &#39;themes/contrib/bootstrap5/templates/layouts/page.html.twig&#39; --&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That tells me that the contributed theme Bootstrap5 supplies the current template for the front page. I can add the &lt;code&gt;templates/layouts&lt;/code&gt; directory structure to my subtheme and save the Bootstrap5 theme&#39;s &lt;code&gt;page.html.twig&lt;/code&gt; there as &lt;code&gt;page--front.html.twig&lt;/code&gt;. After clearing the cache &lt;code&gt;drush cr&lt;/code&gt; and reloading the front page in my browser, I now see this:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;&amp;lt;!--  FILE NAME SUGGESTIONS: ✅ page--front.html.twig ▪️ page--node--9938.html.twig ▪️ page--node--%.html.twig ▪️ page--node.html.twig ▪️ page.html.twig --&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;&amp;lt;!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from &#39;themes/custom/dll_catalog/templates/layouts/page--front.html.twig&#39; --&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See? My new &lt;code&gt;page--front.html.twig&lt;/code&gt; template is now being used. If I make changes to it, those changes will be reflected on the screen. And if the Bootstrap5 theme is upgraded, I won&#39;t lose my work.&lt;/p&gt;
&lt;h2&gt;Overriding Other Templates&lt;/h2&gt;
&lt;p&gt;Sometimes, the template that you need to override is not in the parent of your subtheme. In that case, the Twig debug messages will tell you where to look for the theme that is currently being used. A common place to look for templates is in &lt;code&gt;web/core/modules/system/templates&lt;/code&gt;, where you&#39;ll find all kinds of goodies. You can also look for templates in the theme listed in &lt;code&gt;web/core/themes&lt;/code&gt;, but be advised that many of them have content that depends on scripts provided elsewhere in the theme.&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;p&gt;In general, the process for overriding a template is the same no matter the source:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use Twig file name suggestion messages to identify the name of the theme you need to override and a more specific name for it&lt;/li&gt;
&lt;li&gt;Use Twig custom template output messages to find the location of the template you need to override&lt;/li&gt;
&lt;li&gt;Make a new file in your subtheme&lt;/li&gt;
&lt;li&gt;Alter the content of that file to suit your needs&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding a Theme, Part II: Creating a Subtheme</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-2/" />
    <updated>2024-07-03T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-2/</id>
    <content type="html">&lt;h2&gt;Install and Enable the Theme&lt;/h2&gt;
&lt;p&gt;There are several options for developing with Boostrap for Drupal. I have used &lt;a href=&quot;https://www.drupal.org/project/radix&quot;&gt;Radix&lt;/a&gt; before, and I liked it, but this time I want to use the &lt;a href=&quot;https://www.drupal.org/project/bootstrap5&quot;&gt;Bootstrap5&lt;/a&gt; theme because it isn&#39;t so heavily dependent on nodeJS.&lt;/p&gt;
&lt;p&gt;So:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the Bootstrap5 theme: &lt;code&gt;composer require &#39;drupal/bootstrap5:^4.0&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enable the Bootstrap5 theme: &lt;code&gt;drush then bootstrap5&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The README file included in the theme also suggests installing the companion module &lt;a href=&quot;https://www.drupal.org/project/twbstools&quot;&gt;Bootstrap 5 tools&lt;/a&gt;, but it doesn&#39;t have a stable release, and it hasn&#39;t been updated since 2022, so I&#39;m not going to do that.&lt;/p&gt;
&lt;h2&gt;Create a Subtheme&lt;/h2&gt;
&lt;p&gt;A subtheme allows developers to customize the theme without having all of their changes obliterated every time the theme is updated. The README provide a &lt;code&gt;drush&lt;/code&gt; command: &lt;code&gt;drush --include=&amp;quot;web/themes/contrib/bootstrap5/src/Drush&amp;quot; bootstrap5:generate-subtheme MACHINE_NAME --subtheme-name=&amp;quot;SUBTHEME_NAME&amp;quot;&lt;/code&gt;. Obviously, replace &lt;code&gt;MACHINE_NAME&lt;/code&gt; with the machine name for the subtheme (I&#39;m using &lt;code&gt;dll_catalog&lt;/code&gt;) and &lt;code&gt;SUBTHEME_NAME&lt;/code&gt; with a human-readable name (e.g., &amp;quot;DLL Catalog Theme&amp;quot;).&lt;/p&gt;
&lt;p&gt;If all goes well, there should now be a directory called &lt;code&gt;custom&lt;/code&gt; inside of &lt;code&gt;web/themes&lt;/code&gt;. There should also be a directory inside of &lt;code&gt;custom&lt;/code&gt; with the machine name that was specified in the drush command.&lt;/p&gt;
&lt;h2&gt;Enable the Subtheme and Set it as the Default&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Enable the subtheme: &lt;code&gt;drush then dll_catalog&lt;/code&gt; (or whatever the &lt;code&gt;SUBTHEME_NAME&lt;/code&gt; is)&lt;/li&gt;
&lt;li&gt;Set the subtheme as the default: &lt;code&gt;drush config-set system.theme default dll_catalog&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, clear the cache (&lt;code&gt;drush cr&lt;/code&gt;), go to your browser, and pull up your site. The new subtheme should be in control. Here&#39;s a screen shot of mine at this stage:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/front-end/new-subtheme.png&quot; alt=&quot;Screenshot of my bare subtheme&quot; title=&quot;New Subtheme&quot; class=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Already I like this implementation of Bootstrap better than what I&#39;ve found in Radix. Out of the box, as it were, the Bootstrap5 subtheme takes care of some things that I would have to handle with templates and CSS in Radix. Namely:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The content is centered in the browser window. It&#39;s not difficult to do that (see, for example, &lt;a href=&quot;https://mdbootstrap.com/docs/standard/layout/horizontal-alignment/&quot;&gt;https://mdbootstrap.com/docs/standard/layout/horizontal-alignment/&lt;/a&gt;), but it&#39;s nice not to have to cope with it.&lt;/li&gt;
&lt;li&gt;The footer is already pushed to the bottom of the browser window. That, too, can be dealt with easily, but I&#39;d rather move on to other things.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As much as I like those things, it&#39;s time to customize my subtheme.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding a Theme, Part I: Tricks and Tips</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-part-1/" />
    <updated>2024-07-02T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-part-1/</id>
    <content type="html">&lt;p&gt;Before I start blogging about the specifics of my front-end development project, I thought I should list some things I&#39;ve picked up over time about theming in Drupal.&lt;/p&gt;
&lt;h2&gt;Develop with DDEV&lt;/h2&gt;
&lt;p&gt;I do all my Drupal development work using &lt;a href=&quot;https://ddev.com/&quot;&gt;DDEV&lt;/a&gt; to run the site locally. See my post &lt;a href=&quot;https://sjhuskey.info/posts/using-ddev-local-drupal/&quot;&gt;Using ddev for Local Drupal Development&lt;/a&gt; for more information on using DDEV. It is so much better than the bad old days of using MAMP or a Virtual Machine!&lt;/p&gt;
&lt;p&gt;But since not everyone uses DDEV, I&#39;m going to leave &lt;code&gt;ddev&lt;/code&gt; off of several of the commands that I will mention in this series, lest I create confusion.&lt;/p&gt;
&lt;h2&gt;Use Your Browser&#39;s Development Tools&lt;/h2&gt;
&lt;p&gt;My main web browser is &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/new/&quot;&gt;Firefox&lt;/a&gt;, which has great Web Developer Tools available in Tools &amp;gt; Browser Tools &amp;gt; Web Developer Tools. These tools are essential for inspecting a page&#39;s code to identify what, exactly, needs to be selected for styling. There&#39;s also an interface for seeing how your page looks on different devices.&lt;/p&gt;
&lt;p&gt;On a Mac, the shortcut for activating the tools in Firefox is &lt;code&gt;⌘⌥c&lt;/code&gt; (command + option + c). I recommend memorizing what the shortcut is in your browser, since you&#39;ll need to use it a lot. I&#39;ll go so far as to say that you shouldn&#39;t even think about front-end development without figuring out how to use your browser&#39;s web development tools!&lt;/p&gt;
&lt;h2&gt;Install a CSS compiler&lt;/h2&gt;
&lt;p&gt;In my case, the theme I&#39;ll be working with uses SASS, which stands for &amp;quot;Syntactically Awesome Style Sheets.&amp;quot; According to the &lt;a href=&quot;https://sass-lang.com/&quot;&gt;website&lt;/a&gt;, &amp;quot;Sass is the most mature, stable, and powerful professional grade CSS extension language in the world.&amp;quot; Installation instructions are at &lt;a href=&quot;https://sass-lang.com/install/&quot;&gt;https://sass-lang.com/install/&lt;/a&gt;. In my case, I&#39;ll use Homebrew to install it on my Mac: &lt;code&gt;brew install sass/sass/sass&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In some cases, &lt;a href=&quot;https://www.npmjs.com/&quot;&gt;npm&lt;/a&gt; takes care of this step.&lt;/p&gt;
&lt;h2&gt;Set Up Drupal for Theme Development&lt;/h2&gt;
&lt;p&gt;First of all, install the &lt;a href=&quot;https://www.drupal.org/project/twig_tweak&quot;&gt;Twig Tweak module&lt;/a&gt;. It adds a bunch of functionality that you&#39;ll probably want or need. You should also familiarize yourself with the &lt;a href=&quot;https://git.drupalcode.org/project/twig_tweak/-/blob/3.x/docs/cheat-sheet.md&quot;&gt;Twig Tweak Cheat Sheet&lt;/a&gt;, which is indispensible.&lt;/p&gt;
&lt;p&gt;Twig is the default templating language for Drupal since version 8. In addition to being more user-friendly than the raw PHP of earlier versions of Drupal, Twig has some really helpful hinting and debugging features. To take advantage of these, you need to edit a couple of files in the &lt;code&gt;web/sites/default&lt;/code&gt; directory.&lt;/p&gt;
&lt;h3&gt;Turn on Twig Debugging&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;web/sites/default&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;default.services.yml&lt;/code&gt; and name the copy &lt;code&gt;services.yml&lt;/code&gt;: &lt;code&gt;cp default.services.yml services.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;services.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Scroll down to the section &lt;code&gt;twig.config&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change the line &lt;code&gt;debug: false&lt;/code&gt; to &lt;code&gt;debug: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Save and close&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Enable Local Settings&lt;/h3&gt;
&lt;p&gt;The local settings file adds some development tools.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;web/sites/default&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;example.settings.local.php&lt;/code&gt; and rename it &lt;code&gt;settings.local.php&lt;/code&gt;: &lt;code&gt;cp example.settings.local.php settings.local.php&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, edit &lt;code&gt;settings.php&lt;/code&gt; to tell Drupal to use the &lt;code&gt;settings.local.php&lt;/code&gt; file. You might have to change the permissions on &lt;code&gt;settings.php&lt;/code&gt; before you edit it. If you do have to change the permissions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;code&gt;web/sites/default&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Do &lt;code&gt;chmod ug=rwx settings.php&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;settings.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Scroll down to the bottom of the file&lt;/li&gt;
&lt;li&gt;Uncomment the last lines by deleting the &lt;code&gt;#&lt;/code&gt; sign at the beginning of each line&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The final lines of &lt;code&gt;settings.php&lt;/code&gt; should now look like this:&lt;/p&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;file_exists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$app_root&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;/&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$site_path&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;/settings.local.php&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$app_root&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;/&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$site_path&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;/settings.local.php&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Don&#39;t forget to reset the permissions on &lt;code&gt;settings.php&lt;/code&gt;: &lt;code&gt;chmod ug=r,o= settings.php&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Be sure to clear the caches: &lt;code&gt;drush cr&lt;/code&gt;.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Rebuilding a Theme after Upgrading from Drupal 7 to Drupal 10: Introduction</title>
    <link href="https://sjhuskey.info/posts/upgrading-theme-intro/" />
    <updated>2024-06-23T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/upgrading-theme-intro/</id>
    <content type="html">&lt;p&gt;For me, the worst part of upgrading a &lt;a href=&quot;https://drupal.org/&quot;&gt;Drupal&lt;/a&gt; site from 7 to the latest version (I&#39;ve done upgrades to 8, 9, and 10) is rebuilding the theme. Since Drupal 8 introduced an entirely new theming framework, themes for Drupal 7 sites simply will not work on an upgraded site, so the only choices are to rebuild the theme from scratch or build a new one. Either way, if you&#39;re not a front-end developer or if you don&#39;t have the funds to pay one to do the work for you, this part of an upgrade can seem like an insurmountable obstacle.&lt;/p&gt;
&lt;p&gt;I&#39;m here to tell you that it&#39;s not. It&#39;s doable, if you have at least some familiarity with &lt;a href=&quot;https://www.w3.org/Style/CSS/&quot;&gt;CSS&lt;/a&gt; and &lt;a href=&quot;https://html.spec.whatwg.org/multipage/&quot;&gt;HTML&lt;/a&gt;, and if you&#39;re willing to invest some time into learning &lt;a href=&quot;https://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt; and &lt;a href=&quot;https://twig.symfony.com/&quot;&gt;Twig&lt;/a&gt;. To be honest, even if you don&#39;t know anything about those things, you can make a significant amount of progress with hints from Chat-GPT et al.&lt;/p&gt;
&lt;p&gt;I have upgraded two Drupal 7 sites that had custom themes designed by a front-end development company that charged a lot of money (i.e., &amp;gt; $30,000). In both cases, I rebuilt the theme so that it strongly resembles the original D7 custom theme. Since I am by no means a graphic designer, that was the most direct path to getting the sites back online after the upgrade.&lt;/p&gt;
&lt;p&gt;I decided to base the new themes on &lt;a href=&quot;https://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt;, because it automagically takes care of a lot of the things I don&#39;t like to deal with in front-end development. Also, Bootstrap&#39;s &lt;a href=&quot;https://getbootstrap.com/docs/5.3/getting-started/introduction/&quot;&gt;documentation is crystal clear&lt;/a&gt;, tutorials abound online (e.g., &lt;a href=&quot;https://www.w3schools.com/bootstrap/bootstrap_get_started.asp&quot;&gt;https://www.w3schools.com/bootstrap/bootstrap_get_started.asp&lt;/a&gt;), and the user community is huge—all factors I strongly consider when making any decisions about technology.&lt;/p&gt;
&lt;p&gt;Since I know that other Digital Humanities folks have run up against the problem of doing front-end development with little or no funds, I figured I should write up some notes while I go through this process yet again with the DLL&#39;s Catalog site.&lt;/p&gt;
&lt;p&gt;I&#39;ll add to this list as I finish writing up each step:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-tips-tricks&quot;&gt;Rebuilding a Theme, Part I: Tricks and Tips&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-2/&quot;&gt;Rebuidling a Theme, Part II: Creating a Subtheme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-3&quot;&gt;Rebuilding a Theme, Part III: Working with Twig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-4&quot;&gt;Rebuilding a Theme, Part IV: Working with Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-5&quot;&gt;Rebuilding a Theme, Part V: Customizing the Navbar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-6&quot;&gt;Rebuilding A Theme, Part VI: Customizing the Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-7&quot;&gt;Rebuilding A Theme, Part VII: Contextual Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-8&quot;&gt;Rebuilding A Theme, Part VIII: Content Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-9&quot;&gt;Rebuilding A Theme, Part IX: Content Types, Continued&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-10&quot;&gt;Rebuilding A Theme, Part X: Solr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-11&quot;&gt;Rebuilding A Theme, Part XI: Template for the Search Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sjhuskey.info/posts/upgrading-theme-part-12&quot;&gt;Rebuilding A Theme, Part XII: Styling the Search Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry> 
  <entry>
    <title>Using the OHMS Viewer with DDEV</title>
    <link href="https://sjhuskey.info/posts/ohms/" />
    <updated>2024-06-21T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/ohms/</id>
    <content type="html">&lt;p&gt;A colleague asked me to help her get started using the &lt;a href=&quot;https://www.oralhistoryonline.org/&quot;&gt;Oral History Metadata Synthesizer&#39;s&lt;/a&gt; &lt;a href=&quot;https://github.com/uklibraries/ohms-viewer&quot;&gt;OHMS Viewer&lt;/a&gt;. It is meant to integrate with a CMS, but she just needs to see how it works for now. Instead of going through the trouble of setting up access to a remote server, I decided to see if I could get it working with &lt;a href=&quot;https://ddev.com/&quot;&gt;DDEV&lt;/a&gt;, a super-easy-to-use application for developing web sites locally (i.e., on a laptop or desktop computer).&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Comfort using a Command Line Interface (e.g., Terminal).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;. The instructions for different operating systems are available at &lt;a href=&quot;https://ddev.readthedocs.io/en/stable/users/install/docker-installation/&quot;&gt;https://ddev.readthedocs.io/en/stable/users/install/docker-installation/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/&quot;&gt;DDEV&lt;/a&gt;: Instructions are at &lt;a href=&quot;https://ddev.readthedocs.io/en/stable/users/install/ddev-installation/&quot;&gt;https://ddev.readthedocs.io/en/stable/users/install/ddev-installation/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;OHMS Viewer: Download the latest release at &lt;a href=&quot;https://github.com/uklibraries/ohms-viewer/releases&quot;&gt;https://github.com/uklibraries/ohms-viewer/releases&lt;/a&gt;. It is available as a &lt;code&gt;zip&lt;/code&gt; or &lt;code&gt;tar.gz&lt;/code&gt; archive. I&#39;m working with the &lt;code&gt;tar.gz&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;An account on &lt;a href=&quot;https://www.aviaryplatform.com/&quot;&gt;Aviary&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Set up a PHP environment with DDEV&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Make a new directory called &amp;quot;ohms&amp;quot;: &lt;code&gt;mkdir ohms&lt;/code&gt;. I put mine in &lt;code&gt;~/Sites&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change into the new directory and run the following command: &lt;code&gt;ddev config&lt;/code&gt;. This will launch a dialog. You can just press the &lt;code&gt;return&lt;/code&gt; key for the first two prompts (&lt;code&gt;Project name:&lt;/code&gt; and &lt;code&gt;Docroot Location&lt;/code&gt;), but be sure to enter &lt;code&gt;php&lt;/code&gt; for the third prompt (&lt;code&gt;Project Type&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Execute the command &lt;code&gt;ddev start&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At this point, there should be a bare site that you can visit by opening a web browser and going to &lt;code&gt;http://ohms.ddev.site&lt;/code&gt;. You&#39;ll probably see the message &lt;strong&gt;403 Forbidden&lt;/strong&gt;. That&#39;s okay.&lt;/p&gt;
&lt;h2&gt;Copy the OHMS Viewer files into the PHP Environment&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Extract the OHMS Viewer archive to your PHP environment: &lt;code&gt;tar -xvf ohms-viewer-3.9.3.tar.gz -C ~/Sites/ohms&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rename the new directory &amp;quot;ohms-viewer&amp;quot;: &lt;code&gt;mv ohms-viewer-3.9.3 ohms-viewer&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Make a cachefiles Directory&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Change into &lt;code&gt;ohms-viewer&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Create a new directory called &amp;quot;cachefiles&amp;quot; (&lt;code&gt;mkdir cachefiles&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is where you&#39;ll eventually put your OHMS XML files.&lt;/p&gt;
&lt;h2&gt;Edit the OHMS Viewer&#39;s Config File&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Change into the &lt;code&gt;config&lt;/code&gt; directory within &lt;code&gt;ohms-viewer&lt;/code&gt;: &lt;code&gt;cd ~/Sites/ohms/ohms-viewer/config&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of &lt;code&gt;config.template.ini&lt;/code&gt; and call it &lt;code&gt;config.ini&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Using a text editor, edit the content of &lt;code&gt;config.ini&lt;/code&gt;. Change the first line to read &lt;code&gt;tmpDir = cachefiles&lt;/code&gt;. The rest of the file can be left as it is.&lt;/li&gt;
&lt;li&gt;Save &lt;code&gt;config.ini&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Test the Viewer&lt;/h2&gt;
&lt;p&gt;For this step, you&#39;ll need an OHMS XML file from an OHMS collection on &lt;a href=&quot;https://www.aviaryplatform.com/&quot;&gt;Aviary&lt;/a&gt;. To obtain an XML file, you&#39;ll need to create an OHMS record in the OHMS Studio. When the record is complete, you should be able to click on the three vertical dots on the far right of the row and select &amp;quot;Export XML&amp;quot;.&lt;/p&gt;
&lt;p&gt;Put the XML file into the &lt;code&gt;cachefiles&lt;/code&gt; directory created above.&lt;/p&gt;
&lt;p&gt;You should now be able to use a web browser to navigate to &lt;code&gt;http://ohms.ddev.site/ohms-viewer/viewer.php?cachefile=YOUR-XML-FILE.xml&lt;/code&gt; to see the record in the OHMS Viewer. Be sure to replace &lt;code&gt;YOUR-XML-FILE&lt;/code&gt; with the actual name of your file.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Upgrading the DLL Catalog Site to Drupal 10</title>
    <link href="https://sjhuskey.info/posts/drupal-7-to-drupal-10/" />
    <updated>2024-05-25T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/drupal-7-to-drupal-10/</id>
    <content type="html">&lt;p&gt;I finally have some time to devote to upgrading the &lt;a href=&quot;https://catalog.digitallatin.org/&quot;&gt;DLL Catalog&lt;/a&gt; from Drupal 7 to Drupal 10! I&#39;m sharing some of the basic stuff here in case DH folks need to upgrade their sites.&lt;/p&gt;
&lt;p&gt;I&#39;m going to work on my upgrade project locally (i.e., on my laptop), using the fantastic &lt;a href=&quot;https://ddev.com/&quot;&gt;DDEV&lt;/a&gt; Docker-based tool so that I don&#39;t have to do it on a remote server or deal with MAMP or something like that. I strongly recommend using DDEV. There&#39;s &lt;a href=&quot;https://ddev.com/get-started/&quot;&gt;excellent documentation for installing it&lt;/a&gt;, so I won&#39;t repeat it here.&lt;/p&gt;
&lt;p&gt;After installing Docker and DDEV, the next step is to set up DDEV sites for both the existing Drupal 7 (D7) codebase and database and a new Drupal 10 codebase and database. Next, I&#39;ll install the migration modules. Finally, I&#39;ll run the migrations and troubleshoot.&lt;/p&gt;
&lt;h2&gt;Setting up the DDEV Sites&lt;/h2&gt;
&lt;h3&gt;DLL Catalog (D7)&lt;/h3&gt;
&lt;p&gt;On my server, I made a copy of the codebase and database, then I used &lt;a href=&quot;https://linuxize.com/post/how-to-use-scp-command-to-securely-transfer-files/&quot;&gt;&lt;code&gt;scp&lt;/code&gt;&lt;/a&gt; to copy those files to my local machine. I decompressed the codebase (&lt;code&gt;tar -xvf catalog.tar.gz&lt;/code&gt;) and changed into the new directory (&lt;code&gt;cd catalog&lt;/code&gt;). Then I configured that directory to use DDEV (&lt;code&gt;ddev config&lt;/code&gt;) and told DDEV to import the SQL file I downloaded (&lt;code&gt;ddev mysql db &amp;lt; ../catalog.sql&lt;/code&gt;). Et voilà: the DLL Catalog site is running locally on my laptop.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note that there is also a specific DDEV command for importing a database: &lt;code&gt;ddev import-db&lt;/code&gt;. Read more at &lt;a href=&quot;https://ddev.readthedocs.io/en/stable/users/usage/managing-projects/#importing-a-database&quot;&gt;https://ddev.readthedocs.io/en/stable/users/usage/managing-projects/#importing-a-database&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Target Site (D10)&lt;/h3&gt;
&lt;p&gt;Spinning up a bare D10 site is remarkably easy, thanks to &lt;a href=&quot;https://ddev.readthedocs.io/en/stable/users/quickstart/#drupal&quot;&gt;DDEV&#39;s CMS quickstart directions for Drupal&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Prepare for Migration&lt;/h2&gt;
&lt;h3&gt;Install Migrate modules on the D10 site&lt;/h3&gt;
&lt;p&gt;This is easy. First, use Composer to require the migration modules in the D10 site. Note that I&#39;m requiring not only Migrate Upgrade and Migrate Plus, but also Migrate Tools and Migrate File, since experience tells me that I&#39;ll avoid errors on import with those installed:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Require the migrate modules&lt;/span&gt;&lt;br /&gt;ddev &lt;span class=&quot;token function&quot;&gt;composer&lt;/span&gt; require drupal/migrate_tools drupal/migrate_upgrade drupal/migrate_plus drupal/migrate_file&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Install the migrate modules&lt;/span&gt;&lt;br /&gt;ddev drush en &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt; migrate_tools,migrate_upgrade,migrate_plus,migrate_file&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Install Contributed Modules on the D10 site&lt;/h3&gt;
&lt;p&gt;For this step, the easiest thing to do is to install the &lt;a href=&quot;https://www.drupal.org/project/upgrade_status&quot;&gt;Upgrade Status&lt;/a&gt; module on the D7 site, enable it, and run its report. That will tell you which contributed modules on the D7 site have versions that are compatible with D10.&lt;/p&gt;
&lt;p&gt;Make note of the modules that are not compatible and begin thinking about whether you need to find an alternative. In my case, I wrote some custom modules that I&#39;ll need to upgrade, but that&#39;s not a crucial detail at this stage.&lt;/p&gt;
&lt;p&gt;For the modules that do have compatible versions, ask whether you&#39;ll need their functionality on the D10 site. If the answer is yes, then install and enable them.&lt;/p&gt;
&lt;h3&gt;Define the Migration Source Database&lt;/h3&gt;
&lt;p&gt;Since I&#39;m migrating content from one Docker container into another, the two need to be able to communicate. Fortunately for all of us, the Drupal community has &lt;a href=&quot;https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-drupal-7/upgrade-using-drush#s-define-the-source-database&quot;&gt;some good tips&lt;/a&gt; about this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Start up both the source web site (Drupal 7) and target web site (Drupal 10) in separate DDEV instances. Enter the D7 credentials in the Drupal 10 &lt;code&gt;settings.php&lt;/code&gt;, using the Docker containers listed during start up, for example &lt;code&gt;ddev-drupal7-db&lt;/code&gt; and &lt;code&gt;ddev-drupal7-web&lt;/code&gt;, shown during start up.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you weren&#39;t paying that much attention during startup, you can use &lt;code&gt;docker ps&lt;/code&gt; to find the container names. Here&#39;s the truncated output from when I ran that command:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;f5690a2779de ddev-catalog-web&lt;br /&gt;84540cbad1c5 ddev-catalog-db&lt;br /&gt;ac6dc2c61ffa ddev-router&lt;br /&gt;881cf19e2de0 ddev-d10catalog-db&lt;br /&gt;38103ba38a87 ddev-d10catalog-web&lt;br /&gt;70200fafaac5 ddev-ssh-agent&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&#39;s what I entered into my d10catalog site&#39;s &lt;code&gt;settings.php&lt;/code&gt;, following the &lt;a href=&quot;https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-drupal-7/upgrade-using-web-browser#s-example-values-for-ddev&quot;&gt;Example values for DDEV&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate_source_connection&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate_source_version&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;7&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate_file_public_path&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;http://catalog.ddev.site/&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate_file_private_path&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token variable&quot;&gt;$databases&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;default&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;database&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;db&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;username&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;db&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;password&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;db&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;host&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;ddev-catalog-db&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;port&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;3306&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;driver&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;prefix&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Be sure to clear the cache with &lt;code&gt;ddev drush cr&lt;/code&gt; after making this update to &lt;code&gt;settings.php&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Make a Custom Module for the Migration&lt;/h2&gt;
&lt;p&gt;I have found that it makes sense in the long run to make a custom module for your migration. It&#39;s easier than you think.🤠&lt;/p&gt;
&lt;h3&gt;Set up the Structure for your Module&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Switch into &lt;code&gt;web/modules&lt;/code&gt; in your D10 site&lt;/li&gt;
&lt;li&gt;If you don&#39;t already have a &lt;code&gt;custom&lt;/code&gt; directory, make one: &lt;code&gt;mkdir custom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Switch into &lt;code&gt;custom&lt;/code&gt; and create a new directory for your custom module (e.g., &lt;code&gt;cd custom &amp;amp;&amp;amp; mkdir my_migration&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Switch into your custom migration module&lt;/li&gt;
&lt;li&gt;Make an &lt;code&gt;info.yml&lt;/code&gt; file. Mine is &lt;code&gt;catalog_migrate.info.yml&lt;/code&gt;. Change the first part of the file&#39;s name to whatever you&#39;re calling your module.&lt;/li&gt;
&lt;li&gt;Add the following contents to the &lt;code&gt;info.yml&lt;/code&gt; file:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-yml&quot;&gt;&lt;code class=&quot;language-yml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; module&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Catalog D7 to D10 Migration Module&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;A module for migrating content from a legacy site to a new one.&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Custom&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10.x&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;core_version_requirement&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ^10&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; drupal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;migrate&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; drupal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;migrate_drupal&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; drupal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;migrate_plus&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; drupal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;migrate_tools&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now make the directories for the migration files you&#39;ll generate in the next step:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make a directory called &lt;code&gt;config&lt;/code&gt; (&lt;code&gt;mkdir config&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Switch into &lt;code&gt;config&lt;/code&gt; and make a new directory called &lt;code&gt;install&lt;/code&gt; (&lt;code&gt;mkdir install&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Generate the Migration Files&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;drush migrate:upgrade&lt;/code&gt; command will generate the files needed for the custom module. Certain things have to be done to make it work on a DDEV site. Specifically, the values in the &lt;code&gt;--legacy-db-url&lt;/code&gt; extension have to use the database user, password, Docker name, and database name that I used to make the connection in &lt;code&gt;settings.php&lt;/code&gt;. The &lt;code&gt;legacy-root&lt;/code&gt; value should be the absolute path to the D7 site; in my case, it&#39;s &lt;code&gt;/Users/sjhuskey/Sites/catalog&lt;/code&gt;. If you need help finding the absolute path, use &lt;code&gt;cd&lt;/code&gt; to navigate to your D7 site&#39;s root, then execute &lt;code&gt;pwd&lt;/code&gt; (print name of working directory) to get the absolute path.&lt;/p&gt;
&lt;p&gt;Taking those items into consideration, this is the command I ran to generate the migration files:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev drush migrate:upgrade --legacy-db-url&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;mysql://db:db@ddev-catalog-db/db --legacy-root&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;/Users/sjhuskey/Sites/catalog/sites/default/files --configure-only&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Export the Migration Files&lt;/h3&gt;
&lt;p&gt;After running the &lt;code&gt;drush migrate:upgrade&lt;/code&gt; command above, I ran the following command to export the files needed for migration to a &lt;code&gt;tmp&lt;/code&gt; directoy I created in the root directory of the site:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev drush cex &lt;span class=&quot;token parameter variable&quot;&gt;--destination&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;/tmp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;../tmp&lt;/code&gt; changes from the &lt;code&gt;web&lt;/code&gt; directory to the parent or root directory.&lt;/p&gt;
&lt;p&gt;If you don&#39;t add the &lt;code&gt;--destination&lt;/code&gt; flag, the files will end up in your &lt;code&gt;sync&lt;/code&gt; file, and when you try to activate your custom module later, you&#39;ll get an error.&lt;/p&gt;
&lt;h3&gt;Copy the Migration Files into your Custom Module&lt;/h3&gt;
&lt;p&gt;When I did &lt;code&gt;ddev drush cex&lt;/code&gt; in the previous step, the configuration files for EVERYTHING were added to the temporary directory. I just need the migration config files, so I changed into the directory at &lt;code&gt;/Users/sjhuskey/Desktop/tmp&lt;/code&gt; and executed the following command to copy only the migration config files to my custom module&#39;s &lt;code&gt;config/install&lt;/code&gt; directory:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; migrate_plus.migration.* migrate_plus.migration_group.migrate_*.yml ~/Sites/d10catalog/web/modules/custom/catalog_migrate/config/install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I have a bunch of files with names like &lt;code&gt;migrate_plus.migration.upgrade_d7_action.yml&lt;/code&gt; in my module&#39;s &lt;code&gt;config/install&lt;/code&gt; directory. Great!&lt;/p&gt;
&lt;h3&gt;Modify the Names of the Migration Files&lt;/h3&gt;
&lt;p&gt;First things first: change the name of &lt;code&gt;migrate_plus.migration_group.migrate_drupal_7.yml&lt;/code&gt; to &lt;code&gt;migrate_plus.migration_group.my_module.yml&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;mv&lt;/span&gt; migrate_plus.migration_group.migrate_drupal_7.yml migrate_plus.migration_group.catalog_migrate.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This file will define the group for your migration.&lt;/p&gt;
&lt;p&gt;I need to replace &lt;code&gt;upgrade_d7&lt;/code&gt; in the file names with the name of my module. Since dozens of files need that change, I wrote a Python script to do it for me:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# coding: utf-8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; os&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rename&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;upgrade_d7&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;catalog_migrate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; f &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;listdir&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;startswith&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As always, if you&#39;re following along, replace &lt;code&gt;catalog_migrate&lt;/code&gt; with the name of your custom module.&lt;/p&gt;
&lt;p&gt;I named the file &lt;code&gt;rename.py&lt;/code&gt; and placed it in my custom module&#39;s &lt;code&gt;config/install&lt;/code&gt; directory. I ran it with &lt;code&gt;python3 rename.py&lt;/code&gt;. Shazam! All of my files have been renamed.&lt;/p&gt;
&lt;h3&gt;Remove Unneeded Files&lt;/h3&gt;
&lt;p&gt;Remove &lt;code&gt;migrate_plus.migration.catalog_migrate_action.yml&lt;/code&gt; and &lt;code&gt;migrate_plus.migration.upgrade_action_settings.yml&lt;/code&gt;. From past experience, I know that they cause trouble.&lt;/p&gt;
&lt;h3&gt;Edit the Migration Config Files&lt;/h3&gt;
&lt;p&gt;Several find/replace operations are needed across all the migration config files. The command line tool &lt;code&gt;sed&lt;/code&gt; is great for this:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token for-or-select variable&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; *&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token function&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;/^uuid: [0-9a-z&#92;-]*$/d&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token parameter variable&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;s/migration_group: migrate_drupal_7/migration_group: catalog_migrate/&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token parameter variable&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;s/id: upgrade_d7/id: catalog_migrate/&#39;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token parameter variable&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;s/upgrade_d7/catalog_migrate/&#39;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token variable&quot;&gt;$file&lt;/span&gt;&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Breaking that down, I&#39;m using a &lt;code&gt;for&lt;/code&gt; loop in bash to iterate over the files and perform the following operations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;All of the migration files contain a uuid that must be removed. I&#39;m using the Regular Expression &lt;code&gt;^uuid: [0-9a-z&#92;-]*$/d&lt;/code&gt; to match the pattern and delete the line&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;migration_group: migrate_drupal_7&lt;/code&gt; to the &lt;code&gt;migration_group: catalog_migrate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;id: upgrade_d7&lt;/code&gt; to &lt;code&gt;id: catalog_migrate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change remaining instances of &lt;code&gt;upgrade_d7&lt;/code&gt; to &lt;code&gt;catalog_migrate&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This can be done in a text editor with &amp;quot;Find and Replace in Files&amp;quot;, too. Be sure to change &lt;code&gt;catalog_migrate&lt;/code&gt; to the name of your module.&lt;/p&gt;
&lt;h3&gt;Edit the Migration Group YAML file&lt;/h3&gt;
&lt;p&gt;Update the content of &lt;code&gt;migrate_plus.migration_group.catalog_migrate.yml&lt;/code&gt;. Prior to editing, mine looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;langcode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; en&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean important&quot;&gt;true&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; migrate_drupal_7&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Import from Drupal 7&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Migrations originally generated from drush migrate-upgrade --configure-only&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;source_type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Drupal 7&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token null important&quot;&gt;null&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;shared_configuration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token key atrule&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token key atrule&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; drupal_7&lt;br /&gt;    &lt;span class=&quot;token key atrule&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;driver&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; mysql&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ddev&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;catalog&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;prefix&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token null important&quot;&gt;null&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I edited it to this (changes commented):&lt;/p&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;langcode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; en&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean important&quot;&gt;true&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; catalog_migrate &lt;span class=&quot;token comment&quot;&gt;# Change the id to the machine name of the module&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Import from Catalog D7 site&quot;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;# Change the label.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Migrations originally generated from drush migrate-upgrade --configure-only&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;source_type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Drupal 7&quot;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token null important&quot;&gt;null&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token key atrule&quot;&gt;shared_configuration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token key atrule&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token key atrule&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; migrate &lt;span class=&quot;token comment&quot;&gt;# Change this to &quot;migrate&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token key atrule&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;driver&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; mysql&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ddev&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;catalog&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; db&lt;br /&gt;      &lt;span class=&quot;token key atrule&quot;&gt;prefix&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token null important&quot;&gt;null&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Install the Module&lt;/h2&gt;
&lt;p&gt;Install the module with &lt;code&gt;ddev drush en -y catalog_migrate&lt;/code&gt;. If all goes well, the module is enabled and I can move on to the next step.&lt;/p&gt;
&lt;h2&gt;Check Migration Status&lt;/h2&gt;
&lt;p&gt;If you run &lt;code&gt;ddev drush migrate:status&lt;/code&gt;, you&#39;re likely to see a bunch of scary error messages related to Drupal 6 migrations that are included by default. To avoid seeing those, do &lt;code&gt;ddev drush migrate:status --group=catalog_migrate&lt;/code&gt;. I did that and found that my migrations were looking good: all were idle, with expected numbers in the &lt;code&gt;Total&lt;/code&gt;, &lt;code&gt;Imported&lt;/code&gt;, and &lt;code&gt;Unprocessed&lt;/code&gt; columns.&lt;/p&gt;
&lt;h2&gt;Running the Migration&lt;/h2&gt;
&lt;p&gt;I wish there were a &lt;code&gt;--simulate&lt;/code&gt; flag so that I could run a test migration without actually importing a bunch of stuff into my D10 site, but there isn&#39;t. So, now&#39;s the time to run &lt;code&gt;ddev drush migrate:import --group=catalog_migrate --continue-on-failure&lt;/code&gt;. I use the &lt;code&gt;continue-on-failure&lt;/code&gt; flag because otherwise the process stops every time there&#39;s even a minor issue. There probably will be some issues, but I prefer to find out how extensive the issues are by watching all of the migrations complete their run.&lt;/p&gt;
&lt;h2&gt;Debugging&lt;/h2&gt;
&lt;p&gt;I have never seen a migration executed flawlessly on the first run. It&#39;s good to know some debugging tips.&lt;/p&gt;
&lt;p&gt;Drush does a good job of letting you know when there are problems. For example, my migration produced this message:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;notice&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Processed &lt;span class=&quot;token number&quot;&gt;327&lt;/span&gt; items &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;315&lt;/span&gt; created, &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; updated, &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt; failed, &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; ignored&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; - &lt;span class=&quot;token keyword&quot;&gt;done&lt;/span&gt; with &lt;span class=&quot;token string&quot;&gt;&#39;catalog_migrate_field_formatter_settings&#39;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;  catalog_migrate_field_formatter_settings Migration - &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt; failed.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;migrate:message&lt;/code&gt; (&lt;code&gt;mmsg&lt;/code&gt;) command, with the name of the troublesome migration, will provide more information: &lt;code&gt;ddev drush mmsg catalog_migrate_field_formatter_settings&lt;/code&gt;. Running that told me that most of the issues had to do with field format widgets that were supplied by the &lt;a href=&quot;https://www.drupal.org/project/autocomplete_widgets&quot;&gt;Autocomplete Widgets&lt;/a&gt; module, which does not have a D10 version.&lt;/p&gt;
&lt;p&gt;If there are issues with other migrations, now is the time to use &lt;code&gt;mmsg&lt;/code&gt; with those, too. Otherwise, the messages will disappear after you run &lt;code&gt;migrate:rollback&lt;/code&gt; (&lt;code&gt;mr&lt;/code&gt;) to, well, roll back the migration.&lt;/p&gt;
&lt;p&gt;Sometimes, when a migration stops in the middle of the operation, it&#39;s necessary to use &lt;code&gt;migrate:reset-status&lt;/code&gt; (&lt;code&gt;mrs&lt;/code&gt;) to reset a migration.&lt;/p&gt;
&lt;p&gt;To resolve the issues, I work in the site&#39;s &lt;code&gt;sync&lt;/code&gt; directory, which DDEV puts in &lt;code&gt;web/sites/default/files/sync&lt;/code&gt;. I edit the files that correspond to the migrations that had problems, then I do &lt;code&gt;ddev drush cim&lt;/code&gt; to import the changes, followed by &lt;code&gt;ddev drush cr&lt;/code&gt; to clear the caches.&lt;/p&gt;
&lt;p&gt;Finally, I run &lt;code&gt;migrate:import&lt;/code&gt; (&lt;code&gt;mim&lt;/code&gt;) again with the &lt;code&gt;--group&lt;/code&gt; and &lt;code&gt;--continue-on-failure&lt;/code&gt; flags, watching for the same or new error messages. It might be the case that you will have to live with some of the minor issues that don&#39;t affect the content or functionality of your site.&lt;/p&gt;
&lt;h2&gt;Next Step: Rebuilding the Theme&lt;/h2&gt;
&lt;p&gt;This is the really unfortunate part of upgrading a Drupal 7 site. Drupal 8 introduced an entirely new theming layer, so I&#39;ll need to rebuild the theme in Twig before I can launch the new version. For now, everything will be done locally on my DDEV site. I&#39;ll post something about my adventures with rebuilding the theme.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Tales of DH Automation</title>
    <link href="https://sjhuskey.info/posts/dh-automation-1/" />
    <updated>2023-09-22T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/dh-automation-1/</id>
    <content type="html">&lt;p&gt;One of my favorite things is using technology to eliminate or at least reduce the amount of tedious, repetitive, and boring tasks that friends and colleagues encounter in their work, so I&#39;m starting a series on this blog to give others some ideas of what technology can do for them.&lt;/p&gt;
&lt;p&gt;My eyes were opened to these possibilities when I read &lt;em&gt;&lt;a href=&quot;https://automatetheboringstuff.com/&quot;&gt;Automate the Boring Stuff with Python&lt;/a&gt;&lt;/em&gt; by Al Sweigart. It is an excellent book for anyone curious about Python and, more generally, how to get machines to do the mindless tasks that can make life unpleasant. I highly recommend it.&lt;/p&gt;
&lt;h2&gt;Renaming Files … Lots and Lots of Files&lt;/h2&gt;
&lt;p&gt;My colleage &lt;a href=&quot;https://www.ou.edu/cas/english/about/faculty/b-endres&quot;&gt;Bill Endres&lt;/a&gt; asked me for help with a task that routinely takes a lot of his time. An expert in multi-spectral imaging, Bill takes dozens and dozens of images in a typical imaging session. The software he uses labels each image with a date-time stamp and the light frequency in use. For example, the file name &lt;code&gt;20230720_132856_365_nm.tif&lt;/code&gt; tells us that the image was taken on July 20, 2023 (20230720) at 1:28:56 p.m., and that the light frequency in use was 365nm.&lt;/p&gt;
&lt;p&gt;The thing is that each object (i.e., page of a manuscript in this case) is imaged in sixteen different frequencies, so the result of imaging one page is a list of images like this:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;20230815_102820_365_nm.tif&lt;br /&gt;20230815_102826_385_nm.tif&lt;br /&gt;20230815_102832_395_nm.tif&lt;br /&gt;20230815_102838_420_nm.tif&lt;br /&gt;20230815_102844_450_nm.tif&lt;br /&gt;20230815_102851_470_nm.tif&lt;br /&gt;20230815_102857_500_nm.tif&lt;br /&gt;20230815_102903_530_nm.tif&lt;br /&gt;20230815_102909_560_nm.tif&lt;br /&gt;20230815_102915_590_nm.tif&lt;br /&gt;20230815_102922_615_nm.tif&lt;br /&gt;20230815_102928_630_nm.tif&lt;br /&gt;20230815_102934_660_nm.tif&lt;br /&gt;20230815_102941_730_nm.tif&lt;br /&gt;20230815_102947_850_nm.tif&lt;br /&gt;20230815_102953_940_nm.tif&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s one page. The only indicator that the page has changed is the frequency number: when it goes back to &lt;code&gt;365_nm&lt;/code&gt;, you know that Bill has started to take images of a new page.&lt;/p&gt;
&lt;p&gt;Bill needed a more descriptive file name. Specifically, he wanted the files to be named using the pattern {Manuscript Name} (e.g., &#39;HerefordGos&#39;), {Page} (e.g., 1), {Face} (&amp;quot;recto&amp;quot; or &amp;quot;verso&amp;quot;), {Frequency}. He also needed the value of {Page} to increase by one after every cycle of sixteen light frequencies. He has much better things to do with his time than manually renaming hundreds of files, so he wondered about a way to rename the files automatically.&lt;/p&gt;
&lt;p&gt;My go-to solution being Python, I started working up a script for him. In days past, I would have spent a fair amount of time trying out various ideas, consulting &lt;a href=&quot;https://stackoverflow.com/&quot;&gt;Stack Overflow&lt;/a&gt;, and debugging my script until I got it right. But with the advent of intelligent chatbots, I can cut down significantly on that process. I just need to know how to ask the chatbot the right questions.&lt;/p&gt;
&lt;p&gt;(I hear that &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Prompt_engineering&quot;&gt;Prompt Engineer&lt;/a&gt;&amp;quot; is an up-and-coming career. Maybe I should look into that ….)&lt;/p&gt;
&lt;p&gt;Here&#39;s what I asked:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I need to rename the files in a directory, and I&#39;d like to use Python to do it. Here are the details: my program produces files with names like &lt;code&gt;20230720_132856_365_nm.tif&lt;/code&gt;. The first part of the filename (20230723_132856) is a date-time stamp; the second part (365_nm) is a light frequency. I want to write a function that will accept the arguments &lt;code&gt;directory&lt;/code&gt;, &lt;code&gt;msName&lt;/code&gt;, &lt;code&gt;page&lt;/code&gt;, and &lt;code&gt;face&lt;/code&gt; and do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Parse and extract the timestamp from each filename.&lt;/li&gt;
&lt;li&gt;Group the files by their timestamp and ensure each group has 16 (or fewer) files.&lt;/li&gt;
&lt;li&gt;Sort the groups of files based on the light frequency.&lt;/li&gt;
&lt;li&gt;Strip the underscore from the light frequency (i.e., turn &lt;code&gt;365_nm&lt;/code&gt; into &lt;code&gt;365nm&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Rename the files according to the pattern &lt;code&gt;{msName}_{page}{face}_{frequency}.tif&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;I also asked it to make the script callable from the command line and to ignore any files that don&#39;t end in &lt;code&gt;.tif&lt;/code&gt;. Here&#39;s what we ended up with after a couple of iterations:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#!/usr/bin/env python3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; os&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; argparse&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rename_files&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;directory&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; msName&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; firstPage&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; face&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Verify that the face value is either &#39;r&#39; or &#39;v&#39;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; face &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;v&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;raise&lt;/span&gt; ValueError&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The face argument must be either &#39;r&#39; or &#39;v&#39;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Define light frequency order&lt;/span&gt;&lt;br /&gt;    light_frequencies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;365&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;385&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;395&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;420&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;450&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;470&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;                         &lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;530&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;560&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;590&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;615&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;630&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;660&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;730&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;850&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;940&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Extract files and sort by timestamp&lt;/span&gt;&lt;br /&gt;    all_files &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;listdir&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;directory&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    sorted_files &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;sorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;all_files&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;lambda&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;                          &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; f &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Group files in chunks of 16 based on their timestamp sequence&lt;/span&gt;&lt;br /&gt;    chunks &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;sorted_files&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sorted_files&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Initialize current page&lt;/span&gt;&lt;br /&gt;    current_page &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; firstPage&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; chunk &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; chunks&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Counter for tracking light frequency index&lt;/span&gt;&lt;br /&gt;        freq_index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Sort each chunk based on light frequency&lt;/span&gt;&lt;br /&gt;        sorted_chunk &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;sorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;chunk&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;lambda&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;br /&gt;            f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; f &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; filename &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; sorted_chunk&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;# Extract light frequency number&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; filename&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;                light_freq &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filename&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;                light_freq &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filename&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;_&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;# Construct the new filename&lt;/span&gt;&lt;br /&gt;            new_name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;msName&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;current_page&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;zfill&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;face&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;light_freq&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;nm.tif&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;# Full paths to old and new filenames&lt;/span&gt;&lt;br /&gt;            old_path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;directory&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filename&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;            new_path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;directory&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; new_name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;# Rename the file&lt;/span&gt;&lt;br /&gt;            os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rename&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;old_path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; new_path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;Renamed: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;filename&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; -&gt; &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;new_name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;# Check if we have cycled through all frequencies and need to reset&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token comment&quot;&gt;# if it&#39;s the last frequency in the list&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; light_freq &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; light_frequencies&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;                current_page &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;                freq_index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;                &lt;span class=&quot;token comment&quot;&gt;# Increment frequency index for the next iteration&lt;/span&gt;&lt;br /&gt;                freq_index &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Example usage:&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Let&#39;s say your directory is &quot;my_directory&quot; and msName is &quot;HerefordGos&quot; and starting page number is 1&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# rename_files(&quot;my_directory&quot;, &quot;HerefordGos&quot;, 1, &quot;r&quot;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Initialize the argument parser&lt;/span&gt;&lt;br /&gt;    parser &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; argparse&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ArgumentParser&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;br /&gt;        description&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Rename files based on given rules.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    parser&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;add_argument&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;directory&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;                        &lt;span class=&quot;token builtin&quot;&gt;help&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Path to the directory containing files to be renamed.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    parser&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;add_argument&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;msName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;help&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Manuscript name.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    parser&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;add_argument&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;firstPage&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;help&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Starting page number.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    parser&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;add_argument&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;face&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; choices&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;v&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;help&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;r (recto) or v (verso).&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Parse the command line arguments&lt;/span&gt;&lt;br /&gt;    args &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; parser&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;parse_args&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Call the function&lt;/span&gt;&lt;br /&gt;    rename_files&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;directory&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;msName&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;firstPage&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;face&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That can rename hundreds of files in a couple of seconds. I haven&#39;t tried timing it with Python&#39;s &lt;code&gt;time&lt;/code&gt; functionality, but I imagine you&#39;d have to try running it on tens of thousands of files before you&#39;d notice the amount of time it takes.&lt;/p&gt;
&lt;p&gt;Anyway, thanks for reading this first edition of &amp;quot;Tales of DH Automation&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Photo by &lt;a href=&quot;https://unsplash.com/@sortino?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Joshua Sortino&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/photos/LqKhnDzSF-8?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Converting a Drupal site to 11ty</title>
    <link href="https://sjhuskey.info/posts/drupal-to-11ty/" />
    <updated>2023-06-11T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/drupal-to-11ty/</id>
    <content type="html">&lt;p&gt;The main website for the Digital Latin Library has been running on the Drupal 7 CMS since its launch. As many Digital Humanities scholars know, maintaining the technology stack for an informational site can be an impediment to making real progress on the actual project. As much as I love Drupal, it is definitely more than I need for a few static pages and some blog posts. One must keep up with not only the Drupal codebase, but a MySQL database and the Linux server that it runs on. Moreover, upgrading the site from Drupal 7 to Drupal 10 would simply not be worth the effort. Having performed that task for the &lt;a href=&quot;https://classicalstudies.org/&quot;&gt;Society for Classical Studies&#39; website&lt;/a&gt;, I know how to do it, but I&#39;m not interested in going through that again for a small site like &lt;a href=&quot;https://digitallatin.org/&quot;&gt;https://digitallatin.org/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Paying for hosting is also an obstacle. For many years, my home institution&#39;s Office of the Vice President for Research and Partnerships gave me the use of a virtual machine for the DLL project, provided that I manage the upkeep and maintenance. That is why I now have the skills to administer Linux servers—valuable skills, to be sure, but again, one more thing to keep up with in this world of DIY Digital Humanities. Since the VPRP wanted to get out of the business of hosting virtual machines, I moved everything over to the university&#39;s cloud computing resource. That was a good solution, but again, I had to agree to be the system administrator for the server. I don&#39;t mind maintaining a Linux server. There&#39;s something satisfying about completing those tasks. Still, it does take time away from other aspects of my research and creative activity.&lt;/p&gt;
&lt;p&gt;So, I decided to convert the Digital Latin Library site to the static site manager &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;11ty&lt;/a&gt;. First of all, since it&#39;s a &lt;em&gt;static&lt;/em&gt; site manager, I don&#39;t have to maintain a MySQL database. Second, my content isn&#39;t stored in pieces in a database. I can just store it in Markdown files. I like writing in Markdown. Indeed, I do almost &lt;em&gt;all&lt;/em&gt; of my writing in &lt;a href=&quot;https://www.markdownguide.org/&quot;&gt;Markdown&lt;/a&gt; these days. Combined with &lt;a href=&quot;https://pandoc.org/&quot;&gt;Pandoc&lt;/a&gt;, it&#39;s remarkably flexible! Third, Git is big part of the workflow for an 11ty site, so count this Git fan in! Finally, I can host my 11ty site on Github for free!&lt;/p&gt;
&lt;p&gt;Those are the reasons for converting my site to 11ty. Here are the steps that I took to do it, in case someone else is interested in taking this adventure.&lt;/p&gt;
&lt;h2&gt;First step: Export Content from Drupal&lt;/h2&gt;
&lt;p&gt;I used the Views module in Drupal to export all of my nodes to a CSV file. You&#39;ll need to have the &lt;a href=&quot;https://www.drupal.org/project/views&quot;&gt;Views module&lt;/a&gt; installed and enabled, along with the &lt;a href=&quot;https://www.drupal.org/project/views_data_export&quot;&gt;Views Data Export module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My site had a number of different content types, but I was able to use one View for all of them. Your data export view should include at least these fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content: Title (Title)&lt;/li&gt;
&lt;li&gt;Content: Body (Body)&lt;/li&gt;
&lt;li&gt;Content: Author (Author)&lt;/li&gt;
&lt;li&gt;Content: Path (Path)&lt;/li&gt;
&lt;li&gt;Content: Post date (Post date)&lt;/li&gt;
&lt;li&gt;Content: Category (Category)&lt;/li&gt;
&lt;li&gt;Content: Type (Type)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your content types might have other fields (e.g., images) that you&#39;ll want to include.&lt;/p&gt;
&lt;p&gt;I set my data export view to download the content as a CSV file so that I could easily work with it in Python in the next step.&lt;/p&gt;
&lt;h2&gt;Use Python to Convert CSV Data to Markdown Files&lt;/h2&gt;
&lt;p&gt;To be perfectly honest, I consulted &lt;a href=&quot;https://openai.com/blog/chatgpt&quot;&gt;Chat-GPT&lt;/a&gt; about how to convert my CSV data to individual Markdown files, so the following script is mostly its work.&lt;/p&gt;
&lt;p&gt;The CSV file I downloaded from Drupal was called &lt;code&gt;export_all_content.csv&lt;/code&gt;. Where that occurs in the following script, you&#39;ll need to change it to your file&#39;s name.&lt;/p&gt;
&lt;p&gt;The columns in my CSV file were called Title, Body, Author, Path, Post date, Category, and Type. Your titles might be different, depending on how you set up your data export view in Drupal.&lt;/p&gt;
&lt;p&gt;I created a new folder on my computer for this project and called it &lt;code&gt;dllnew&lt;/code&gt;. Inside that folder, I created two other folders, &lt;code&gt;markdown&lt;/code&gt; (for the new markdown files) and &lt;code&gt;data&lt;/code&gt; (for the CSV file). The Python script is in the root of &lt;code&gt;dllnew&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; os&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; csv&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; markdown&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Create the &quot;markdown&quot; directory if it doesn&#39;t exist&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exists&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;markdown&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;makedirs&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;markdown&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token triple-quoted-string string&quot;&gt;&#39;&#39;&#39; Default metadata for all pages. Note that I&#39;m using&lt;br /&gt;    &#39;post&#39; as the default for the layout field, since most&lt;br /&gt;    of my pages are blog posts&#39;&#39;&#39;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DEFAULT_METADATA &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&#39;layout&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;post&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&#39;title&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&#39;author&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&#39;path&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&#39;date&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string&quot;&gt;&#39;category&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Open the CSV file&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;data/export_all_content.csv&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; csv_file&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    csv_reader &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; csv&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;DictReader&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;csv_file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Loop through each row in the CSV file&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; row &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; csv_reader&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Extract data from the row&lt;/span&gt;&lt;br /&gt;        title &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Title&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;        body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Body&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;        author &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Author&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;        path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Path&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;        date &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Post date&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;        category &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Category&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;        layout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Type&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Merge the default metadata with the metadata from the CSV file&lt;/span&gt;&lt;br /&gt;        metadata &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;**&lt;/span&gt;DEFAULT_METADATA&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;title&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;author&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; author&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;path&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;date&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; date&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;category&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; category&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;layout&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; layout&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Convert the body text to HTML using markdown&lt;/span&gt;&lt;br /&gt;        html &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; markdown&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;markdown&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;body&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Add the metadata to the beginning of the HTML content&lt;/span&gt;&lt;br /&gt;        markdown_text &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;---&#92;n&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#92;n&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&#39;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; metadata&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;items&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#92;n---&#92;n&#92;n&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; html&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Replace spaces with hyphens in the filename&lt;/span&gt;&lt;br /&gt;        filename &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;-&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lower&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;.md&#39;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class=&quot;token comment&quot;&gt;# Write the markdown file&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;markdown&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filename&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;w&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; markdown_file&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;            markdown_file&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;write&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Running this script yields one new Markdown file per row in the CSV file, all saved in the &lt;code&gt;markdown&lt;/code&gt; directory.&lt;/p&gt;
&lt;h2&gt;Cleaning Up the Markdown&lt;/h2&gt;
&lt;p&gt;I noticed that my new Markdown files weren&#39;t completely in the Markdown language. That is, the metadata block looked good, but the HTML code from the original Drupal nodes was still present. For example:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;---&lt;br /&gt;layout: base&lt;br /&gt;title: Textual Criticism&lt;br /&gt;author:&lt;br /&gt;permalink: /library-digital-latin-texts/textual-criticism&lt;br /&gt;date: 2015-05-08&lt;br /&gt;category:&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  Reading an apparatus criticus is hard enough for a human to do; for a computer, it&#39;s impossible—at least if the&lt;br /&gt;  apparatus hasn&#39;t been encoded. &lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  Critical editions in print &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;em&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;are&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;em&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; heavily encoded, but in a way that only humans with special training and lots&lt;br /&gt;  of experience can decode. Because publishers prefer not to sacrifice much real estate on a page to printing&lt;br /&gt;  information that they think only some readers will use, textual scholars have developed a way of compressing the&lt;br /&gt;  information into the allotted space using abbreviations and symbols. Call it a “print-optimized visualization of&lt;br /&gt;  textual data.”&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  The image above is an excerpt from the Harvard Servius. Consider all of the types of information that appear in the&lt;br /&gt;  entries on a single page:&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://digitallatin.org/sites/default/files/servius_marked_up.png&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;border-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;solid&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;border-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;1px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;406px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;600px&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, I consulted Chat-GPT again to find a good way to convert the HTML code into standard Markdown. After a few tries, I ended up with this:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; os&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; html2text&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;convert_html_in_markdown&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Load the Markdown file&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_file&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; encoding&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;utf-8&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;        markdown_content &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;read&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Split the Markdown content into metadata and body&lt;/span&gt;&lt;br /&gt;    metadata&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; markdown_content&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;---&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Convert HTML to Markdown with custom BodyWidth&lt;/span&gt;&lt;br /&gt;    converted_body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; html2text&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;html2text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;body&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; bodywidth&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Combine the metadata and converted body&lt;/span&gt;&lt;br /&gt;    md_content &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;---&#92;n&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; metadata &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;&#92;n---&#92;n&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; converted_body&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Generate the output file name&lt;/span&gt;&lt;br /&gt;    md_output_file &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;splitext&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;_converted.md&#39;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Write the converted Markdown content to the output file&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;md_output_file&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;w&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; encoding&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;utf-8&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;token builtin&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;write&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;md_content&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;Converted HTML in &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;markdown_file&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; to Markdown in &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;md_output_file&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;batch_convert_html_in_markdown&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_folder&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Get the list of Markdown files in the folder&lt;/span&gt;&lt;br /&gt;    markdown_files &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;f &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; f &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;listdir&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_folder&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;endswith&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;.md&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token comment&quot;&gt;# Convert HTML in each Markdown file&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; markdown_file &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; markdown_files&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;        markdown_path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_folder&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; markdown_file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        convert_html_in_markdown&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Specify the folder containing the Markdown files&lt;/span&gt;&lt;br /&gt;markdown_folder &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;../pages&#39;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Call the batch conversion function&lt;/span&gt;&lt;br /&gt;batch_convert_html_in_markdown&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;markdown_folder&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To use that script on your own files, you&#39;ll need to change the value for &lt;code&gt;markdown_folder&lt;/code&gt; to the path of your Markdown files.&lt;/p&gt;
&lt;p&gt;The script will save a new version of your Markdown files with &lt;code&gt;_converted&lt;/code&gt; appended to the file name, so you won&#39;t lose your original versions.&lt;/p&gt;
&lt;h2&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;My next steps will be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the files directory from my Drupal 7 site&lt;/li&gt;
&lt;li&gt;Identify a good place for the image files in my 11ty site&lt;/li&gt;
&lt;li&gt;Update the image paths in my new Markdown files&lt;/li&gt;
&lt;li&gt;Work on the theme for the site.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That fourth step is going to take the most time. That&#39;s always the way for DIY Digital Humanities projects, am I right? I&#39;m not a graphic designer by any stretch of the imagination. Fortunately, there are many good template to use as a starting point. I think I&#39;ll use &lt;a href=&quot;https://mandrasch.github.io/11ty-plain-bootstrap5/&quot;&gt;11ty-plain-bootstrap5&lt;/a&gt;, but &lt;a href=&quot;https://11straps-demo.netlify.app/&quot;&gt;11straps&lt;/a&gt; also looks like a good option.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>Gitignore for Drupal</title>
    <link href="https://sjhuskey.info/posts/gitignore-for-drupal/" />
    <updated>2023-02-22T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/gitignore-for-drupal/</id>
    <content type="html">&lt;p&gt;Here&#39;s a .gitignore file that has worked well for my Drupal 8 and 9 sites:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#ignoreSettings&lt;/span&gt;&lt;br /&gt;web/sites/default/settings.php&lt;br /&gt;web/sites/default/settings.local.php&lt;br /&gt;web/sites/default/~settings.local.php&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# ignore files directories&lt;/span&gt;&lt;br /&gt;web/sites/default/files&lt;br /&gt;private&lt;br /&gt;web/sites/default/files&lt;br /&gt;private&lt;br /&gt;files&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;#ignore ddev&lt;/span&gt;&lt;br /&gt;.ddev&lt;br /&gt;web/sites/default/settings.ddev.php&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Packages #&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;############&lt;/span&gt;&lt;br /&gt;*.7z&lt;br /&gt;*.dmg&lt;br /&gt;*.gz&lt;br /&gt;*.bz2&lt;br /&gt;*.iso&lt;br /&gt;*.jar&lt;br /&gt;*.rar&lt;br /&gt;*.tar&lt;br /&gt;*.zip&lt;br /&gt;*.tgz&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Logs and databases #&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;######################&lt;/span&gt;&lt;br /&gt;*.log&lt;br /&gt;*.sql&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# OS generated files #&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;######################&lt;/span&gt;&lt;br /&gt;.DS_Store*&lt;br /&gt;ehthumbs.db&lt;br /&gt;Icon&lt;br /&gt;&lt;br /&gt;Thumbs.db&lt;br /&gt;._*&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Vim generated files #&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;######################&lt;/span&gt;&lt;br /&gt;*.un~&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# SASS #&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;##########&lt;/span&gt;&lt;br /&gt;.sass-cache&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/@6heinz3r?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&quot;&gt;Gabriel Heinzer&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/photos/a-close-up-of-a-computer-screen-with-a-bunch-of-words-on-it-EUzk9BIEq6M?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>Using ddev for Local Drupal Development</title>
    <link href="https://sjhuskey.info/posts/using-ddev-local-drupal/" />
    <updated>2022-10-06T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/using-ddev-local-drupal/</id>
    <content type="html">&lt;p&gt;Setting up a local development version of a Drupal site has always been a challenge, since you need to have access to a database server and a PHP interpreter, not to mention various other tools (like &lt;a href=&quot;https://www.drush.org/&quot;&gt;Drush&lt;/a&gt;). After bad experiences with &lt;a href=&quot;https://www.mamp.info/en/windows/&quot;&gt;MAMP&lt;/a&gt; and &lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;Virtual Box&lt;/a&gt;, I switched to using a droplet at &lt;a href=&quot;https://www.digitalocean.com/&quot;&gt;Digital Ocean&lt;/a&gt; for any Drupal development projects. I love Digital Ocean&#39;s products and &lt;a href=&quot;https://www.digitalocean.com/community/tutorials&quot;&gt;tutorials&lt;/a&gt;, but I&#39;ve been telling myself that I have to become more proficient at using &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;, so I decided to set up a Drupal container on my laptop and test it out.&lt;/p&gt;
&lt;h2&gt;DDEV + Docker&lt;/h2&gt;
&lt;p&gt;Although there is an &lt;a href=&quot;https://hub.docker.com/_/drupal/&quot;&gt;official Docker image for Drupal&lt;/a&gt;, it comes with a lot of provisos, and I didn&#39;t really want to deal with setting up a separate container for the db, PHP, and a volume for storage. That&#39;s why I was happy to find out about &lt;a href=&quot;https://ddev.com/&quot;&gt;ddev&lt;/a&gt;, a development framework that does the heavy lifting of setting up Docker containers, etc., for you. It even has configurations for several popular Content Management Systems built in. What&#39;s not to love?&lt;/p&gt;
&lt;p&gt;Even better, there&#39;s a &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-develop-a-drupal-9-website-on-your-local-machine-using-docker-and-ddev&quot;&gt;Digital Ocean Tutorial about setting up a Drupal 9 website on your local machine using Docker and ddev&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;The Digital Ocean tutorial and others that I found were great for setting up a new site, but I wanted to set up an existing site. That meant that I needed to learn how to tell ddev to use my existing database. I&#39;ve written this post in case someone else runs into the same issue.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Before doing anything else, I had to log on to my Digital Ocean droplet and get the codebase and SQL file for the existing project. I made an SQL file of my database and a &lt;a href=&quot;https://www.howtogeek.com/362203/what-is-a-tar.gz-file-and-how-do-i-open-it/&quot;&gt;tarball&lt;/a&gt; of the codebase, and then I downloaded them into the &lt;code&gt;~/Sites&lt;/code&gt; directory on my laptop.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-develop-a-drupal-9-website-on-your-local-machine-using-docker-and-ddev&quot;&gt;Digital Ocean tutorial&lt;/a&gt;&#39;s &amp;quot;Prerequisites&amp;quot; section already tells you everything you need to know about installing Docker Desktop and ddev, so I won&#39;t repeat that information here.&lt;/p&gt;
&lt;h2&gt;Setup&lt;/h2&gt;
&lt;p&gt;Using the Terminal, I navigated to the directory that was created when I unpacked the tarball that contained my site&#39;s files (i.e., &lt;code&gt;cd ~/Sites/dllmain&lt;/code&gt;). It&#39;s important to run the following commands from the main directory for your site.&lt;/p&gt;
&lt;p&gt;After I started Docker Desktop, I did &lt;code&gt;ddev config&lt;/code&gt; in my site&#39;s main directory. That took me through a dialog that asked me questions about my site:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;❯ ddev config&lt;br /&gt;Creating a new ddev project config &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; the current directory &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/Users/sjhuskey/Sites/dllmain&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;Once completed, your configuration will be written to /Users/sjhuskey/Sites/dllmain/.ddev/config.yaml&lt;br /&gt;&lt;br /&gt;Project name &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dllmain&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;The docroot is the directory from &lt;span class=&quot;token function&quot;&gt;which&lt;/span&gt; your site is served.&lt;br /&gt;This is a relative path from your project root at /Users/sjhuskey/Sites/dllmain&lt;br /&gt;You may leave this value blank &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; your site files are &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; the project root&lt;br /&gt;Docroot Location &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;current directory&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: web&lt;br /&gt;Warning: the provided docroot at /Users/sjhuskey/Sites/dllmain/web does not currently exist.&lt;br /&gt;Create docroot at /Users/sjhuskey/Sites/dllmain/web? &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Y/n&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Y&lt;br /&gt;Created docroot at /Users/sjhuskey/Sites/dllmain/web.&lt;br /&gt;Found a php codebase at /Users/sjhuskey/Sites/dllmain/web.&lt;br /&gt;Project Type &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;backdrop, drupal10, drupal6, drupal7, drupal8, drupal9, laravel, magento, magento2, php, shopware6, typo3, wordpress&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;php&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: drupal9&lt;br /&gt;Ensuring &lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt; permissions &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; dllmain&lt;br /&gt;No settings.php &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; exists, creating one&lt;br /&gt;Existing settings.php &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; includes settings.ddev.php&lt;br /&gt;Configuration complete. You may now run &lt;span class=&quot;token string&quot;&gt;&#39;ddev start&#39;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;Project name: I gave mine the name &amp;quot;dllmain&amp;quot;. The name must conform to standard &lt;a href=&quot;https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_hostnames&quot;&gt;hostname restrictions&lt;/a&gt;, as I learned when I tried to use &amp;quot;digital_latin&amp;quot;.&lt;/li&gt;
&lt;li&gt;Docroot Location: I indicated &lt;code&gt;web&lt;/code&gt;, since that&#39;s where all of the docs are for the site.&lt;/li&gt;
&lt;li&gt;Project Type: ddev will attempt to identify the type of project it&#39;s dealing with and suggest an answer here. It correctly identified the codebase as a drupal9 project, so I used its answer.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Initial Start&lt;/h2&gt;
&lt;p&gt;Since ddev said that I could run &lt;code&gt;ddev start&lt;/code&gt;, I did. That step initializes all of the containers that will be used in the new local environment.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;❯ ddev start&lt;br /&gt;Starting dllmain&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.&lt;br /&gt;Pushed mkcert rootca certs to ddev-global-cache/mkcert&lt;br /&gt;Network ddev-dllmain_default  Created&lt;br /&gt;Container ddev-dllmain-dba  Started&lt;br /&gt;Container ddev-dllmain-db  Started&lt;br /&gt;Container ddev-dllmain-web  Started&lt;br /&gt;Container ddev-router  Started&lt;br /&gt;Ensuring &lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt; permissions &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; dllmain&lt;br /&gt;Existing settings.php &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; includes settings.ddev.php&lt;br /&gt;Ensuring &lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt; permissions &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; dllmain&lt;br /&gt;Successfully started dllmain&lt;br /&gt;Project can be reached at https://dllmain.ddev.site https://127.0.0.1:56094&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That last line says that the project can be reached at &lt;a href=&quot;https://dllmain.ddev.site/&quot;&gt;https://dllmain.ddev.site&lt;/a&gt;, but … my database wasn&#39;t available yet, so there would definitely be problems if I did that. Indeed, even if I had been working on a brand new site, I&#39;d still need to run &lt;code&gt;ddev composer create &amp;quot;drupal/recommended-project&amp;quot;&lt;/code&gt; to load all of the dependencies. Unfortunately, the tutorials I found online didn&#39;t cover how to import a new database.&lt;/p&gt;
&lt;h2&gt;Importing the Database&lt;/h2&gt;
&lt;p&gt;When I ran &lt;code&gt;ddev start&lt;/code&gt;, ddev started a database server in a container named &amp;quot;ddev-dllmain-db&amp;quot;. For a moment, I thought that I would have to log on to that container and interact with MySQL there. I was happy to discover that ddev was several steps ahead of me. All I needed was a simple ddev command.&lt;/p&gt;
&lt;p&gt;I moved the SQL file (digital_latin.bak.sql) for my database into the directory for my project, and then I entered this on the command line:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev mysql db &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; digital_latin.bak.sql&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That imported the contents of digital_latin.bak.sql into the existing database (&amp;quot;db&amp;quot;) that was already set up to be used by the Drupal codebase!&lt;/p&gt;
&lt;h2&gt;White Screen of Death&lt;/h2&gt;
&lt;p&gt;I&#39;ve come to accept as a given that the beginning of any Drupal project will have a bump or two. This case was no different.&lt;/p&gt;
&lt;p&gt;I ran &lt;code&gt;ddev launch&lt;/code&gt;, which should have opened a browser and displayed my site at &lt;a href=&quot;https://dllmain.ddev.site/&quot;&gt;https://dllmain.ddev.site&lt;/a&gt;. The browser opened, but it displayed the dreaded message &amp;quot;The website encountered an unexpected error. Please try again later.&amp;quot;&lt;/p&gt;
&lt;p&gt;That&#39;s not a very helpful error message, but that&#39;s nothing new with Drupal. It&#39;s a good thing that Drupal&#39;s user community is so helpful! After a quick search of that error message, I learned that I could add this line to the settings.php file to get more information:&lt;/p&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$config&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;system.logging&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;error_level&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;verbose&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So I did that and discovered that my Radix subtheme was causing problems. After I reset the theme to Bartik (&lt;code&gt;ddev drush config-set system.theme default bartik&lt;/code&gt;) and clearned the cache (&lt;code&gt;ddev drush cr&lt;/code&gt;), my site was reachable.&lt;/p&gt;
&lt;p&gt;Woohoo! Let the development begin!&lt;/p&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/es/@rubaitulazad?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Rubaitul Azad&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/drupal?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>NEH funding histories for AAU Institutions</title>
    <link href="https://sjhuskey.info/posts/aau-exploration/" />
    <updated>2022-09-26T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/aau-exploration/</id>
    <content type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.ou.edu/leadon/pillars/pillar1&quot;&gt;first pillar&lt;/a&gt; in the &lt;a href=&quot;https://www.ou.edu/leadon&quot;&gt;strategic plan&lt;/a&gt; of my home institution, the &lt;a href=&quot;https://www.ou.edu/&quot;&gt;University of Oklahoma&lt;/a&gt; is &amp;quot;Become a Top-Tier Public Research University.&amp;quot; Strategy #1 in that pillar is &amp;quot;Meet Association of American Universities-quality benchmarks to position OU among the top public universities in the U.S.&amp;quot; OU&#39;s &lt;a href=&quot;https://www.ou.edu/cas/&quot;&gt;Dodge Family College of Arts and Sciences&lt;/a&gt; supports this strategy in its (draft) &lt;a href=&quot;https://ou.edu/cas/connect/strategic-plan&quot;&gt;strategic plan&lt;/a&gt;: &amp;quot;The DFCAS must build, maintain, and continually advance a culture of excellence to ensure we are at the leading edge of OU’s research ambitions and AAU aspirations.&amp;quot;&lt;/p&gt;
&lt;p&gt;Accordingly, to do my part to support these efforts, I aim to use my background in the humanities and my data skills (such as they are) to shed some light on research metrics in humanities departments at AAU institutions. What follows is my first effort: analyzing the history of research funding from the National Endowment for the Humanities (NEH) to public AAU institutions.&lt;/p&gt;
&lt;h2&gt;Sources&lt;/h2&gt;
&lt;p&gt;I searched the &lt;a href=&quot;https://securegrants.neh.gov/publicquery/main.aspx&quot;&gt;NEH&#39;s database&lt;/a&gt;, entering the names of AAU institutions into the &amp;quot;Organization Name&amp;quot; field. I downloaded the results in CSV form, then I used the Python &lt;a href=&quot;https://pandas.pydata.org/&quot;&gt;Pandas&lt;/a&gt; library to analyze the data.&lt;/p&gt;
&lt;p&gt;The data and the Jupyter notebook are available on my GitHub page at &lt;a href=&quot;https://github.com/sjhuskey/aau&quot;&gt;https://github.com/sjhuskey/aau&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Exploring the Data&lt;/h2&gt;
&lt;p&gt;After creating a big dataframe out of the 35 CSV files that I downloaded from the NEH&#39;s database, I explored the data.&lt;/p&gt;
&lt;p&gt;First, I used the &lt;code&gt;info()&lt;/code&gt; method to see what was available in the dataframe.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;big_frame&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;info&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;pandas.core.frame.DataFrame&#39;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;    Int64Index&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; entries&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; to &lt;span class=&quot;token number&quot;&gt;154&lt;/span&gt;&lt;br /&gt;    Data columns &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;total &lt;span class=&quot;token number&quot;&gt;45&lt;/span&gt; columns&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token comment&quot;&gt;#   Column                         Non-Null Count  Dtype&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;                         &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;   ApplicationID                  &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;   ApplicationNumber              &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;   ApplicantType                  &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;   SuppCount                      &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;   ProductCount                   &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;   CoverageCount                  &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;   PrizeCount                     &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;   ParticipatingInstitutionCount  &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;   WhitePaper                     &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;   WhitePaperPath                 &lt;span class=&quot;token number&quot;&gt;167&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null    &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;  PDFirstname                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;  PDMiddlename                   &lt;span class=&quot;token number&quot;&gt;6406&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;  PDLastname                     &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;  PDNameSuffix                   &lt;span class=&quot;token number&quot;&gt;210&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null    &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;14&lt;/span&gt;  CoPDFirstname                  &lt;span class=&quot;token number&quot;&gt;162&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null    &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;  CoPDMiddlename                 &lt;span class=&quot;token number&quot;&gt;76&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null     &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;  CoPDLastname                   &lt;span class=&quot;token number&quot;&gt;162&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null    &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;17&lt;/span&gt;  CoPDNameSuffix                 &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null      &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;  Participants                   &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;19&lt;/span&gt;  GranteeDisplay                 &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;  Institution                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;21&lt;/span&gt;  InstCity                       &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;  InstState                      &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;23&lt;/span&gt;  InstPostalCode                 &lt;span class=&quot;token number&quot;&gt;9589&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;  InstCountry                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;  CouncilDate                    &lt;span class=&quot;token number&quot;&gt;9483&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;  YearAwarded                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;27&lt;/span&gt;  ProjectTitle                   &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;28&lt;/span&gt;  PrimaryDiscipline              &lt;span class=&quot;token number&quot;&gt;9569&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;29&lt;/span&gt;  AllDisciplines                 &lt;span class=&quot;token number&quot;&gt;9144&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;  ProgramID                      &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;31&lt;/span&gt;  ProgramName                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;32&lt;/span&gt;  DivisionID                     &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   int64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;33&lt;/span&gt;  DivisionName                   &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;34&lt;/span&gt;  OfferedOutright                &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;35&lt;/span&gt;  OfferedMatching                &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;36&lt;/span&gt;  ApprovedOutright               &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;37&lt;/span&gt;  ApprovedMatching               &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;38&lt;/span&gt;  AwardOutright                  &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;39&lt;/span&gt;  AwardMatching                  &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;  OriginalAmount                 &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;41&lt;/span&gt;  SupplementAmount               &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   float64&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;42&lt;/span&gt;  GrantPeriod                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;43&lt;/span&gt;  ProjectDesc                    &lt;span class=&quot;token number&quot;&gt;9590&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null   &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token number&quot;&gt;44&lt;/span&gt;  ToSupport                      &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; non&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;null      float64&lt;br /&gt;    dtypes&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; float64&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int64&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    memory usage&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; MB&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used &lt;code&gt;unique()&lt;/code&gt; to zoom in on the &#39;Institution&#39; column to see what was there:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;big_frame&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;unique&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    array&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin System&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin Extension&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin Colleges&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin Foundation&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;University of Minnesota&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Minnesota Press&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Minnesota, University Gallery&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Maryland, College Park&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;President and Fellows of Harvard College&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;MLA&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Santa Barbara&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, San Diego&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           …&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University of Pennsylvania&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University Southeast&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University at South Bend&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University, Kokomo&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University Alumni Association&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University East&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University Press&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;University Of Houston&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Kansas, Lawrence&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Kansas Center for Research, Inc.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Kansas Humanities Council&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;University of Washington&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;University of Washington, Bothell&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Irvine&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dtype&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It&#39;s clear that many of the institutions in the data are not AAU institutions, so I took steps to filter the data.&lt;/p&gt;
&lt;p&gt;I made a list of just the AAU institutions:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;aau_list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Kansas, Lawrence&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Georgia Tech&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Maryland, College Park&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Mizzou&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Board of Trustees of the University of Illinois&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UCLA; Regents of the University of California, Los Angeles&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Penn State&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Florida&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Purdue University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Rutgers, The State University of New Jersey&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Michigan State University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin System&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Trustees of Indiana University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Texas A &amp;amp; M University, College Station&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Irvine&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of North Carolina at Chapel Hill&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Virginia&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Minnesota&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of California, Berkeley&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of Colorado, Boulder&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Texas, Austin&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, San Diego&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Washington&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Davis&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Utah&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Santa Barbara&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;SUNY Research Foundation, Stony Brook&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of Michigan&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Santa Cruz&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Iowa&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;SUNY Research Foundation, Buffalo State College&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Arizona Board of Regents&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Ohio State University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Pittsburgh&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Oregon&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# How many institutions are in the aau_list? There should be 35.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token builtin&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;aau_list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token number&quot;&gt;35&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I used &lt;code&gt;isin()&lt;/code&gt; to filter the dataframe to include only the institutions in my list of public AAU institutions.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;aau_frame &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; big_frame&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;big_frame&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isin&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;aau_list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I surveyed the columns in the dataframe to see how I might further filter it.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;aau_frame&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;columns&lt;br /&gt;&lt;br /&gt;Index&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;ApplicationID&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ApplicationNumber&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ApplicantType&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;SuppCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;ProductCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;CoverageCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;PrizeCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;ParticipatingInstitutionCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;WhitePaper&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;WhitePaperPath&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;PDFirstname&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;PDMiddlename&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;PDLastname&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;PDNameSuffix&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;CoPDFirstname&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;CoPDMiddlename&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;CoPDLastname&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;CoPDNameSuffix&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;Participants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;GranteeDisplay&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;InstCity&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;InstState&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;InstPostalCode&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;InstCountry&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;CouncilDate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ProjectTitle&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;PrimaryDiscipline&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;AllDisciplines&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;ProgramID&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ProgramName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;DivisionID&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;DivisionName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;OfferedOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;OfferedMatching&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ApprovedOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;ApprovedMatching&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;AwardMatching&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;OriginalAmount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token string&quot;&gt;&#39;SupplementAmount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;GrantPeriod&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ProjectDesc&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;ToSupport&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;          dtype&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;object&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We&#39;ll probably want at least Institution, YearAwarded, ProjectTitle, PrimaryDiscipline, ProgramName, DivisionName, and AwardOutright, so I made a frame with those columns.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_frame&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;ProjectTitle&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PrimaryDiscipline&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;ProgramName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;DivisionName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;style scoped=&quot;&quot;&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
&lt;pre&gt;&lt;code&gt;.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/style&gt;
&lt;table border=&quot;1&quot; class=&quot;dataframe&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;text-align: right;&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Institution&lt;/th&gt;
      &lt;th&gt;ProjectTitle&lt;/th&gt;
      &lt;th&gt;PrimaryDiscipline&lt;/th&gt;
      &lt;th&gt;ProgramName&lt;/th&gt;
      &lt;th&gt;DivisionName&lt;/th&gt;
      &lt;th&gt;AwardOutright&lt;/th&gt;
      &lt;th&gt;YearAwarded&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;University of Wisconsin System&lt;/td&gt;
      &lt;td&gt;Accessing the History of Health, Pharmacy, and...&lt;/td&gt;
      &lt;td&gt;History, General&lt;/td&gt;
      &lt;td&gt;Humanities Collections and Reference Resources&lt;/td&gt;
      &lt;td&gt;Preservation and Access&lt;/td&gt;
      &lt;td&gt;326326.0&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;University of Wisconsin System&lt;/td&gt;
      &lt;td&gt;&quot;Alternative Modernities&quot; and the Modernizatio...&lt;/td&gt;
      &lt;td&gt;Theater History and Criticism&lt;/td&gt;
      &lt;td&gt;Fellowships&lt;/td&gt;
      &lt;td&gt;Research Programs&lt;/td&gt;
      &lt;td&gt;60000.0&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;University of Wisconsin System&lt;/td&gt;
      &lt;td&gt;The Ford Foundation, Social Science, and the P...&lt;/td&gt;
      &lt;td&gt;Latin American History&lt;/td&gt;
      &lt;td&gt;Fellowships&lt;/td&gt;
      &lt;td&gt;Research Programs&lt;/td&gt;
      &lt;td&gt;60000.0&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;University of Wisconsin System&lt;/td&gt;
      &lt;td&gt;The History of Cartography Project&lt;/td&gt;
      &lt;td&gt;Interdisciplinary Studies, General&lt;/td&gt;
      &lt;td&gt;Humanities Collections and Reference Resources&lt;/td&gt;
      &lt;td&gt;Preservation and Access&lt;/td&gt;
      &lt;td&gt;185000.0&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;University of Wisconsin System&lt;/td&gt;
      &lt;td&gt;Open Access Edition of &quot;Citizen Countess: Sofi...&lt;/td&gt;
      &lt;td&gt;Russian History&lt;/td&gt;
      &lt;td&gt;Fellowships Open Book Program&lt;/td&gt;
      &lt;td&gt;Digital Humanities&lt;/td&gt;
      &lt;td&gt;5500.0&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;...&lt;/th&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;150&lt;/th&gt;
      &lt;td&gt;Mizzou&lt;/td&gt;
      &lt;td&gt;Utopian Societies Founded in the Soviet Union ...&lt;/td&gt;
      &lt;td&gt;History, General&lt;/td&gt;
      &lt;td&gt;Summer Stipends&lt;/td&gt;
      &lt;td&gt;Research Programs&lt;/td&gt;
      &lt;td&gt;1500.0&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;151&lt;/th&gt;
      &lt;td&gt;Mizzou&lt;/td&gt;
      &lt;td&gt;The Process of Government During the Presidenc...&lt;/td&gt;
      &lt;td&gt;History, General&lt;/td&gt;
      &lt;td&gt;Fellowships for University Teachers&lt;/td&gt;
      &lt;td&gt;Research Programs&lt;/td&gt;
      &lt;td&gt;15500.0&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;152&lt;/th&gt;
      &lt;td&gt;Mizzou&lt;/td&gt;
      &lt;td&gt;Dr. Johnson and the New Philosophy&lt;/td&gt;
      &lt;td&gt;Philosophy, General&lt;/td&gt;
      &lt;td&gt;Summer Stipends&lt;/td&gt;
      &lt;td&gt;Research Programs&lt;/td&gt;
      &lt;td&gt;1500.0&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;153&lt;/th&gt;
      &lt;td&gt;Mizzou&lt;/td&gt;
      &lt;td&gt;Title not available&lt;/td&gt;
      &lt;td&gt;History, General&lt;/td&gt;
      &lt;td&gt;Fellowships for Younger Scholars&lt;/td&gt;
      &lt;td&gt;Fellowships and Seminars&lt;/td&gt;
      &lt;td&gt;8387.0&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;154&lt;/th&gt;
      &lt;td&gt;Mizzou&lt;/td&gt;
      &lt;td&gt;Title not available&lt;/td&gt;
      &lt;td&gt;Philosophy, General&lt;/td&gt;
      &lt;td&gt;Summer Stipends&lt;/td&gt;
      &lt;td&gt;Research Programs&lt;/td&gt;
      &lt;td&gt;1500.0&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;8929 rows × 7 columns&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Since the NEH has numerous funding programs, it&#39;s important to include only those having to do with research. I took a closer look at the ProgramName column:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;ProgramName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;unique&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tolist&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Humanities Collections and Reference Resources&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships Open Book Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Summer Stipends&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Scholarly Editions and Translations&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Preservation Assistance Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Connections&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities Advancement Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships for University Teachers&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships for Advanced Social Science Research on Japan&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Research and Development&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Documenting Endangered Languages - Preservation&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Reference Materials&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Preservation/Access Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Projects in Media&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Collaborative Research&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Education Development and Demonstration&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Institutes for Higher Education Faculty&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Regional Center Implementation Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Institutes for K-12 Educators&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Projects in Libraries and Archives&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Regional Center Planning Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Basic Research&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Seminars for K-12 Educators&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Seminars for Higher Education Faculty&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Projects in Museums and Historical Organizations&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Editions&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Reference Materials - Tools&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Study Grants for College Teachers&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Translations&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Scholarly Publications&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Reference Materials - Guides&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities, Science, and Technology&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Archaeology Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Travel to Collections, 11/85 - 2/95&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Preservation and Access Projects Pre-1996&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Conferences&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Younger Scholars, 2/86 - 2/95&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Education Development &amp;amp; Demonstration (OLD)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Travel to Collections, 11/83 - 5/85&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Projects for Youth&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Reference Materials - Access&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;State and Local and  Regional Studies&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships for College Teachers and Independent Scholars&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships and Stipends for Professionals&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Residential College Teacher Fellowships, 1976-1981&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Younger Scholars, 2/76 - 2/85&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Institutional Development&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Special Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;State Humanities Councils General Operating Support Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Program Development/Planning Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Special Fellowships Programs&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Bicentennial Histories&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Institutional Planning and Development&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Institutes for Advanced Topics in the Digital Humanities&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Public Scholars&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Sustaining Cultural Heritage Collections&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Enduring Questions: Pilot Course Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities in the Public Square&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities Implementation Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digging into Data&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Small Grants to Libraries: King James Bible&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Bridging Cultures Forums and Workshops&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;Interpreting America&#39;s Historic Places: Planning Grants&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Dynamic Language Infrastructure-Documenting Endangered Languages - Fellowships&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Special Opportunity in Foreign Language Education&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Dissertation Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Programs for Nontraditional Learners&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Pilot Grants - Education&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Research Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Education Consultant Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Cooperative Agreements and Special Projects (Public Programs)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Common Heritage&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Dialogues on the Experience of War&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;NEH/DFG Bilateral Digital Humanities Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities Start-Up Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;National Digital Newspaper Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Cooperative Agreements and Special Projects (Digital Humanities)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Stabilization Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Teaching and Learning Resources and Curriculum Development&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Faculty Humanities Workshops&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Residential College Teacher Fellowships, 1980&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Education Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships for Younger Scholars&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Initiatives at Colleges and Universities&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Next Generation Humanities PhD (Planning)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Projects for the Public: Discovery Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;Small Grants to Libraries: America&#39;s Music&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities Fellowships&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Challenge Grants for Universities&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Institutes Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;NEH on the Road&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;International Research&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Planning and Assessment Studies&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Public Programs Special Projects (GD)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Connections Planning Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;ARP-Organizations (Preservation-related)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Exhibitions: Implementation&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;America&#39;s Historical and Cultural Organizations: Planning Grants&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;Save America&#39;s Treasures&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Preservation and Access Education and Training&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities Workshops&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Preservation - Assistance Grants (ER Title Ib)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Consultation Grants (ER Title Ib)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;National Heritage Preservation Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;ARP-Organizations (Research-related)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Small Grants to Libraries: Lincoln, Constitution and Civil War&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Grants to Preserve and Create Access to Humanities Collections&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Challenge Grants for Museums&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;NEH/AHRC New Directions for Digital Scholarship in Cultural Institutions&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Open Book Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Access Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;Interpreting America&#39;s Historic Places Consultation&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Landmarks of American History and Culture&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Small Grants to Libraries: Pride and Passion&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Special Initiatives&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Libraries Implementation&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Connections Implementation Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Bridging Cultures at Community Colleges&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Iraqi Cultural Heritage Initiative&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Small Grants to Libraries: Louisa May Alcott&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Media Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Short Documentaries&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Awards for Faculty&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Small Grants to Libraries: John Adams Unbound&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Conferences and Congresses&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Archaeological and Ethnographic Field Research&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Exhibitions: Planning&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Advancing Knowledge: The IMLS/NEH Digital Partnership&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Infrastructure and Capacity Building Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Enterprise Awards Pre-2001&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;ARP-Organizations (Public-related)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;America&#39;s Historical and Cultural Organizations: Implementation Grants&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Bicentennial Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Media Projects Production&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Projects for the Public: Production Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&quot;America&#39;s Media Makers: Production Grants&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;NEH/DOE Humanities High Performance Computing Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships at Digital Humanities Centers&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;NEH/DFG Symposia and Workshops Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Distinguished Teaching Professorships (Challenge)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Museums Implementation&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;History Project&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;NEH Teacher-Scholar Program&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;ARP-Organizations (Digital humanities-related)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Cooperative Agreements and Special Projects (P&amp;amp;A)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Cooperative Agreements and Special Projects (Research)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Humanities Initiatives at Hispanic-Serving Institutions&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Cooperative Agreements and Special Projects (Education)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;ARP-Organizations (Education-related)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Faculty Research Awards&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fostering Coherence Through Instruction&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Picturing America&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Special Project Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Improving Introductory Courses&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Picturing America School Collaboration Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Museums Planning&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Public Challenge Grants&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Many of those awards don&#39;t look relevant to AAU considerations. It&#39;s possible that the DivisionName column will give us a better picture:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;DivisionName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;unique&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tolist&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Preservation and Access&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Research Programs&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Education Programs&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Challenge Programs&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Public Programs&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Agency-wide Projects&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Fellowships and Seminars&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token string&quot;&gt;&#39;Federal/State Partnership&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using `value_counts() will show us how many awards have been given by those divisions.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Let&#39;s get counts of the grants from those programs.&lt;/span&gt;&lt;br /&gt;data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;DivisionName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value_counts&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Research Programs            &lt;span class=&quot;token number&quot;&gt;5287&lt;/span&gt;&lt;br /&gt;    Education Programs           &lt;span class=&quot;token number&quot;&gt;1360&lt;/span&gt;&lt;br /&gt;    Preservation &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; Access       &lt;span class=&quot;token number&quot;&gt;852&lt;/span&gt;&lt;br /&gt;    Fellowships &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; Seminars      &lt;span class=&quot;token number&quot;&gt;701&lt;/span&gt;&lt;br /&gt;    Public Programs               &lt;span class=&quot;token number&quot;&gt;427&lt;/span&gt;&lt;br /&gt;    Digital Humanities            &lt;span class=&quot;token number&quot;&gt;173&lt;/span&gt;&lt;br /&gt;    Challenge Programs             &lt;span class=&quot;token number&quot;&gt;84&lt;/span&gt;&lt;br /&gt;    Agency&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;wide Projects           &lt;span class=&quot;token number&quot;&gt;33&lt;/span&gt;&lt;br /&gt;    Federal&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;State Partnership      &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;br /&gt;    Name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; DivisionName&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dtype&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; int64&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&#39;s see that as a bar graph:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;DivisionName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value_counts&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;plot&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;barh&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_20_1.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It would be helpful to have a dataframe with grants from Research Programs, Digital Humanities and Fellowship and Seminars.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;programs &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Research Programs&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;Digital Humanities&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Fellowships and Seminars&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;aau_research &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;DivisionName&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isin&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;programs&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&#39;s see how many awards each institution has received over the history of NEH&#39;s funding:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Use value_counts() to get the number of awards per institution.&lt;/span&gt;&lt;br /&gt;total_number &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_research&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value_counts&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;total_number&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Regents of the University of Michigan                         &lt;span class=&quot;token number&quot;&gt;422&lt;/span&gt;&lt;br /&gt;    University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Berkeley                            &lt;span class=&quot;token number&quot;&gt;413&lt;/span&gt;&lt;br /&gt;    Trustees of Indiana University                                &lt;span class=&quot;token number&quot;&gt;361&lt;/span&gt;&lt;br /&gt;    University of Virginia                                        &lt;span class=&quot;token number&quot;&gt;336&lt;/span&gt;&lt;br /&gt;    UCLA&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; Regents of the University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Los Angeles    &lt;span class=&quot;token number&quot;&gt;315&lt;/span&gt;&lt;br /&gt;    University of Texas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Austin                                   &lt;span class=&quot;token number&quot;&gt;279&lt;/span&gt;&lt;br /&gt;    Board of Trustees of the University of Illinois               &lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;br /&gt;    University of Wisconsin System                                &lt;span class=&quot;token number&quot;&gt;252&lt;/span&gt;&lt;br /&gt;    University of Maryland&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; College Park                          &lt;span class=&quot;token number&quot;&gt;230&lt;/span&gt;&lt;br /&gt;    University of North Carolina at Chapel Hill                   &lt;span class=&quot;token number&quot;&gt;214&lt;/span&gt;&lt;br /&gt;    Rutgers&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; The State University of New Jersey                   &lt;span class=&quot;token number&quot;&gt;199&lt;/span&gt;&lt;br /&gt;    University of Minnesota                                       &lt;span class=&quot;token number&quot;&gt;194&lt;/span&gt;&lt;br /&gt;    University of Washington                                      &lt;span class=&quot;token number&quot;&gt;178&lt;/span&gt;&lt;br /&gt;    Regents of the University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Santa Barbara        &lt;span class=&quot;token number&quot;&gt;176&lt;/span&gt;&lt;br /&gt;    University of Iowa                                            &lt;span class=&quot;token number&quot;&gt;163&lt;/span&gt;&lt;br /&gt;    Ohio State University                                         &lt;span class=&quot;token number&quot;&gt;146&lt;/span&gt;&lt;br /&gt;    University of Kansas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Lawrence                                &lt;span class=&quot;token number&quot;&gt;144&lt;/span&gt;&lt;br /&gt;    Penn State                                                    &lt;span class=&quot;token number&quot;&gt;142&lt;/span&gt;&lt;br /&gt;    Regents of the University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Santa Cruz           &lt;span class=&quot;token number&quot;&gt;135&lt;/span&gt;&lt;br /&gt;    Arizona Board of Regents                                      &lt;span class=&quot;token number&quot;&gt;132&lt;/span&gt;&lt;br /&gt;    University of Oregon                                          &lt;span class=&quot;token number&quot;&gt;132&lt;/span&gt;&lt;br /&gt;    Regents of the University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Davis                &lt;span class=&quot;token number&quot;&gt;130&lt;/span&gt;&lt;br /&gt;    Regents of the University of Colorado&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Boulder                &lt;span class=&quot;token number&quot;&gt;126&lt;/span&gt;&lt;br /&gt;    Regents of the University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; San Diego            &lt;span class=&quot;token number&quot;&gt;119&lt;/span&gt;&lt;br /&gt;    University of Florida                                         &lt;span class=&quot;token number&quot;&gt;118&lt;/span&gt;&lt;br /&gt;    Mizzou                                                        &lt;span class=&quot;token number&quot;&gt;115&lt;/span&gt;&lt;br /&gt;    University of Pittsburgh                                      &lt;span class=&quot;token number&quot;&gt;111&lt;/span&gt;&lt;br /&gt;    Michigan State University                                     &lt;span class=&quot;token number&quot;&gt;106&lt;/span&gt;&lt;br /&gt;    SUNY Research Foundation&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Stony Brook                         &lt;span class=&quot;token number&quot;&gt;102&lt;/span&gt;&lt;br /&gt;    Regents of the University of California&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Irvine               &lt;span class=&quot;token number&quot;&gt;102&lt;/span&gt;&lt;br /&gt;    SUNY Research Foundation&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Buffalo State College                &lt;span class=&quot;token number&quot;&gt;82&lt;/span&gt;&lt;br /&gt;    Texas A &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; M University&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; College Station                        &lt;span class=&quot;token number&quot;&gt;76&lt;/span&gt;&lt;br /&gt;    Purdue University                                              &lt;span class=&quot;token number&quot;&gt;72&lt;/span&gt;&lt;br /&gt;    University of Utah                                             &lt;span class=&quot;token number&quot;&gt;54&lt;/span&gt;&lt;br /&gt;    Georgia Tech                                                   &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;br /&gt;    Name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Institution&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dtype&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; int64&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&#39;s the same information as a bar graph.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_23_1.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;How about the total amount the institutions have received?&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# How about total amount?&lt;/span&gt;&lt;br /&gt;total_amount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_research&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;groupby&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sort_values&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;plot&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;barh&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;figsize&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_24_0.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I used &lt;code&gt;value_counts()&lt;/code&gt; and &lt;code&gt;nlargest()&lt;/code&gt; to get the top ten institution by number of grants received.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Use nlargest() to get the top ten institutions by number of grants received.&lt;/span&gt;&lt;br /&gt;top_ten &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_research&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value_counts&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;nlargest&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;to_frame&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_27_1.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I wanted to make sure that the institutions had equivalent funding histories, so I checked on the earliest and most recent dates of awards for each one.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Make dataframes of the earliest and most recent years per institution.&lt;/span&gt;&lt;br /&gt;maximum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_research&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;groupby&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;reset_index&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;minimum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_research&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;groupby&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;reset_index&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token comment&quot;&gt;# Merge the minimum and maximum frames.&lt;/span&gt;&lt;br /&gt;merged &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pd&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;merge&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;minimum&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;maximum&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; on&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rename&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;columns&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded_x&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Earliest&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded_y&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Latest&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;merged&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;style scoped=&quot;&quot;&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
&lt;pre&gt;&lt;code&gt;.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/style&gt;
&lt;table border=&quot;1&quot; class=&quot;dataframe&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;text-align: right;&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Institution&lt;/th&gt;
      &lt;th&gt;Earliest&lt;/th&gt;
      &lt;th&gt;Latest&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;Arizona Board of Regents&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Board of Trustees of the University of Illinois&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Georgia Tech&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Michigan State University&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Mizzou&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;5&lt;/th&gt;
      &lt;td&gt;Ohio State University&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;6&lt;/th&gt;
      &lt;td&gt;Penn State&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;7&lt;/th&gt;
      &lt;td&gt;Purdue University&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;8&lt;/th&gt;
      &lt;td&gt;Regents of the University of California, Davis&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;9&lt;/th&gt;
      &lt;td&gt;Regents of the University of California, Irvine&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;10&lt;/th&gt;
      &lt;td&gt;Regents of the University of California, San D...&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;11&lt;/th&gt;
      &lt;td&gt;Regents of the University of California, Santa...&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;12&lt;/th&gt;
      &lt;td&gt;Regents of the University of California, Santa...&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;13&lt;/th&gt;
      &lt;td&gt;Regents of the University of Colorado, Boulder&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;14&lt;/th&gt;
      &lt;td&gt;Regents of the University of Michigan&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;15&lt;/th&gt;
      &lt;td&gt;Rutgers, The State University of New Jersey&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;16&lt;/th&gt;
      &lt;td&gt;SUNY Research Foundation, Buffalo State College&lt;/td&gt;
      &lt;td&gt;1966&lt;/td&gt;
      &lt;td&gt;2015&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;17&lt;/th&gt;
      &lt;td&gt;SUNY Research Foundation, Stony Brook&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;18&lt;/th&gt;
      &lt;td&gt;Texas A &amp;amp; M University, College Station&lt;/td&gt;
      &lt;td&gt;1971&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;19&lt;/th&gt;
      &lt;td&gt;Trustees of Indiana University&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;20&lt;/th&gt;
      &lt;td&gt;UCLA; Regents of the University of California,...&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;21&lt;/th&gt;
      &lt;td&gt;University of California, Berkeley&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;22&lt;/th&gt;
      &lt;td&gt;University of Florida&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;23&lt;/th&gt;
      &lt;td&gt;University of Iowa&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;24&lt;/th&gt;
      &lt;td&gt;University of Kansas, Lawrence&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;25&lt;/th&gt;
      &lt;td&gt;University of Maryland, College Park&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;26&lt;/th&gt;
      &lt;td&gt;University of Minnesota&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;27&lt;/th&gt;
      &lt;td&gt;University of North Carolina at Chapel Hill&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;28&lt;/th&gt;
      &lt;td&gt;University of Oregon&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;29&lt;/th&gt;
      &lt;td&gt;University of Pittsburgh&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;30&lt;/th&gt;
      &lt;td&gt;University of Texas, Austin&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;31&lt;/th&gt;
      &lt;td&gt;University of Utah&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;32&lt;/th&gt;
      &lt;td&gt;University of Virginia&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;33&lt;/th&gt;
      &lt;td&gt;University of Washington&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;34&lt;/th&gt;
      &lt;td&gt;University of Wisconsin System&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;There&#39;s some variation in there, but not much.&lt;/p&gt;
&lt;p&gt;Next, I wanted to know more about the disciplines represented in the dataset.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# How many disciplines are represented in this dataset?&lt;/span&gt;&lt;br /&gt;aau_research&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PrimaryDiscipline&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;nunique&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token number&quot;&gt;150&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# What are the top twenty disciplines in number of grants?&lt;/span&gt;&lt;br /&gt;aau_research&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PrimaryDiscipline&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value_counts&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;nlargest&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;to_frame&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;reset_index&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;style scoped=&quot;&quot;&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
&lt;pre&gt;&lt;code&gt;.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/style&gt;
&lt;table border=&quot;1&quot; class=&quot;dataframe&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;text-align: right;&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;index&lt;/th&gt;
      &lt;th&gt;PrimaryDiscipline&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;U.S. History&lt;/td&gt;
      &lt;td&gt;481&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Interdisciplinary Studies, General&lt;/td&gt;
      &lt;td&gt;370&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;History, General&lt;/td&gt;
      &lt;td&gt;274&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;British Literature&lt;/td&gt;
      &lt;td&gt;255&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;European History&lt;/td&gt;
      &lt;td&gt;235&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;5&lt;/th&gt;
      &lt;td&gt;Art History and Criticism&lt;/td&gt;
      &lt;td&gt;217&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;6&lt;/th&gt;
      &lt;td&gt;Music History and Criticism&lt;/td&gt;
      &lt;td&gt;215&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;7&lt;/th&gt;
      &lt;td&gt;American Literature&lt;/td&gt;
      &lt;td&gt;210&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;8&lt;/th&gt;
      &lt;td&gt;Archaeology&lt;/td&gt;
      &lt;td&gt;210&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;9&lt;/th&gt;
      &lt;td&gt;Literature, General&lt;/td&gt;
      &lt;td&gt;205&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;10&lt;/th&gt;
      &lt;td&gt;Anthropology&lt;/td&gt;
      &lt;td&gt;157&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;11&lt;/th&gt;
      &lt;td&gt;Philosophy, General&lt;/td&gt;
      &lt;td&gt;156&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;12&lt;/th&gt;
      &lt;td&gt;Linguistics&lt;/td&gt;
      &lt;td&gt;138&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;13&lt;/th&gt;
      &lt;td&gt;History and Philosophy of Science, Technology,...&lt;/td&gt;
      &lt;td&gt;114&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;14&lt;/th&gt;
      &lt;td&gt;East Asian History&lt;/td&gt;
      &lt;td&gt;111&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;15&lt;/th&gt;
      &lt;td&gt;Latin American History&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;16&lt;/th&gt;
      &lt;td&gt;Comparative Literature&lt;/td&gt;
      &lt;td&gt;98&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;17&lt;/th&gt;
      &lt;td&gt;Medieval Studies&lt;/td&gt;
      &lt;td&gt;96&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;18&lt;/th&gt;
      &lt;td&gt;British History&lt;/td&gt;
      &lt;td&gt;87&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;19&lt;/th&gt;
      &lt;td&gt;French Literature&lt;/td&gt;
      &lt;td&gt;83&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Here&#39;s that information as a pie chart:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_33_1.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Looking at OU&lt;/h2&gt;
&lt;p&gt;Now that I had some data on the NEH funding history of AAU institutions, it was time to start looking at OU. First, I repeated the steps that I took above: downloading the data, narrowing it down to just OU (&#39;Board of Regents of the University of Oklahoma&#39;), and further narrowing it down to just the NEH awards having to do with research.&lt;/p&gt;
&lt;p&gt;Here, I used &lt;code&gt;groupby()&lt;/code&gt; and &lt;code&gt;sum()&lt;/code&gt; to get a picture of OU&#39;s funding history over time:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Show the history of NEH funding at OU&lt;/span&gt;&lt;br /&gt;ou_years &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ou_research&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;groupby&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;to_frame&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;ou_years&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;style scoped=&quot;&quot;&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
&lt;pre&gt;&lt;code&gt;.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/style&gt;
&lt;table border=&quot;1&quot; class=&quot;dataframe&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;text-align: right;&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;AwardOutright&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;YearAwarded&lt;/th&gt;
      &lt;th&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;1967&lt;/th&gt;
      &lt;td&gt;25407.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1970&lt;/th&gt;
      &lt;td&gt;9000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1972&lt;/th&gt;
      &lt;td&gt;34750.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1973&lt;/th&gt;
      &lt;td&gt;68795.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1974&lt;/th&gt;
      &lt;td&gt;4000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1975&lt;/th&gt;
      &lt;td&gt;2000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1977&lt;/th&gt;
      &lt;td&gt;30000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1978&lt;/th&gt;
      &lt;td&gt;101770.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1979&lt;/th&gt;
      &lt;td&gt;102065.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1980&lt;/th&gt;
      &lt;td&gt;2500.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1981&lt;/th&gt;
      &lt;td&gt;4500.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1983&lt;/th&gt;
      &lt;td&gt;15900.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1984&lt;/th&gt;
      &lt;td&gt;88652.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1985&lt;/th&gt;
      &lt;td&gt;58990.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1986&lt;/th&gt;
      &lt;td&gt;29750.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1987&lt;/th&gt;
      &lt;td&gt;7000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1988&lt;/th&gt;
      &lt;td&gt;10750.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1989&lt;/th&gt;
      &lt;td&gt;30500.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1990&lt;/th&gt;
      &lt;td&gt;2950.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1996&lt;/th&gt;
      &lt;td&gt;30000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1997&lt;/th&gt;
      &lt;td&gt;34000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1998&lt;/th&gt;
      &lt;td&gt;34000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1999&lt;/th&gt;
      &lt;td&gt;34000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2000&lt;/th&gt;
      &lt;td&gt;50000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2001&lt;/th&gt;
      &lt;td&gt;4500.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2002&lt;/th&gt;
      &lt;td&gt;85000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2003&lt;/th&gt;
      &lt;td&gt;24000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2004&lt;/th&gt;
      &lt;td&gt;24000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2005&lt;/th&gt;
      &lt;td&gt;40000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2008&lt;/th&gt;
      &lt;td&gt;6000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2009&lt;/th&gt;
      &lt;td&gt;50400.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2013&lt;/th&gt;
      &lt;td&gt;50400.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2014&lt;/th&gt;
      &lt;td&gt;12000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2015&lt;/th&gt;
      &lt;td&gt;100800.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2016&lt;/th&gt;
      &lt;td&gt;6000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;td&gt;50400.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;td&gt;6000.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2022&lt;/th&gt;
      &lt;td&gt;6000.0&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Here&#39;s a dataframe with the most relevant information:&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Here&#39;s a dataframe with just the pertinent information about OU.&lt;/span&gt;&lt;br /&gt;ou_neh &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ou&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PDLastname&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PDFirstname&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;ProjectTitle&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PrimaryDiscipline&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;ou_neh&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;style scoped=&quot;&quot;&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
&lt;pre&gt;&lt;code&gt;.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/style&gt;
&lt;table border=&quot;1&quot; class=&quot;dataframe&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;text-align: right;&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Institution&lt;/th&gt;
      &lt;th&gt;YearAwarded&lt;/th&gt;
      &lt;th&gt;PDLastname&lt;/th&gt;
      &lt;th&gt;PDFirstname&lt;/th&gt;
      &lt;th&gt;ProjectTitle&lt;/th&gt;
      &lt;th&gt;AwardOutright&lt;/th&gt;
      &lt;th&gt;PrimaryDiscipline&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;2021&lt;/td&gt;
      &lt;td&gt;Marshall&lt;/td&gt;
      &lt;td&gt;Kimberly&lt;/td&gt;
      &lt;td&gt;New Stories of the West, for the West&lt;/td&gt;
      &lt;td&gt;500000.0&lt;/td&gt;
      &lt;td&gt;U.S. History&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;7&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
      &lt;td&gt;Heaton&lt;/td&gt;
      &lt;td&gt;Raina&lt;/td&gt;
      &lt;td&gt;Creating Online Access for the Native American...&lt;/td&gt;
      &lt;td&gt;345494.0&lt;/td&gt;
      &lt;td&gt;Linguistic Anthropology&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;8&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;2022&lt;/td&gt;
      &lt;td&gt;Mansky&lt;/td&gt;
      &lt;td&gt;Joseph&lt;/td&gt;
      &lt;td&gt;Plays, Libels, and the Public Sphere in Shakes...&lt;/td&gt;
      &lt;td&gt;6000.0&lt;/td&gt;
      &lt;td&gt;British Literature&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;15&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;2020&lt;/td&gt;
      &lt;td&gt;Heaton&lt;/td&gt;
      &lt;td&gt;Raina&lt;/td&gt;
      &lt;td&gt;Collaboration and development for digital acce...&lt;/td&gt;
      &lt;td&gt;49495.0&lt;/td&gt;
      &lt;td&gt;Native American Studies&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;27&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;2019&lt;/td&gt;
      &lt;td&gt;Marshall&lt;/td&gt;
      &lt;td&gt;Kimberly&lt;/td&gt;
      &lt;td&gt;Re-Membering the Boise Valley People: Rethinki...&lt;/td&gt;
      &lt;td&gt;6000.0&lt;/td&gt;
      &lt;td&gt;Cultural Anthropology&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;...&lt;/th&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;460&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
      &lt;td&gt;Davis&lt;/td&gt;
      &lt;td&gt;Robert&lt;/td&gt;
      &lt;td&gt;Title not available&lt;/td&gt;
      &lt;td&gt;1500.0&lt;/td&gt;
      &lt;td&gt;English&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;463&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;1970&lt;/td&gt;
      &lt;td&gt;Calhoun&lt;/td&gt;
      &lt;td&gt;Dougald&lt;/td&gt;
      &lt;td&gt;Correspondence of French Revolutionary Deputie...&lt;/td&gt;
      &lt;td&gt;7500.0&lt;/td&gt;
      &lt;td&gt;History, General&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;468&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;Opler&lt;/td&gt;
      &lt;td&gt;Morris&lt;/td&gt;
      &lt;td&gt;Title not available&lt;/td&gt;
      &lt;td&gt;15520.0&lt;/td&gt;
      &lt;td&gt;Anthropology&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;471&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;Davis&lt;/td&gt;
      &lt;td&gt;Gwenn&lt;/td&gt;
      &lt;td&gt;Title not available&lt;/td&gt;
      &lt;td&gt;1500.0&lt;/td&gt;
      &lt;td&gt;English&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;472&lt;/th&gt;
      &lt;td&gt;Board of Regents of the University of Oklahoma&lt;/td&gt;
      &lt;td&gt;1967&lt;/td&gt;
      &lt;td&gt;Miller&lt;/td&gt;
      &lt;td&gt;David&lt;/td&gt;
      &lt;td&gt;Title not available&lt;/td&gt;
      &lt;td&gt;8387.0&lt;/td&gt;
      &lt;td&gt;Hispanic American Studies&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;114 rows × 7 columns&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Which disciplines at OU have been the most successful at getting NEH grants?&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;ou_neh&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;PrimaryDiscipline&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value_counts&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;nlargest&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;plot&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pie&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;label&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;figsize&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;fontsize&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_62_1.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Comparing OU to AAU institutions&lt;/h2&gt;
&lt;p&gt;For a very basic overview, I compared OU&#39;s NEH funding per year to each AAU institution&#39;s NEH funding per year.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token triple-quoted-string string&quot;&gt;&#39;&#39;&#39;&lt;br /&gt;Make a frame of OU&#39;s NEH funding history to compare to AAU institutions.&lt;br /&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;br /&gt;OU &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ou_neh&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;groupby&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;to_frame&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Getting individual AAU institutions was tricky for me. I&#39;m sure there are much better ways of doing this, but I settled on this method.&lt;/p&gt;
&lt;p&gt;First, I made a Python dictionary of AAU institutions, with the AAU name as key and the name as it appears in the NEH data as the value. I used that to make individual dataframes to compare with OU.&lt;/p&gt;
&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;aau_dict &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Kansas&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Kansas, Lawrence&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Georgia Tech&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Georgia Tech&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Maryland&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Maryland, College Park&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Missouri&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Mizzou&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Illinois&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Board of Trustees of the University of Illinois&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UCLA&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;UCLA; Regents of the University of California, Los Angeles&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Penn State&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Penn State&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Florida&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Florida&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Purdue&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Purdue University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Rutgers&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Rutgers, The State University of New Jersey&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Michigan State University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Michigan State University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Wisconsin System&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Indiana University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Trustees of Indiana University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Texas A &amp;amp; M&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Texas A &amp;amp; M University, College Station&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UC Irvine&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Irvine&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UNC&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of North Carolina at Chapel Hill&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UVa&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Virginia&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Minnesota&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Minnesota&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;Berkeley&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of California, Berkeley&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Colorado&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of Colorado, Boulder&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Texas&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Texas, Austin&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UCSD&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, San Diego&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Washington&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Washington&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UC Davis&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Davis&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Utah&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Utah&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UC Santa Barbara&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Santa Barbara&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;SUNY Stony Brook&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;SUNY Research Foundation, Stony Brook&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Michigan&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of Michigan&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;UC Santa Cruz&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Regents of the University of California, Santa Cruz&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Iowa&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Iowa&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;SUNY Buffalo&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;SUNY Research Foundation, Buffalo State College&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Arizona&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Arizona Board of Regents&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;The Ohio State University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Ohio State University&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Pittsburgh&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Pittsburgh&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;token string&quot;&gt;&#39;University of Oregon&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;University of Oregon&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token triple-quoted-string string&quot;&gt;&#39;&#39;&#39;&lt;br /&gt;Loop through the AAU dictionary to get individual histories.&lt;br /&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;br /&gt;aau_frames &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;value &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; aau_dict&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;items&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    institution &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; key&lt;br /&gt;    df &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aau_research&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;aau_research&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Institution&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;    history &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; df&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;groupby&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;to_frame&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    aau_frames&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;update&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;institution&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;history&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;token triple-quoted-string string&quot;&gt;&#39;&#39;&#39;&lt;br /&gt;Loop through the aau_frames and make lines graphs&lt;br /&gt;comparing OU to individual AAU institutions.&lt;br /&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;value &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; aau_frames&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;items&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;br /&gt;    merged &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pd&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;merge&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;OU&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;on&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;YearAwarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    plot &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; merged&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rename&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;columns&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright_x&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;OU&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;AwardOutright_y&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;plot&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;OU&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;#841617&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;#168483&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;figsize&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;title&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;OU vs. &#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;xlabel&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Year Awarded&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;ylabel&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;Amount ($)&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    fig &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; plot&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;get_figure&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    fig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;savefig&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;../plots/OU-&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;.png&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;plot&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here are the line graphs showing the NEH funding history of OU as compared to that of each public AAU institution.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_3.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_4.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_5.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_6.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_7.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_8.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_9.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_10.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_11.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_12.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_13.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_14.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_15.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_16.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_17.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_18.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_19.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_20.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_21.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_22.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_23.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_24.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_25.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_26.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_27.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_28.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_29.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_30.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_31.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_32.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_33.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_34.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_35.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_36.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://sjhuskey.info/assets/images/aau/output_66_37.png&quot; alt=&quot;png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;More to Come&lt;/h2&gt;
&lt;p&gt;I have also done some Natural Language Processing work on the ProjectTitle field, just to see if I could identify any trends in projects that receive funding. I plan to write up that work in a future post.&lt;/p&gt;
&lt;p&gt;Do you have questions you want to ask of this data? Please feel free to contact me at &lt;a href=&quot;mailto:huskey@ou.edu&quot;&gt;huskey@ou.edu&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry> 
  <entry>
    <title>My Journey with Web Technology</title>
    <link href="https://sjhuskey.info/posts/journey/" />
    <updated>2022-04-01T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/journey/</id>
    <content type="html">&lt;p&gt;I was in graduate school when the internet was first becoming widely used by the general public. Since I am naturally curious about how things work (&lt;a href=&quot;https://web.archive.org/web/20000817192909/http://www.people.virginia.edu/~rjh9u/humbiol993.html&quot;&gt;a trait I inherited from my father&lt;/a&gt;, I began teaching myself about HTML and the rudiments of website design in my spare time. Eventually, I developed and published the &lt;a href=&quot;https://web.archive.org/web/20000816073621/http://www.uiowa.edu/~classics/&quot;&gt;University of Iowa Department of Classics&#39; first web site&lt;/a&gt; (thanks to the &lt;a href=&quot;https://web.archive.org/&quot;&gt;Internet Archive&#39;s WayBack Machine&lt;/a&gt; for preserving those first attempts 😀).&lt;/p&gt;
&lt;p&gt;Those first experiences led to my appointment as the Webmaster for the &lt;a href=&quot;https://camws.org/&quot;&gt;Classical Association of the Middle West and South&lt;/a&gt; (2002–2009). Among the other features that I implemented, I added internet commerce capabilities so that they could handle membership dues and conference registrations electronically. After that, I moved on to become the Information Architect for the &lt;a href=&quot;https://classicalstudies.org/&quot;&gt;Society for Classical Studies&lt;/a&gt; (2011–present). During these years of working for non-profit professional organizations, the standards and practices for web development underwent major changes. I went from managing a collection of static HTML pages to working with dynamic content management systems like &lt;a href=&quot;https://expressionengine.com/&quot;&gt;ExpressionEngine&lt;/a&gt; and &lt;a href=&quot;https://www.drupal.org/&quot;&gt;Drupal&lt;/a&gt;, along with all of their accompanying technologies (Linux, Apache, MySQL, PHP, JavaScript, CSS, etc.).&lt;/p&gt;
&lt;p&gt;Over time, my interests in teaching and scholarship coalesced with my knowledge and use of technology. I was an early adopter of digital tools and methods for enhancing the learning experience in my courses, but my first experience teaching fully online didn&#39;t occur until COVID-19 made it necessary. Although I adapted quickly to making short instructional videos and using both synchronous and asynchronous teaching methods, I discovered that I still prefer working with students in person. That doesn&#39;t mean that I will revert to teaching entirely in person. Rather, I plan to continue using technology where it is both appropriate and effective.&lt;/p&gt;
&lt;p&gt;As for scholarship, I began working at the intersection of traditional philology and the emerging field of digital humanities. In addition to the web technology that I was already comfortable using, I learned about Natural Language Processing, Linked Open Data, text manipulation, and a variety of other ways of working with information. Before I knew it, I was working daily with not only Latin and Greek, but also XML, Python, JavaScript, and other computer languages.&lt;/p&gt;
&lt;p&gt;All of that put me in a good position to become the director of the &lt;a href=&quot;https://digitallatin.org/&quot;&gt;Digital Latin Library&lt;/a&gt;, a collaborative effort of the Society for Classical Studies, the Medieval Academy of America, and the Renaissance Society of America. In that capacity, I led a &lt;a href=&quot;https://digitallatin.org/about-project/initial-dll-working-group/&quot;&gt;team of colleagues&lt;/a&gt; to secure funding (nearly $2 million over five years) from the &lt;a href=&quot;https://mellon.org/&quot;&gt;Mellon Foundation&lt;/a&gt; to support the development of a resource for finding and publishing texts in Latin from all eras. During that period of funding, we developed a &lt;a href=&quot;https://digitallatin.github.io/guidelines/LDLT-Guidelines.html&quot;&gt;data model for digital critical editions of Latin texts&lt;/a&gt;, &lt;a href=&quot;https://digitallatin.org/library-digital-latin-texts/data-visualization/&quot;&gt;experimental applications for visualizing digital critical editions&lt;/a&gt;, the framework for a &lt;a href=&quot;https://catalog.digitallatin.org/&quot;&gt;finding aid for existing editions of Latin texts&lt;/a&gt;, a &lt;a href=&quot;https://digitallatin.org/library-digital-latin-texts/&quot;&gt;platform for publishing peer-reviewed digital editions&lt;/a&gt;, an &lt;a href=&quot;http://digitalhumanities.org/dhq/vol/13/4/000438/000438.html&quot;&gt;authentication system for those editions&lt;/a&gt;, and an &lt;a href=&quot;https://ldlt.digitallatin.org/&quot;&gt;interactive reading room&lt;/a&gt;.&lt;/p&gt;
 &lt;hr /&gt;
 &lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/@fantasyflip?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Philipp Katzenberger&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/technology?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>Installing Drupal</title>
    <link href="https://sjhuskey.info/posts/installing-drupal/" />
    <updated>2022-03-10T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/installing-drupal/</id>
    <content type="html">&lt;h2&gt;Assumptions&lt;/h2&gt;
&lt;p&gt;These directions assume that you already have ssh access to a server with a LAMP stack, that you have installed &lt;a href=&quot;https://getcomposer.org/download/&quot;&gt;Composer&lt;/a&gt; and that you are comfortable working on the command line.&lt;/p&gt;
&lt;h2&gt;Create a new database and grant user privileges&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Do &lt;code&gt;mysql -u USER -p&lt;/code&gt; to get to the mysql prompt. Replace &lt;code&gt;USER&lt;/code&gt; with your MySQL admin user name.&lt;/li&gt;
&lt;li&gt;Create the database: &lt;code&gt;CREATE DATABASE databasename;&lt;/code&gt; (replace &lt;code&gt;databasebame&lt;/code&gt; with the name of your database).&lt;/li&gt;
&lt;li&gt;Create a user for the database: &lt;code&gt;CREATE USER &#39;databaseuser&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;password&#39;;&lt;/code&gt; (replace &lt;code&gt;databaseuser&lt;/code&gt; and &lt;code&gt;password&lt;/code&gt; with something)&lt;/li&gt;
&lt;li&gt;Grant privileges: &lt;code&gt;GRANT ALL ON database.* TO &#39;databaseuser&#39;@&#39;localhost&#39;;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FLUSH PRIVILEGES;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Set Up the Site&#39;s Root Directory&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the directory that Apache uses for its webroot. On Ubuntu and RHEL that&#39;s &lt;code&gt;cd /var/www/html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make a new directory for your site: &lt;code&gt;sudo mkdir my_site_name_dir&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change the owner of the directory &lt;code&gt;sudo chown YOURUSERNAME:apache my_site_name_dir&lt;/code&gt; (note that the Apache user is sometimes &lt;code&gt;www-data&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Use composer to create your drupal project:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;composer create-project drupal/recommended-project my_site_name_dir&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Enable Version Control&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Change into the site&#39;s directory: &lt;code&gt;cd my_site_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Initialize a git repository: &lt;code&gt;git init&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add a .gitignore file (see my post on this subject &lt;a href=&quot;https://sjhuskey.info/drupal/gitignore-for-drupal/&quot;&gt;https://sjhuskey.info/drupal/gitignore-for-drupal/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add the current files and commit.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Set up the files directory and give it the correct permissions:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;cd my_site_name_dir/web/sites/default&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo mkdir files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo chown YOURUSERNAME:apache files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo chmod a+w files&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Set up the private files directory:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the site&#39;s root (e.g., &lt;code&gt;cd my_site_name_dir&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Make the private files directory: &lt;code&gt;sudo mkdir private&lt;/code&gt;. Give the directory the correct owner and permissions: &lt;code&gt;sudo chown apache:apache private &amp;amp;&amp;amp; sudo chmod a+w private&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Create the settings file&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;code&gt;my_site_name_dir/web/sites/default&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy the default settings file: &lt;code&gt;cp default.settings.php settings.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change the ownership of the settings.php file: &lt;code&gt;sudo chown YOURUSERNAME:apache settings.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TEMPORARILY&lt;/strong&gt; change the permissions on the settings.php file: &lt;code&gt;sudo chmod ug=rwx,o=rw settings.php&lt;/code&gt;. You&#39;ll change the permissions again after the next step.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Run the installer script&lt;/h2&gt;
&lt;p&gt;Run install by going to the address of the site in a browser. See &lt;a href=&quot;https://www.drupal.org/docs/user_guide/en/install-run.html&quot;&gt;https://www.drupal.org/docs/user_guide/en/install-run.html&lt;/a&gt; for more information.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Choose language: Select your language of preference and click &amp;quot;Save and Continue.&amp;quot;&lt;/li&gt;
&lt;li&gt;Choose profile: Select the standard profile and click &amp;quot;Save and Continue.&amp;quot;&lt;/li&gt;
&lt;li&gt;Set up database: Enter the credentials for the database you created earlier. Click &amp;quot;Save and Continue.&amp;quot;&lt;/li&gt;
&lt;li&gt;Watch the installer run!&lt;/li&gt;
&lt;li&gt;Configure site: fill out the form. This creates user number one, which is the admin account for the site.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Move the configuration directory&lt;/h2&gt;
&lt;p&gt;The installer script created a configuration directory at &lt;code&gt;web/sites/default/files&lt;/code&gt;, but you should move it to the root of the installation for security purposes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;cd web/sites/default/files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make note of the name of the configuration directory and save it because you&#39;ll need it a couple more times. The directory name will look something like &lt;code&gt;config_M_Mc2eRHKbh5P0w5JnsFmEhpio44nLb0enNXYIH6v4VtwvzqRnvuXpeyMNr4o2OeEPh07BvYCg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy the config directory to the root of the installation: &lt;code&gt;sudo cp -r config_HASH ../../../../config_HASH &amp;amp;&amp;amp; sudo chown sjhuskey:sjhuskey ../../../../config_HASH &amp;amp;&amp;amp; sudo rm -rf config_HASH&lt;/code&gt; (where HASH is the string appended to the config directory&#39;s name).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Finish setting up the settings file&lt;/h2&gt;
&lt;p&gt;Navigate to &lt;code&gt;my_site_name_dir/web/sites/default&lt;/code&gt; if you aren&#39;t already there.&lt;/p&gt;
&lt;h3&gt;Edit the settings file&lt;/h3&gt;
&lt;p&gt;Use your favorite text editor (e.g., nano, vi) to make these changes to settings.php:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Search for &#39;trusted_host_patterns&#39;. Insert your top-level domain into the trusted_host_patterns variable:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;trusted_host_patterns&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;^your&#92;.domain&#92;.name&#92;.org$&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Search &#39;file_private_path&#39;, then edit:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;file_private_path&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$app_root&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;/../private&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Scroll to the end of the file. You&#39;ll see a block that defines your database connection. If you ever change the password for your database user, you&#39;ll need to change it here, too.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$databases&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;default&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;database&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;YOUR-DATABASE-NAME&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;username&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;YOUR-DATABASE-USER-NAME&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;password&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;YOUR-DATABASE-USER-NAME-PASSWORD&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;prefix&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;host&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;localhost&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;port&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;3306&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;namespace&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;Drupal&#92;&#92;Core&#92;&#92;Database&#92;&#92;Driver&#92;&#92;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;driver&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;The last line of the settings file should be for the config_sync_directory, but it&#39;s no longer accurate after your moved the directory earlier, so edit it like so (replacing HASH with the hash for your config directory):&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;$settings[&lt;span class=&quot;token string&quot;&gt;&#39;config_sync_directory&#39;&lt;/span&gt;] = $app_root . &lt;span class=&quot;token string&quot;&gt;&#39;/../config_HASH&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;CHANGE THE PERMISSIONS on the settings.php file: &lt;code&gt;sudo chmod ug=r,o=-rwx settings.php&lt;/code&gt; (doing &lt;code&gt;ls -la&lt;/code&gt; after this should show that the permissions on settings.php are &lt;code&gt;-r--r-----&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;CHANGE THE PERMISSIONS on the files directory: &lt;code&gt;sudo chmod a=rwx files&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Install drush&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;composer require drush/drush &amp;amp;&amp;amp; composer global require drush/drush &amp;amp;&amp;amp; composer global update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;So that you can call drush just by typing &lt;code&gt;drush&lt;/code&gt;, install &lt;a href=&quot;https://github.com/drush-ops/drush-launcher&quot;&gt;&amp;quot;Drush Launcher&amp;quot;&lt;/a&gt;:&lt;br /&gt;
a. Navigate to your user&#39;s home directory: &lt;code&gt;cd ~&lt;/code&gt;&lt;br /&gt;
b. &lt;code&gt;wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar&lt;/code&gt;&lt;br /&gt;
c. &lt;code&gt;chmod +x drush.phar&lt;/code&gt;&lt;br /&gt;
d. &lt;code&gt;sudo mv drush.phar /usr/local/bin/drush&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Navigate back to your site&#39;s root (e.g., &lt;code&gt;cd /var/www/html/my_site_name_dir&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Clear your site&#39;s cache: &lt;code&gt;drush cr&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Secure the Private Files Directory&lt;/h2&gt;
&lt;p&gt;In the site&#39;s UI, navigate to &lt;code&gt;admin/config/media/file-system&lt;/code&gt; and click &#39;Save configuation&#39; to generate the .htaccess file that will protect that directory. Back in the terminal, navigate to the private files directory and do &lt;code&gt;ls -la&lt;/code&gt; to verify that the .htaccess file was created.&lt;/p&gt;
&lt;h2&gt;Install Contributed Modules&lt;/h2&gt;
&lt;p&gt;To enhance the functionality of the site with contributed modules, you need to know the module&#39;s directory name on &lt;a href=&quot;https://drupal.org/&quot;&gt;drupal.org&lt;/a&gt;. To find the module&#39;s directory name, look at the end of the module&#39;s URL. For example, the Views module is at &lt;a href=&quot;https://www.drupal.org/project/feeds&quot;&gt;https://www.drupal.org/project/feeds&lt;/a&gt;. The directory name is just &lt;code&gt;feeds&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To install a module, use composer: &lt;code&gt;composer require drupal/module_directory_name&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then enable the module using drush: &lt;code&gt;drush en -y module_directory_name&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To uninstall a module:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;drush pm-uninstall module_directory_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;composer remove drupal/module_directory_name&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here are the modules that I install on most of my sites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;devel: indispensible for developing themes and modules&lt;/li&gt;
&lt;li&gt;feeds: import data from CSV or other formats&lt;/li&gt;
&lt;li&gt;google_analytics: the name speaks for itself :-)&lt;/li&gt;
&lt;li&gt;honeypot: excellent for keeping the bots away&lt;/li&gt;
&lt;li&gt;metatag: facilitates the publication of metadata for your site&lt;/li&gt;
&lt;li&gt;pathauto: automatically generates paths for your nodes&lt;/li&gt;
&lt;li&gt;redirect: again, speaks for itself&lt;/li&gt;
&lt;li&gt;search_api: more robust search than the search that comes with Drupal; also essential if you want to work with a Solr or Elastic Search instance)&lt;/li&gt;
&lt;li&gt;token: allows the use of variables in certain situations, making it much easier to apply changes globally, etc.&lt;/li&gt;
&lt;li&gt;token_filter: filter your tokens by context&lt;/li&gt;
&lt;li&gt;views_bulk_operations: allows you to edite multiple nodes all at once, among other things&lt;/li&gt;
&lt;li&gt;views_data_export: export your data in CSV, JSON, and other formats&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/es/@rubaitulazad?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Rubaitul Azad&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/drupal?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>Migrating the Digital Latin Library from Drupal 7 to Drupal 9</title>
    <link href="https://sjhuskey.info/posts/migrating-digital-latin-library-from-drupal-7-to-drupal-9/" />
    <updated>2021-10-04T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/migrating-digital-latin-library-from-drupal-7-to-drupal-9/</id>
    <content type="html">&lt;h1&gt;Background&lt;/h1&gt;
&lt;p&gt;I manage several sites that have been running on &lt;a href=&quot;https://drupal.org/&quot;&gt;Drupal 7&lt;/a&gt;. For a variety of reasons, I finally decided that it was time to upgrade them to Drupal 9. I wanted to bypass Drupal 8 altogether, since its end-of-life is coming up in November 2021. Previously, the upgrade path required a detour through D8, but now it&#39;s possible (theoretically) to go straight to D9, so that&#39;s what I planned to do.&lt;/p&gt;
&lt;p&gt;My first migration adventure was with &lt;a href=&quot;https://digitallatin.org/&quot;&gt;https://digitallatin.org/&lt;/a&gt;, the main informational site for the Digital Latin Library. I selected that one because it&#39;s a pretty simple site: a couple of custom content types and fields, no custom modules, very few users, and hardly any bells or whistles. I figured that migrating a simple site would prepare me for dealing with the more complex &lt;a href=&quot;https://catalog.digitallatin.org/&quot;&gt;https://catalog.digitallatin.org/&lt;/a&gt; later.&lt;/p&gt;
&lt;p&gt;I&#39;m going to include some command line stuff here, along with more general observations and notes, in the hope that this information will help someone else.&lt;/p&gt;
&lt;p&gt;Just for context, I am working on a droplet at &lt;a href=&quot;https://www.digitalocean.com/&quot;&gt;Digital Ocean&lt;/a&gt; running CentOS 7. That means it has MariaDB instead of MySQL, but otherwise everything is pretty standard. I am also using &lt;a href=&quot;https://getcomposer.org/&quot;&gt;Composer&lt;/a&gt; (version 2.1.3) for managing the Drupal codebase.&lt;/p&gt;
&lt;h2&gt;Edit the settings.php file&lt;/h2&gt;
&lt;p&gt;Make these changes to settings.php.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;code&gt;web/sites/default&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;settings.php&lt;/code&gt; using your favorite text editor.&lt;/li&gt;
&lt;li&gt;Search for &#39;trusted_host&#39; and insert the following after the end of the commented section for that setting:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;trusted_host_patterns&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token constant&quot;&gt;INSERT_YOUR_HOST_PATTERN_HERE&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Search &#39;file_private&#39; and insert the following after the end of the commented section for that setting: &lt;code&gt;$settings[&#39;file_private_path&#39;] = $app_root . &#39;/../private&#39;;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Search &#39;config_sync_directory&#39; and insert the following after the end of the commented section for that setting:&lt;br /&gt;
&lt;code&gt;$settings[&#39;config_sync_directory&#39;] = $app_root . &#39;/../DIRECTORYFROMSTEP8/sync&#39;;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;At end of file add connection to migration database. &lt;strong&gt;NOTE&lt;/strong&gt; It&#39;s important to name the key &#39;migrate&#39;.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$databases&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;default&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;array&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;database&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;DBNAME&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;username&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;DBUSER&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;password&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;DBPASSWORD&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;prefix&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;host&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;localhost&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;port&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;3306&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;namespace&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;Drupal&#92;&#92;Core&#92;&#92;Database&#92;&#92;Driver&#92;&#92;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;driver&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After these steps, navigate in the browser to &lt;code&gt;admin/config/media/file-system&lt;/code&gt; and click &#39;Save configuation&#39; to generate the .htaccess file.&lt;/p&gt;
&lt;h1&gt;Set up Git&lt;/h1&gt;
&lt;p&gt;Now is a good time to set up Git so that you can track your work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add a &lt;code&gt;.gitignore&lt;/code&gt; file to the root directory. Go to &lt;a href=&quot;https://sjhuskey.info/drupal/gitignore-for-drupal/&quot;&gt;https://sjhuskey.info/drupal/gitignore-for-drupal/&lt;/a&gt; for a good one. 🤓&lt;/li&gt;
&lt;li&gt;Initiate a git repository: &lt;code&gt;git init&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add files to repository: &lt;code&gt;git add .&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Commit: &lt;code&gt;git commit -m &amp;quot;First commit.&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Install and Enable Migrate Tools&lt;/h1&gt;
&lt;p&gt;I have encountered difficulties with installing the essential migration tools, since there are multiple conflicts between the Drupal core version, Drush version, and the various migrate modules. I have found it best to install the the migrate modules with Composer first (i.e., before installing Drush) and enable them with the UI (obviously, since Drush isn&#39;t installed yet). Note that &lt;code&gt;--with-all-dependencies&lt;/code&gt; will install the right version of Drush, since Drush is a dependency of the migrate modules.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;cd&lt;/code&gt; to the root site directory.&lt;/li&gt;
&lt;li&gt;Install and enable migrate tools: &lt;code&gt;composer require drupal/migrate_tools drupal/migrate_upgrade drupal/migrate_plus drupal/migrate_file --with-all-dependencies.&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Evaluate Modules Installed on Original Site&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Run the command &lt;code&gt;sudo drush pm-list --type=Module --no-core --status=enabled &amp;gt; ~/SITENAME-modules.txt&lt;/code&gt; to save a list of all of the enabled contributed and custom modules to a text file in the user&#39;s home directory.&lt;/li&gt;
&lt;li&gt;Download that file: &lt;code&gt;scp USERNAME@SERVERNAME:~/SITENAME-modules.txt Directory-of-your-choice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Review the list to see if there are Drupal 9 equivalents.&lt;/li&gt;
&lt;li&gt;Install equivalents using Composer.&lt;/li&gt;
&lt;li&gt;Enable the modules with Drush.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&#39;s important to do these steps so that the modules are taken into account when you generate the migration files.&lt;/p&gt;
&lt;h1&gt;Commit everything to the Git repository&lt;/h1&gt;
&lt;p&gt;At this point, it&#39;s a good idea to commit your changes to the Git repository.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -m &amp;quot;Added modules before starting to build the migration.&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git push&lt;/code&gt; (if you have a remote repository)&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Generate the Migration YAML files&lt;/h1&gt;
&lt;p&gt;In this step, you&#39;ll generate YAML migration files without actually running the migration (that&#39;s what &lt;code&gt;--configure-only&lt;/code&gt; does).&lt;/p&gt;
&lt;p&gt;From the root of the site, run &lt;code&gt;drush migrate-upgrade --configure-only --legacy-db-key=migrate --legacy-root=[INSERT THE ROOT DOMAIN OF YOUR SITE HERE]/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now, so that you&#39;ll have a copy of all of the files to review offline with a good text editor, do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy the config files to a directory called &lt;code&gt;migrate&lt;/code&gt; in the &lt;code&gt;/tmp&lt;/code&gt; directory: &lt;code&gt;drush config:export --destination=/tmp/migrate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy only the files having to do with migration to a directory called &lt;code&gt;migrate_files&lt;/code&gt; within your user&#39;s home directory: &lt;code&gt;mkdir ~/migrate_files &amp;amp;&amp;amp; cp /tmp/migrate/migrate_plus.migration.* /tmp/migrate/migrate_plus.migration_group.migrate_*.yml ~/migrate_files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Download that directory to your computer: &lt;code&gt;scp -r USERNAME@SERVERNAME:~/SITENAME_migrate_files DIRECTORY_ON_YOUR_COMPUTER&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Run the Migrations&lt;/h1&gt;
&lt;p&gt;Back in the root directory of the Drupal codebase, do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;drush migrate:import --tag=Configuration --execute-dependencies&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drush migrate:import --tag=Content --execute-dependencies&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It is very likely that there will be errors with one or both of these steps. At this point, debugging is the name of the game.&lt;/p&gt;
&lt;h1&gt;Errors and Solutions&lt;/h1&gt;
&lt;h2&gt;Inline Entity Form&lt;/h2&gt;
&lt;p&gt;I ran into the error &lt;code&gt;The &amp;quot;inline_entity_form_field_instance_settings&amp;quot; plugin does not exist&lt;/code&gt;. I honestly didn&#39;t think that the site I was working on used the &lt;a href=&quot;https://www.drupal.org/project/inline_entity_form&quot;&gt;Inline Entity Form&lt;/a&gt; module, so I hadn&#39;t installed it. Installing it did not resolve the issue, so I dove into the issue queue for that project and found a workaround at &lt;a href=&quot;https://www.drupal.org/project/inline_entity_form/issues/3208995&quot;&gt;https://www.drupal.org/project/inline_entity_form/issues/3208995&lt;/a&gt;. That did the trick for me, but it looks like &lt;a href=&quot;https://www.drupal.org/project/inline_entity_form/issues/3221074&quot;&gt;https://www.drupal.org/project/inline_entity_form/issues/3221074&lt;/a&gt; might also be a good solution.&lt;/p&gt;
&lt;h2&gt;Google Analytics&lt;/h2&gt;
&lt;p&gt;The migrations related to the &lt;a href=&quot;https://www.drupal.org/project/google_analytics&quot;&gt;Google Analytics&lt;/a&gt; module failed, so I searched its issue queue, too. The solution was to uninstall and remove the module, then install the &lt;a href=&quot;https://www.drupal.org/project/google_analytics/releases/8.x-3.x-dev&quot;&gt;dev&lt;/a&gt; version and apply the patch at &lt;a href=&quot;https://www.drupal.org/project/google_analytics/issues/3170816&quot;&gt;https://www.drupal.org/project/google_analytics/issues/3170816&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;YouTube&lt;/h2&gt;
&lt;p&gt;The D7 version of the site has a content type with a field type of &amp;quot;Youtube,&amp;quot; which was supplied by the &lt;a href=&quot;https://www.drupal.org/project/youtube&quot;&gt;YouTube Field module&lt;/a&gt;. I wasn&#39;t planning to use the YouTube Field module on the D9 version of the site, since D9 has a native Media field type that includes an option for embedding remote video files. But, since the module is supported for D8 and D9, I installed and enabled it. After that, the migration occurred without issue.&lt;/p&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/es/@rubaitulazad?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Rubaitul Azad&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/drupal?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>Making a Vocabulary List for Wheelock</title>
    <link href="https://sjhuskey.info/posts/making-a-vocabulary-list-for-wheelock/" />
    <updated>2021-09-07T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/making-a-vocabulary-list-for-wheelock/</id>
    <content type="html">&lt;p&gt;My colleagues and I wanted to have a table of all of the vocabulary words used in &lt;a href=&quot;http://www.wheelockslatin.com/&quot;&gt;&lt;em&gt;Wheelock&#39;s Latin&lt;/em&gt;&lt;/a&gt; that also showed the ranking of each word in terms of usage frequency as recorded in &lt;a href=&quot;https://dcc.dickinson.edu/latin-core-list1&quot;&gt;Dickinson College Commentaries&#39; Latin Core Vocabulary list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I used the helpful &lt;a href=&quot;https://docs.google.com/document/d/19_exhKRH1rVIL2yE_dc8jLk6zPwsb-r4os-BX43k6RE/edit?usp=sharing&quot;&gt;Google Doc of all of the vocabulary in Wheelock&lt;/a&gt; to get the list of words. DCC thoughtfully makes their Latin Core Vocabulary list available for free as a CSV (bene factum, DCC!). I did some preprocessing of the two sets of information to get two sets of data that I could compare. After that, I used the Python &lt;a href=&quot;https://pandas.pydata.org/&quot;&gt;Pandas&lt;/a&gt; library to merge the two sets. Overkill? Definitely! But it beats doing the comparison manually!&lt;/p&gt;
&lt;p&gt;If you&#39;re curious, you can see the repository with the data and the Python script at &lt;a href=&quot;https://github.com/sjhuskey/latin-vocabulary&quot;&gt;https://github.com/sjhuskey/latin-vocabulary&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&#39;s the table. It&#39;s sorted by Frequency Rank. You can also &lt;a href=&quot;https://sjhuskey.info/files/wheelock-dcc.csv&quot; title=&quot;wheelock-dcc&quot;&gt;download it as a CSV&lt;/a&gt;.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Latin Word&lt;/th&gt;
&lt;th&gt;Definition&lt;/th&gt;
&lt;th&gt;Wheelock Chapter&lt;/th&gt;
&lt;th&gt;Part of Speech&lt;/th&gt;
&lt;th&gt;Semantic Group&lt;/th&gt;
&lt;th&gt;Frequency Rank&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;sum, esse, fui, futurum&lt;/td&gt;
&lt;td&gt;to be, exist&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;qui, quae, quod&lt;/td&gt;
&lt;td&gt;(relative pronoun) who, which, what, that&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hic, haec, hoc&lt;/td&gt;
&lt;td&gt;this; the latter; (at times) he, she, it&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ille, illa, illud&lt;/td&gt;
&lt;td&gt;that; the former; the famous; (at times) he, she, it&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tu, tui&lt;/td&gt;
&lt;td&gt;you&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ego, mei&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;is, ea, id&lt;/td&gt;
&lt;td&gt;he, she, it&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ad (+acc)&lt;/td&gt;
&lt;td&gt;to(ward), up to, near&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Preposition&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;omnis, omne&lt;/td&gt;
&lt;td&gt;every, all&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nec&lt;/td&gt;
&lt;td&gt;and not, nor (neque/nec . . . neque/nec&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Conjunctions/Adverbs&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a/ab (+abl)&lt;/td&gt;
&lt;td&gt;away from, from; by&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Preposition&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ipse, ipsa, ipsum&lt;/td&gt;
&lt;td&gt;(intensive pronoun) myself, yourself, him/her/itself, etc; the very, the actual&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;possum, posse, potui&lt;/td&gt;
&lt;td&gt;to be able, can, could, have power&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;magnus, magna, magnum&lt;/td&gt;
&lt;td&gt;great, large; important&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;suus, sua, suum&lt;/td&gt;
&lt;td&gt;his own, her own, its own, their own&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;do, dare, dedi, datum&lt;/td&gt;
&lt;td&gt;to give, offer&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;video, vidēre, vidi, visum&lt;/td&gt;
&lt;td&gt;to see; observe, understand&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Vision&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;facio, facere, feci, factum&lt;/td&gt;
&lt;td&gt;to make, do, accomplish&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dico, dicere, dixi, dictum&lt;/td&gt;
&lt;td&gt;to say; tell, speak; name, call&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;atque/ac&lt;/td&gt;
&lt;td&gt;and, and also, and even&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Conjunctions/Adverbs&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ac&lt;/td&gt;
&lt;td&gt;and, and also, and even&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Conjunctions/Adverbs&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;alius, alia, aliud&lt;/td&gt;
&lt;td&gt;other, another&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;res, rei (f)&lt;/td&gt;
&lt;td&gt;thing, matter, business, affair&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 5th Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;habeo, habēre, habui, habitum&lt;/td&gt;
&lt;td&gt;to have, hold, possess; consider, regard&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animus, animi (m)&lt;/td&gt;
&lt;td&gt;soul, spirit, mind; heart, mind, intellect, courage&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;meus, mea, meum&lt;/td&gt;
&lt;td&gt;my&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deus, dei (m)&lt;/td&gt;
&lt;td&gt;god&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multus, multa, multum&lt;/td&gt;
&lt;td&gt;many&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tuus, tua, tuum&lt;/td&gt;
&lt;td&gt;your (singular)&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fero, ferre, tuli, latum&lt;/td&gt;
&lt;td&gt;to bear, bring; suffer, endure, tolerate, say, report&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ne&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Conjunctions/Adverbs&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;manus, manus (f)&lt;/td&gt;
&lt;td&gt;hand; handwriting; band&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nullus, nulla, nullum&lt;/td&gt;
&lt;td&gt;not any; no, none&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;noster, nostra, nostrum&lt;/td&gt;
&lt;td&gt;our&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;unus, una, unum&lt;/td&gt;
&lt;td&gt;one, single, alone&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dies, diei (m)&lt;/td&gt;
&lt;td&gt;day&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 5th Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;idem, eadem, idem&lt;/td&gt;
&lt;td&gt;the same&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rex, regis (m)&lt;/td&gt;
&lt;td&gt;king&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;locus, loci (m)&lt;/td&gt;
&lt;td&gt;place; passage in literature&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;venio, venire, veni, ventum&lt;/td&gt;
&lt;td&gt;to come&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pars, partis (f)*&lt;/td&gt;
&lt;td&gt;part, share; direction&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;volo, velle, volui&lt;/td&gt;
&lt;td&gt;to wish, want, be willing, will&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bonus, bona, bonum&lt;/td&gt;
&lt;td&gt;good, kind&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ago, agere, egi, actum&lt;/td&gt;
&lt;td&gt;to drive, lead, do, act; pass, spend&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;terra, terrae (f)&lt;/td&gt;
&lt;td&gt;land, earth, ground, country&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pater, patris (m)&lt;/td&gt;
&lt;td&gt;father&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;neque/nec&lt;/td&gt;
&lt;td&gt;and not, nor (neque/nec . . . neque/nec&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Conjunctions/Adverbs&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;domus, domus (-i) (f)&lt;/td&gt;
&lt;td&gt;home, house&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;The House&lt;/td&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;corpus, corporis (n)&lt;/td&gt;
&lt;td&gt;body&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aliquis, aliquid&lt;/td&gt;
&lt;td&gt;someone, somebody, something&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;totus, tota, totum&lt;/td&gt;
&lt;td&gt;whole, entire&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hic, haec, hoc&lt;/td&gt;
&lt;td&gt;this; the latter; (at times) he, she, it&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adverb&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iste, ista, istud&lt;/td&gt;
&lt;td&gt;that of yours, that; (sometimes pejorative: that despicable, that wretched)&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;urbs, urbis (f)*&lt;/td&gt;
&lt;td&gt;city&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;82&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;peto, petere, petivi, petitum&lt;/td&gt;
&lt;td&gt;to seek, aim at, beseech&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;83&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iubeo, iubēre, iussi, iussum&lt;/td&gt;
&lt;td&gt;to order, bid, command&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vir, viri (m)&lt;/td&gt;
&lt;td&gt;man, hero, husband&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bellum, belli (n)&lt;/td&gt;
&lt;td&gt;war&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vita, vitae (f)&lt;/td&gt;
&lt;td&gt;life; mode of life&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;homo, hominis (m)&lt;/td&gt;
&lt;td&gt;human being, man&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tempus, temporis (n)&lt;/td&gt;
&lt;td&gt;time; occasion, opportunity&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;primus, prima, primum&lt;/td&gt;
&lt;td&gt;first, foremost, chief, principal&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hostis, hostis (m)*&lt;/td&gt;
&lt;td&gt;an enemy (of the state); (plural = the enemy)&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mors, mortis (f)*&lt;/td&gt;
&lt;td&gt;death&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eo, ire, ii, itum&lt;/td&gt;
&lt;td&gt;to go (also: abeo, adeo, exeo, ineo, obeo, pereo, redeo)&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;arma, armorum (n)&lt;/td&gt;
&lt;td&gt;arms, weapons&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;superus, supera, superum&lt;/td&gt;
&lt;td&gt;above, upper&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vinco, vincere, vici, victum&lt;/td&gt;
&lt;td&gt;to conquer, overcome&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pono, ponere, posui, positum&lt;/td&gt;
&lt;td&gt;to put, place, set&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tantus, tanta, tantum&lt;/td&gt;
&lt;td&gt;so large, so great, of such a size&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;105&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;teneo, tenere, tenui, tentum&lt;/td&gt;
&lt;td&gt;to hold, keep, possess; restrain&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;106&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;causa, causae (f)&lt;/td&gt;
&lt;td&gt;cause, reason; case, situation. (in ablative + preceding genitive: for the sake of)&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;107&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sequor, sequi, secutus sum&lt;/td&gt;
&lt;td&gt;to follow&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;108&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;credo, credere, credidi, creditum&lt;/td&gt;
&lt;td&gt;to believe, trust&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;109&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accipio, accipere, accepi, acceptum&lt;/td&gt;
&lt;td&gt;to take (to one’s self), receive, accept&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;virtus, virtutis (f)&lt;/td&gt;
&lt;td&gt;manliness, courage; excellence, character, worth, virtue&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quaero, quaerere, quaesivi, quaesitum&lt;/td&gt;
&lt;td&gt;to seek, look for, strive for; ask, inquire, inquire into&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;113&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mitto, mittere, misi, missum&lt;/td&gt;
&lt;td&gt;to send, let go&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;114&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vis, vis (f)&lt;/td&gt;
&lt;td&gt;force, power, violence (plural = strength)&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;115&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amor, amoris (m)&lt;/td&gt;
&lt;td&gt;love&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;116&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;caelum, caeli (n)&lt;/td&gt;
&lt;td&gt;sky&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;117&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sub (+abl with verbs of rest, +acc with verbs of motion)&lt;/td&gt;
&lt;td&gt;under, up under, close to, at the foot of&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Preposition&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;118&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nox, noctis (f)*&lt;/td&gt;
&lt;td&gt;night&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;119&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;populus, populi (m)&lt;/td&gt;
&lt;td&gt;people, the people, a nation&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;122&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;caput, capitis (n)&lt;/td&gt;
&lt;td&gt;head; leader; beginning; life; heading; chapter&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;124&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mare, maris (n)*&lt;/td&gt;
&lt;td&gt;sea&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;125&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quidam, quaedam, quiddam&lt;/td&gt;
&lt;td&gt;certain, some&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;126&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mater, matris (f)&lt;/td&gt;
&lt;td&gt;mother&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;127&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quisquis, quidquid&lt;/td&gt;
&lt;td&gt;whoever, whatever&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;129&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;capio, capere, cepi, captum&lt;/td&gt;
&lt;td&gt;to take, capture, seize, get&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;131&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;duco, ducere, duxi, ductum&lt;/td&gt;
&lt;td&gt;to lead, consider, regard; prolong&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;133&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nomen, nominis (n)&lt;/td&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;135&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;miser, misera, miserum&lt;/td&gt;
&lt;td&gt;sad, wretched, miserable, unfortunate&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;137&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fortuna, fortunae (f)&lt;/td&gt;
&lt;td&gt;fortune, luck&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;138&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;novus, nova, novum&lt;/td&gt;
&lt;td&gt;new; strange&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;139&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gravis, grave&lt;/td&gt;
&lt;td&gt;heavy, weighty; serious, important; severe, grievous&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;140&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;longus, longa, longum&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;142&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;parvus, parva, parvum&lt;/td&gt;
&lt;td&gt;small, little&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;143&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;relinquo, relinquere, reliqui, relictum&lt;/td&gt;
&lt;td&gt;to leave behind, leave, abandon, desert&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fio, fieri, factus sum&lt;/td&gt;
&lt;td&gt;to occur, happen; become; be made, be done&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;146&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;os, oris (n)&lt;/td&gt;
&lt;td&gt;mouth, face&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;147&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;alter, altera, alterum&lt;/td&gt;
&lt;td&gt;the other (of two), second&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;148&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ignis, ignis (m)*&lt;/td&gt;
&lt;td&gt;fire&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;151&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;timeo, timēre, timui&lt;/td&gt;
&lt;td&gt;to be afraid, fear&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;153&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scelus, sceleris (n)&lt;/td&gt;
&lt;td&gt;crime, wickedness, evil deed&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;154&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;debeo, debēre, debui, debitum&lt;/td&gt;
&lt;td&gt;to owe; ought, must, should&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;155&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vivo, vivere, vixi, victum&lt;/td&gt;
&lt;td&gt;to live&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;156&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fatum, fati (n)&lt;/td&gt;
&lt;td&gt;fate; death&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;157&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;voco, vocāre, vocavi, vocatum&lt;/td&gt;
&lt;td&gt;to call, summon&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;158&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;paro, parāre, paravi, paratum&lt;/td&gt;
&lt;td&gt;to prepare, provide; get, obtain&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;160&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;miles, militis (m)&lt;/td&gt;
&lt;td&gt;soldier&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;161&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;medius, media, medium&lt;/td&gt;
&lt;td&gt;middle, the middle of&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;162&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;audio, audire, audivi, auditum&lt;/td&gt;
&lt;td&gt;to hear, listen to&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;165&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;puto, putāre, putavi, putatum&lt;/td&gt;
&lt;td&gt;to reckon, suppose, judge, think, imagine&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;166&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;annus, anni (m)&lt;/td&gt;
&lt;td&gt;year&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;167&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sto, stare, steti, statum&lt;/td&gt;
&lt;td&gt;to stand, stand still, stand firm&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;168&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vox, vocis (f)&lt;/td&gt;
&lt;td&gt;voice&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;169&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;genus, generis (n)&lt;/td&gt;
&lt;td&gt;origin; kind, type, sort, class&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;170&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;refero, referre, rettuli, relatum&lt;/td&gt;
&lt;td&gt;to carry back, bring back; repeat, answer, report&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;171&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scio, scire, scivi, scitum&lt;/td&gt;
&lt;td&gt;to know&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;172&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mens, mentis (f)*&lt;/td&gt;
&lt;td&gt;mind, thought, intention&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;173&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;licet, licere, licuit (impersonal)&lt;/td&gt;
&lt;td&gt;it is permitted, one may&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Verb: Impersonal&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;175&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;solus, sola, solum&lt;/td&gt;
&lt;td&gt;alone, only (non solum . . . sed etiam&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;176&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fugio, fugere, fugi, fugiturum&lt;/td&gt;
&lt;td&gt;to flee, hurry away; escape; go into exile; avoid, shun&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;177&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ullus, ulla, ulllum&lt;/td&gt;
&lt;td&gt;any&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;178&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nemo, nullius, nemini, neminem, nullo/nulla&lt;/td&gt;
&lt;td&gt;no one, nobody&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;179&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;natura, naturae (f)&lt;/td&gt;
&lt;td&gt;nature&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;180&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mos, moris (m)&lt;/td&gt;
&lt;td&gt;habit, custom, manner; (plural = character, morals)&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;181&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beneficium, beneficii (n)&lt;/td&gt;
&lt;td&gt;benefit, kindness; favor&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;182&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pectus, pectoris (n)&lt;/td&gt;
&lt;td&gt;breast, heart&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;183&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fides, fidei (f)&lt;/td&gt;
&lt;td&gt;faith, trust, trustworthiness, fidelity; promise, guarantee, protection&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 5th Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;184&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;patior, pati, passus sum&lt;/td&gt;
&lt;td&gt;to suffer, endure; permit&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;185&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cura, curae (f)&lt;/td&gt;
&lt;td&gt;care, attention, caution, anxiety&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;186&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ira, irae (f)&lt;/td&gt;
&lt;td&gt;ire, anger&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;187&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;verbum, verbi (n)&lt;/td&gt;
&lt;td&gt;word&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;188&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;parens, parentis (m/f)&lt;/td&gt;
&lt;td&gt;parent&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;190&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;puer, pueri (m)&lt;/td&gt;
&lt;td&gt;boy&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;191&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;moveo, movēre, movi, motum&lt;/td&gt;
&lt;td&gt;to move; arouse, affect&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;192&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dolor, doloris (m)&lt;/td&gt;
&lt;td&gt;pain, grief&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;193&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gens, gentis (f)*&lt;/td&gt;
&lt;td&gt;clan, race, nation, people&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;194&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;modus, modi (m)&lt;/td&gt;
&lt;td&gt;measure, bound, limit; manner, method, mode, way&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;195&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;via, viae (f)&lt;/td&gt;
&lt;td&gt;road, way, street&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;196&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quisque, quidque&lt;/td&gt;
&lt;td&gt;each one, each person, each thing&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;197&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amicus, amica, amicum&lt;/td&gt;
&lt;td&gt;friendly&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;198&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pes, pedis (m)&lt;/td&gt;
&lt;td&gt;lower leg, foot&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;199&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;imperium, imperii (n)&lt;/td&gt;
&lt;td&gt;power to command, supreme power, authority, command, control, imperium&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;labor, laboris (m)&lt;/td&gt;
&lt;td&gt;work, work, toil; a work, production&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;201&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ingens (gen: ingentis)&lt;/td&gt;
&lt;td&gt;huge&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;202&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;talis, tale&lt;/td&gt;
&lt;td&gt;such, of such a sort&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;apud (+acc)&lt;/td&gt;
&lt;td&gt;among, in the presence of, at the house of&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Preposition&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;205&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oculus, oculi (m)&lt;/td&gt;
&lt;td&gt;eye&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;206&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vultus, vultus (m)&lt;/td&gt;
&lt;td&gt;countenance, face&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;209&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cado, cadere, cecidi, casurum&lt;/td&gt;
&lt;td&gt;to fall&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;210&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quis, quid [after: si, nisi, num, or ne]&lt;/td&gt;
&lt;td&gt;anyone, anything, someone, something&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;212&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;traho, trahere, traxi, tractum&lt;/td&gt;
&lt;td&gt;to drag, draw; derive, acquire&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;213&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;metus, metus (m)&lt;/td&gt;
&lt;td&gt;fear&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;215&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;consilium, consilii (n)&lt;/td&gt;
&lt;td&gt;plan, purpose, counsel, advice, judgement, wisdom&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;217&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amo, amāre, amavi, amatum&lt;/td&gt;
&lt;td&gt;to love&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;219&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;levis, leve&lt;/td&gt;
&lt;td&gt;light, trivial&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;220&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;poena, poenae (f)&lt;/td&gt;
&lt;td&gt;penalty, punishment&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;223&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;frater, fratris (m)&lt;/td&gt;
&lt;td&gt;brother&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;225&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;malus, mala, malum&lt;/td&gt;
&lt;td&gt;bad, wicked, evil&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;227&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iaceo, iacēre, iacui&lt;/td&gt;
&lt;td&gt;to lie; lie prostrate; lie dead&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;The House&lt;/td&gt;
&lt;td&gt;228&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;liber, libera, liberum&lt;/td&gt;
&lt;td&gt;free&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;229&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;liber, libri (m)&lt;/td&gt;
&lt;td&gt;book&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;229&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iter, itineris (n)&lt;/td&gt;
&lt;td&gt;journey; route, road&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;230&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ferrum, ferri (n)&lt;/td&gt;
&lt;td&gt;iron; sword&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;231&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;spes, spei (f)&lt;/td&gt;
&lt;td&gt;hope&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Noun: 5th Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;232&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;puella, puellae (f)&lt;/td&gt;
&lt;td&gt;girl&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;233&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;finis, finis (m)*&lt;/td&gt;
&lt;td&gt;end, limit, boundary; purpose&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;236&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gero, gerere, gessi, gestum&lt;/td&gt;
&lt;td&gt;to carry; carry on, manage, conduct, wage&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;237&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ne&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Adverb&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;238&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dux, ducis (m)&lt;/td&gt;
&lt;td&gt;leader; guide; commander, general&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;239&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;premo, premere, pressi, pressum&lt;/td&gt;
&lt;td&gt;to press; press hard, pursue&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;240&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dominus, domini (n)&lt;/td&gt;
&lt;td&gt;master&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;241&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mons, montis (m)*&lt;/td&gt;
&lt;td&gt;mountain&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;242&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;litus, litoris (n)&lt;/td&gt;
&lt;td&gt;shore, coast&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;245&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;soleo, solēre, solitus sum&lt;/td&gt;
&lt;td&gt;to be accustomed&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;246&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;equus, equi (m)&lt;/td&gt;
&lt;td&gt;horse&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;248&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;durus, dura, durum&lt;/td&gt;
&lt;td&gt;hard, harsh, rough, stern, unfeeling, hardy, difficult&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;249&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cogo, cogere, coegi, coactum (cum + ago)&lt;/td&gt;
&lt;td&gt;to drive/bring together, force, compel&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;morior, mori, mortuus sum&lt;/td&gt;
&lt;td&gt;to die&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;253&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;carmen, carminis (n)&lt;/td&gt;
&lt;td&gt;song, poem&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;254&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ratio, rationis (f)&lt;/td&gt;
&lt;td&gt;reckoning, account; reason, judgement, consideration; system; manner, method&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ars, artis (f)*&lt;/td&gt;
&lt;td&gt;art, skill&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;258&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dexter, dextra, dextrum&lt;/td&gt;
&lt;td&gt;right, right&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;260&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;signum, signi (n)&lt;/td&gt;
&lt;td&gt;sign, signal, indication; seal&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;261&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lex, legis (f)&lt;/td&gt;
&lt;td&gt;law, statute&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;264&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;periculum, periculi (n)&lt;/td&gt;
&lt;td&gt;danger, risk&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;265&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nascor, nasci, natus sum&lt;/td&gt;
&lt;td&gt;to be born; spring forth arise&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;266&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exercitus, exercitus (m)&lt;/td&gt;
&lt;td&gt;army&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;267&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ventus, venti (m)&lt;/td&gt;
&lt;td&gt;wind&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;269&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;audeo, audēre, ausus sum&lt;/td&gt;
&lt;td&gt;to dare&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;270&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aqua, aquae (f)&lt;/td&gt;
&lt;td&gt;water&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;272&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rapio, rapere, rapui, raptum&lt;/td&gt;
&lt;td&gt;to seize, snatch, carry away&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;273&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tristis, triste&lt;/td&gt;
&lt;td&gt;sad, sorrowful; joyless, grim, severe&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;275&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fama, famae (f)&lt;/td&gt;
&lt;td&gt;rumor, report; fame&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;278&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;par (gen: paris) (+dat)&lt;/td&gt;
&lt;td&gt;equal (to), like&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;281&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vester, vestra, vestrum&lt;/td&gt;
&lt;td&gt;your (plural)&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;282&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;flumen, fluminis (n)&lt;/td&gt;
&lt;td&gt;river&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;283&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;certus, certa, certum&lt;/td&gt;
&lt;td&gt;definite, sure, certain, reliable&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;285&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fortis, forte&lt;/td&gt;
&lt;td&gt;brave, strong&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;286&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;placeo, placēre, placui, placitum (+dat)&lt;/td&gt;
&lt;td&gt;to be pleasing to, please&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;287&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;verto, vertere, verti, versum&lt;/td&gt;
&lt;td&gt;to turn; change&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;288&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;servo, servāre, servavi, servatum&lt;/td&gt;
&lt;td&gt;to save, preserve, keep, guard, protect&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;289&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;honor, honoris (m)&lt;/td&gt;
&lt;td&gt;honor, esteem; public office&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;290&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dignus, digna, dignum&lt;/td&gt;
&lt;td&gt;(+abl.) worthy, worthy of&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;291&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tollo, tollere, sustuli, sublatum&lt;/td&gt;
&lt;td&gt;to raise up, lift up; take away, remove, destroy&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;293&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nego, negāre, negavi, negatum&lt;/td&gt;
&lt;td&gt;to deny, to say that . . . not&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;294&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vetus (gen: veteris)&lt;/td&gt;
&lt;td&gt;old&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;295&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;trado, tradere, tradidi, traditum&lt;/td&gt;
&lt;td&gt;to give over, surrender; hand down, transmit, teach (trans + do)&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;297&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lux, lucis (f)&lt;/td&gt;
&lt;td&gt;light&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;299&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sentio, sentire, sensi, sensum&lt;/td&gt;
&lt;td&gt;to feel, perceive, think, experience&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;302&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cedo, cedere, cessi, cessum&lt;/td&gt;
&lt;td&gt;to go, withdraw; yield to, grant, submit&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;304&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;saxum, saxi (n)&lt;/td&gt;
&lt;td&gt;rock&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;306&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-ve&lt;/td&gt;
&lt;td&gt;or (suffix)&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Conjunctions/Adverbs&lt;/td&gt;
&lt;td&gt;307&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aetas, aetatis (f)&lt;/td&gt;
&lt;td&gt;period of life, life, age, an age, time&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;308&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;felix (gen: felicis)&lt;/td&gt;
&lt;td&gt;lucky, fortunate, happy&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;309&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;loquor, loqui, locutus sum&lt;/td&gt;
&lt;td&gt;to speak, say, tell&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;310&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quantus, quanta, quantum&lt;/td&gt;
&lt;td&gt;how large, how great, how much&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Pronoun&lt;/td&gt;
&lt;td&gt;Pronouns/Interrogatives&lt;/td&gt;
&lt;td&gt;311&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coepi, coepisse, coeptum&lt;/td&gt;
&lt;td&gt;began&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;312&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ius, iuris (n)&lt;/td&gt;
&lt;td&gt;right, justice, law&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;314&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;muto, mutāre, mutavi, mutatum&lt;/td&gt;
&lt;td&gt;to change, alter; exchange&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;315&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;invenio, invenire, inveni, inventum&lt;/td&gt;
&lt;td&gt;to find, come upon, discover&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;316&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;princeps (gen: principis)&lt;/td&gt;
&lt;td&gt;chief, foremost&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;317&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ops, opis (f)&lt;/td&gt;
&lt;td&gt;help, aid&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;318&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;recipio, recipere, recepi, receptum&lt;/td&gt;
&lt;td&gt;to take back, regain; admit, receive&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;319&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sol, solis (m)&lt;/td&gt;
&lt;td&gt;sun&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;320&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;consul, consulis (m)&lt;/td&gt;
&lt;td&gt;consul&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;321&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;turba, turbae (f)&lt;/td&gt;
&lt;td&gt;uproar, disturbance; mob, crowd, multitude&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;323&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ager, agri (m)&lt;/td&gt;
&lt;td&gt;field, farm&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;324&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vitium, vitii (n)&lt;/td&gt;
&lt;td&gt;fault, crime, vice&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;326&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vulnus, vulneris (n)&lt;/td&gt;
&lt;td&gt;wound&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;327&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;senatus, senatus (m)&lt;/td&gt;
&lt;td&gt;senate&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;329&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;utor, uti, usus sum (+abl)&lt;/td&gt;
&lt;td&gt;to use; enjoy, experience&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;330&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;copia, copiae (f)&lt;/td&gt;
&lt;td&gt;supply, abundance (plural = supplies, troops, forces)&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;331&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opus, operis (n)&lt;/td&gt;
&lt;td&gt;work, task; deed, accomplishment&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;332&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;numerus, numeri (m)&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;338&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cognosco, cognoscere, cognovi, cognitum&lt;/td&gt;
&lt;td&gt;to become acquainted with, learn, recognize&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;339&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;patria, patriae (f)&lt;/td&gt;
&lt;td&gt;fatherland, native land, homeland&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;342&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;civitas, civitatis (f)&lt;/td&gt;
&lt;td&gt;state, citizenship&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;346&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eripio, eripere, eripui, ereptum&lt;/td&gt;
&lt;td&gt;to snatch away, take away, rescue&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;349&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mundus, mundi (m)&lt;/td&gt;
&lt;td&gt;world, universe&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;350&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cursus, cursus (m)&lt;/td&gt;
&lt;td&gt;running, race; course&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;Athletics&lt;/td&gt;
&lt;td&gt;351&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;navis, navis (f)*&lt;/td&gt;
&lt;td&gt;ship, boat&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;353&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lacrima, lacrimae (f)&lt;/td&gt;
&lt;td&gt;tear&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;354&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;humanus, humana, humanum&lt;/td&gt;
&lt;td&gt;pertaining to man, human; humane, kind, refined, cultivated&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;355&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sidus, sideris (n)&lt;/td&gt;
&lt;td&gt;constellation, star&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;359&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gloria, gloriae (f)&lt;/td&gt;
&lt;td&gt;glory&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;360&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;auris, auris (f)*&lt;/td&gt;
&lt;td&gt;ear&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;366&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;taceo, tacēre, tacui, tacitum&lt;/td&gt;
&lt;td&gt;to be silent, leave unmentioned&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;369&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ostendo, ostendere, ostendi, ostentum&lt;/td&gt;
&lt;td&gt;to exhibit, show, display&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;371&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;turpis, turpe&lt;/td&gt;
&lt;td&gt;ugly; shameful, base, disgraceful&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;377&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;voluptas, voluptatis (f)&lt;/td&gt;
&lt;td&gt;pleasure&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;378&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iniuria, inuriae (f)&lt;/td&gt;
&lt;td&gt;injury, injustice, wrong&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;381&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dulcis, dulce&lt;/td&gt;
&lt;td&gt;sweet, pleasant, agreeable&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;383&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ingenium, ingenii (n)&lt;/td&gt;
&lt;td&gt;nature, innate talent&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;387&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pax, pacis (f)&lt;/td&gt;
&lt;td&gt;peace&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;388&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iuvo, iuvāre, iuvi, iutum&lt;/td&gt;
&lt;td&gt;to help&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;390&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doceo, docēre, docui, doctum&lt;/td&gt;
&lt;td&gt;to teach&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;393&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;excipio, excipere, excepi, exceptum&lt;/td&gt;
&lt;td&gt;to take out, except; take, receive, capture&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;394&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clarus, clara, clarum&lt;/td&gt;
&lt;td&gt;clear, bright, famous, renowned, illustrious&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;395&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mora, morae (f)&lt;/td&gt;
&lt;td&gt;delay&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;399&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;erro, errāre, erravi, erratum&lt;/td&gt;
&lt;td&gt;to err, go astray, make a mistake, be mistaken; wander&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;402&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gaudeo, gaudēre, gavisus sum&lt;/td&gt;
&lt;td&gt;to rejoice, be glad&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;407&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beatus, beata, beatum&lt;/td&gt;
&lt;td&gt;happy, fortunate, blessed&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;408&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;verus, vera, verum&lt;/td&gt;
&lt;td&gt;true, real, proper&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;410&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;incipio, incipere, incepi, inceptum&lt;/td&gt;
&lt;td&gt;to begin&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;411&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;parco, parcere, peperci, parsurum (+dat)&lt;/td&gt;
&lt;td&gt;to be lenient to; spare&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;412&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;similis, simile&lt;/td&gt;
&lt;td&gt;(+ gen. or dat.) similar (to), like, resembling&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;414&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;virgo, virginis (f)&lt;/td&gt;
&lt;td&gt;maiden, virgin, young woman&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;418&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lego, legere, legi, lectum&lt;/td&gt;
&lt;td&gt;to read; pick out, choose, select&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;419&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;forma, formae (f)&lt;/td&gt;
&lt;td&gt;form, shape; beauty&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;422&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;praesto, praestāre, praestiti, praestitum&lt;/td&gt;
&lt;td&gt;to excel; exhibit, show, offer, supply, furnish&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;423&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;misceo, miscēre, miscui, mixtum&lt;/td&gt;
&lt;td&gt;to mix, stir up, disturb&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;425&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transeo, transire, transii, transitum&lt;/td&gt;
&lt;td&gt;to go across, cross; pass over, ignore&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;431&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ultimus, -a, -um&lt;/td&gt;
&lt;td&gt;farthest, extreme; last, final&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;432&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gratus, grata, gratum&lt;/td&gt;
&lt;td&gt;grateful; pleasing, agreeable&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;434&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;laudo, laudāre, laudavi, laudatum&lt;/td&gt;
&lt;td&gt;to praise&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;435&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;somnus, somni (m)&lt;/td&gt;
&lt;td&gt;sleep&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;438&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cupio, cupere, cupivi, cupitum&lt;/td&gt;
&lt;td&gt;to desire, wish, long for&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;441&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exspecto, expsectāre, exspectavi, exspectatum&lt;/td&gt;
&lt;td&gt;to look for, expect, await&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Vision&lt;/td&gt;
&lt;td&gt;442&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;laus, laudis (f)&lt;/td&gt;
&lt;td&gt;praise&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;444&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studium, studii (n)&lt;/td&gt;
&lt;td&gt;zeal, eagerness, pursuit, study&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;450&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;facilis, facile&lt;/td&gt;
&lt;td&gt;easy, agreeable&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;451&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sapiens (gen: sapientis)&lt;/td&gt;
&lt;td&gt;wise, judicious&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;453&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nolo, nolle, nolui&lt;/td&gt;
&lt;td&gt;to not . . . wish, be unwilling&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;458&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;plenus, plena, plenum&lt;/td&gt;
&lt;td&gt;full, abundant, generous&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;459&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adversus, adversa, adversum&lt;/td&gt;
&lt;td&gt;opposite, adverse&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Adverb&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;460&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;carus, cara, carum&lt;/td&gt;
&lt;td&gt;dear&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;462&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;disco, discere, didici&lt;/td&gt;
&lt;td&gt;to learn&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;465&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;arbor, arboris (f)&lt;/td&gt;
&lt;td&gt;tree&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;468&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eo, ire, ii, itum&lt;/td&gt;
&lt;td&gt;to go (also: abeo, adeo, exeo, ineo, obeo, pereo, redeo)&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Adverb&lt;/td&gt;
&lt;td&gt;Place&lt;/td&gt;
&lt;td&gt;470&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;civis, civis (m/f)*&lt;/td&gt;
&lt;td&gt;citizen&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;471&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;specto, spectāre, spectavi, spectatum&lt;/td&gt;
&lt;td&gt;to look at, watch, see&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Vision&lt;/td&gt;
&lt;td&gt;473&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;donum, doni (n)&lt;/td&gt;
&lt;td&gt;gift, present&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;476&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amitto, amittere, amisi, amissum&lt;/td&gt;
&lt;td&gt;to lose, let go&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;486&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;anima, animae (f)&lt;/td&gt;
&lt;td&gt;soul, spirit&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;493&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libertas, libertatis (f)&lt;/td&gt;
&lt;td&gt;freedom, liberty&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;495&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;servus, servi (m) or serva, servae (f)&lt;/td&gt;
&lt;td&gt;slave&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;496&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;soror, sororis (f)&lt;/td&gt;
&lt;td&gt;sister&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;497&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exigo, exigere, exegi, exactum (ex + ago)&lt;/td&gt;
&lt;td&gt;to drive out, force out, exact; drive through, complete, perfect&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;femina, feminae (f)&lt;/td&gt;
&lt;td&gt;woman&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;501&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;miror, mirāri, miratus sum&lt;/td&gt;
&lt;td&gt;to marvel at, admire, wonder&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;504&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sedeo, sedēre, sedi, sessum&lt;/td&gt;
&lt;td&gt;to sit&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;The House&lt;/td&gt;
&lt;td&gt;506&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;noceo, nocēre, nocui, nocitum (+dat)&lt;/td&gt;
&lt;td&gt;to do harm to, harm, injure&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;509&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;intellego, intellegere, intellexi, intellectum&lt;/td&gt;
&lt;td&gt;to understand&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iungo, iungere, iunxi, iunctum&lt;/td&gt;
&lt;td&gt;to join&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;513&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cogito, cogitāre, cogitavi, cogitatum&lt;/td&gt;
&lt;td&gt;to think, ponder, consider, plan&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;515&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;limen, liminis (n)&lt;/td&gt;
&lt;td&gt;threshold&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The House&lt;/td&gt;
&lt;td&gt;516&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dubito, dubitāre, dubitavi, dubitatum&lt;/td&gt;
&lt;td&gt;to doubt, hesitate&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;521&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;odium, odii (n)&lt;/td&gt;
&lt;td&gt;hatred&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;522&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nescio, nescire, nescivi, nescitum&lt;/td&gt;
&lt;td&gt;not to know, to be ignorant&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;525&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pecunia, pecuniae (f)&lt;/td&gt;
&lt;td&gt;money&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;530&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tango, tangere, tetigi, tactum&lt;/td&gt;
&lt;td&gt;to touch&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;534&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;respondeo, respondēre, respondi, responsum&lt;/td&gt;
&lt;td&gt;to answer&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;535&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;timor, timoris (m)&lt;/td&gt;
&lt;td&gt;fear&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;536&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;valeo, valēre, valui, valiturum&lt;/td&gt;
&lt;td&gt;to be strong, have power; be well&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;539&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;condo, condere, condidi, conditum&lt;/td&gt;
&lt;td&gt;to put together/into, store; found, establish&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;540&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;auxilium, auxilii (n)&lt;/td&gt;
&lt;td&gt;help, aid&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;543&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;auctor, auctoris (m)&lt;/td&gt;
&lt;td&gt;increaser, author, originator&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;546&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animal, animalis (n)*&lt;/td&gt;
&lt;td&gt;animal, living creature&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;547&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;salus, salutis (f)&lt;/td&gt;
&lt;td&gt;health, safety; greeting&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;549&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pateo, patēre, patui&lt;/td&gt;
&lt;td&gt;to be open, lie open; be accessible; be evident&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;550&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rogo, rogāre, rogavi, rogatum&lt;/td&gt;
&lt;td&gt;to ask&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;551&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uxor, uxoris (f)&lt;/td&gt;
&lt;td&gt;wife&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;552&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rego, regere, rexi, rectum&lt;/td&gt;
&lt;td&gt;to rule, guide, direct&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;554&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;senex (gen: senis)&lt;/td&gt;
&lt;td&gt;old, aged&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;558&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;curro, currere, cucurri, cursum&lt;/td&gt;
&lt;td&gt;to run, rush, move quickly&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Athletics&lt;/td&gt;
&lt;td&gt;562&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pello, pellere, pepuli, pulsum&lt;/td&gt;
&lt;td&gt;to strike, push; drive out, banish&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;563&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;potens (gen: potentis)&lt;/td&gt;
&lt;td&gt;powerful&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;567&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scribo, scribere, scripsi, scriptum&lt;/td&gt;
&lt;td&gt;to write, compose&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;568&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pulcher, pulchra, pulchrum&lt;/td&gt;
&lt;td&gt;beautiful&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Vision&lt;/td&gt;
&lt;td&gt;569&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;surgo, surgere, surrexi, surrectum&lt;/td&gt;
&lt;td&gt;to get up, arise&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;570&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;careo, carēre, carui, cariturum (+abl)&lt;/td&gt;
&lt;td&gt;to be without, to be deprived of, want, lack; be free from&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;572&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;praebeo, praebēre, praebui, praebitum&lt;/td&gt;
&lt;td&gt;to offer, provide&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;584&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sententia, sententiae (f)&lt;/td&gt;
&lt;td&gt;feeling, though, opinion, vote, sentence&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;586&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;acer, acris, acre&lt;/td&gt;
&lt;td&gt;sharp, keep, eager; severe, fierce&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Other Senses&lt;/td&gt;
&lt;td&gt;587&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;brevis, breve&lt;/td&gt;
&lt;td&gt;short, small, brief&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;589&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cornu, cornus (n)&lt;/td&gt;
&lt;td&gt;horn&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;591&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;moenia, moenium (n)&lt;/td&gt;
&lt;td&gt;city walls&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;593&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vinculum, vinculi (n)&lt;/td&gt;
&lt;td&gt;chain, bond, fetter&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;594&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;malo, malle, malui&lt;/td&gt;
&lt;td&gt;to want (something) more, instead; prefer&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;598&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;impero, imperāre, imperavi, imperatum (+dat)&lt;/td&gt;
&lt;td&gt;to give orders to, command&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;602&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;prohibeo, prohibēre, prohibui, prohibitum&lt;/td&gt;
&lt;td&gt;to keep (back), prevent, hinder, restrain&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;604&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;officium, officii (n)&lt;/td&gt;
&lt;td&gt;duty, service&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;607&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;committo, committere, comisi, comissum&lt;/td&gt;
&lt;td&gt;to entrust, commit&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;608&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cresco, crescere, crevi, cretum&lt;/td&gt;
&lt;td&gt;to increase&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;609&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aequus, aequa, aequum&lt;/td&gt;
&lt;td&gt;level, even; calm, equal, just; favorable&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;610&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;factum, facti (n)&lt;/td&gt;
&lt;td&gt;deed, act, achievement&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;611&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accedo, accedere, accessi, accessum&lt;/td&gt;
&lt;td&gt;to come (to), approach&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;614&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;contemno, contemnere, contempsi, contemptum&lt;/td&gt;
&lt;td&gt;to despise, scorn&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;615&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;antiquus, antiqua, antiquum&lt;/td&gt;
&lt;td&gt;ancient, old&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;617&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;memoria, memoriae (f)&lt;/td&gt;
&lt;td&gt;memory, recollection&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;627&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;arx, arcis (f)*&lt;/td&gt;
&lt;td&gt;citadel, stronghold&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;638&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vinum, vini (n)&lt;/td&gt;
&lt;td&gt;wine&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;640&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;confero, conferre, contuli, collatum&lt;/td&gt;
&lt;td&gt;to bring together, compare; confer, bestow&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;645&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;spero, sperāre, speravi, speratum&lt;/td&gt;
&lt;td&gt;to hope for, hope&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;648&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;plebs, plebis (f)&lt;/td&gt;
&lt;td&gt;the common people, populace, plebeians&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;649&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;defendo, defendere, defendi, defensum&lt;/td&gt;
&lt;td&gt;to ward off; defend, protect&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;653&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cerno, cernere, crevi, cretum&lt;/td&gt;
&lt;td&gt;to distinguish, discern, perceive&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;655&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;superbus, superba, superbum&lt;/td&gt;
&lt;td&gt;arrogant, overbearing, haughty, proud&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;656&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adversus, adversa, adversum&lt;/td&gt;
&lt;td&gt;opposite, adverse&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;657&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;morbus, morbi (m)&lt;/td&gt;
&lt;td&gt;disease, sickness&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;658&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;communis, commune&lt;/td&gt;
&lt;td&gt;common, general, of/for the community&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;660&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hora, horae (f)&lt;/td&gt;
&lt;td&gt;hour, time&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;664&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;supero, superāre, superavi, superatum&lt;/td&gt;
&lt;td&gt;to be above, have the upper hand, surpass; overcome, conquer&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;668&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vulgus, vulgi (n)&lt;/td&gt;
&lt;td&gt;the common people, mob, rabble&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;675&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;praemium, praemii (n)&lt;/td&gt;
&lt;td&gt;reward, prize&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;680&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fateor, fatēri, fassus sum&lt;/td&gt;
&lt;td&gt;to confess, admit&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;689&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amicitia, amicitiae (f)&lt;/td&gt;
&lt;td&gt;friendship&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;690&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;os, oris (n)&lt;/td&gt;
&lt;td&gt;mouth, face&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;696&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;interficio, interficere, interfeci, interfectum&lt;/td&gt;
&lt;td&gt;to kill, murder&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;699&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;appello, appellāre, appellavi, appellatum&lt;/td&gt;
&lt;td&gt;to speak to, address (as), call, name&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;700&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;spiritus, spiritus (m)&lt;/td&gt;
&lt;td&gt;breath, breathing; spirit, soul&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;703&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;terreo, terrēre, terrui, territum&lt;/td&gt;
&lt;td&gt;to frighten, terrify&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;705&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;invidia, invidiae (f)&lt;/td&gt;
&lt;td&gt;jealousy&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;707&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pugno, pugnāre, pugnavi, pugnatum&lt;/td&gt;
&lt;td&gt;to fight&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;708&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;littera, litterae (f)&lt;/td&gt;
&lt;td&gt;a letter of the alphabet; (plural = letter, literature)&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;710&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;moneo, monēre, monui, monitum&lt;/td&gt;
&lt;td&gt;to warn, remind, advise&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;711&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;divitiae, divitiarum (f)&lt;/td&gt;
&lt;td&gt;riches, wealth&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;712&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;experior, experiri, expertus sum&lt;/td&gt;
&lt;td&gt;to try, test; experience&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;713&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;otium, otii (n)&lt;/td&gt;
&lt;td&gt;leisure, peace&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;715&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;promitto, promittere, promisi, promissum&lt;/td&gt;
&lt;td&gt;to send forth; promise&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;720&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;imperator, imperatoris (m)&lt;/td&gt;
&lt;td&gt;general, commander-in-chief, emperor&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;723&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;discedo, discedere, discessi, discessum&lt;/td&gt;
&lt;td&gt;to go away, depart&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;726&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;caecus, -a, -um&lt;/td&gt;
&lt;td&gt;blind&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Vision&lt;/td&gt;
&lt;td&gt;728&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lingua, linguae (f)&lt;/td&gt;
&lt;td&gt;language; tongue&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;The Body&lt;/td&gt;
&lt;td&gt;732&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;for, fāri, fatus sum&lt;/td&gt;
&lt;td&gt;to speak (prophetically), talk, foretell&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;739&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;humus, humi (f)&lt;/td&gt;
&lt;td&gt;ground, earth; soil&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;740&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;curo, curāre, curavi, curatum&lt;/td&gt;
&lt;td&gt;to care for, attend to; heal, cure&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;743&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aes, aeris (n)&lt;/td&gt;
&lt;td&gt;bronze&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;744&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;celer, celeris, celere&lt;/td&gt;
&lt;td&gt;quick, swift, rapid&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;745&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mensa, mensae (f)&lt;/td&gt;
&lt;td&gt;table&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;The House&lt;/td&gt;
&lt;td&gt;747&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iudicium, iudicii (n)&lt;/td&gt;
&lt;td&gt;judgement, decision, opinion; trial&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;749&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;victoria, victoriae (f)&lt;/td&gt;
&lt;td&gt;victory&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;War and Peace&lt;/td&gt;
&lt;td&gt;750&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tempestas, tempestatis (f)&lt;/td&gt;
&lt;td&gt;period of time, season; weather; storm&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;753&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oro, orāre, oravi, oratum&lt;/td&gt;
&lt;td&gt;to speak, plead; beg, beseech, entreat, pray&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;755&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;porta, portae (f)&lt;/td&gt;
&lt;td&gt;gate, entrance&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;759&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;reperio, reperire, repperi, repertum&lt;/td&gt;
&lt;td&gt;to find, discover, learn; get&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;765&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;culpa, culpae (f)&lt;/td&gt;
&lt;td&gt;blame, fault&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;769&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iustus, iusta, iustum&lt;/td&gt;
&lt;td&gt;just, right&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;770&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fluo, fluere, fluxi, fluxum&lt;/td&gt;
&lt;td&gt;to flow&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Earth and Water&lt;/td&gt;
&lt;td&gt;772&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;licet, licere, licuit (impersonal)&lt;/td&gt;
&lt;td&gt;it is permitted, one may&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Conjunction&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;778&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;probo, probāre, probavi, probatum&lt;/td&gt;
&lt;td&gt;to approve, recommend; test&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;784&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doleo, dolēre, dolui, doliturum&lt;/td&gt;
&lt;td&gt;to grieve, suffer, hurt, give pain&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;785&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;odi, odisse, osum&lt;/td&gt;
&lt;td&gt;to hate&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;790&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sensus, sensus (m)&lt;/td&gt;
&lt;td&gt;feeling, sense&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;793&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exsilium, exsilii (n)&lt;/td&gt;
&lt;td&gt;exile, banishment&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;794&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sapientia, sapientiae (f)&lt;/td&gt;
&lt;td&gt;wisdom&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;797&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;decerno, decernere,decrevi, decretum&lt;/td&gt;
&lt;td&gt;to decide, settle, decree&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;occido, occidere, occidi, occasum&lt;/td&gt;
&lt;td&gt;to fall down; die; set&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Violence&lt;/td&gt;
&lt;td&gt;801&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;contineo, continēre, continui, contentum&lt;/td&gt;
&lt;td&gt;to hold together, contain, keep, enclose&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;804&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oportet, oportere, oportuit (impersonal)&lt;/td&gt;
&lt;td&gt;it is proper, right, necessary&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Verb: Impersonal&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;806&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;forum, fori (n)&lt;/td&gt;
&lt;td&gt;forum, marketplace&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;The City&lt;/td&gt;
&lt;td&gt;811&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;offero, offere, obtuli, oblatum&lt;/td&gt;
&lt;td&gt;to offer&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: Irregular&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;812&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;alo, alere, alui, altum&lt;/td&gt;
&lt;td&gt;to nourish, support, sustain, increase; cherish&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;817&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;proficiscor, proficisci, profectus sum&lt;/td&gt;
&lt;td&gt;to set out, start&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;835&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;secundus, secunda, secundum&lt;/td&gt;
&lt;td&gt;second; favorable&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;836&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iudex, iudicis (m)&lt;/td&gt;
&lt;td&gt;judge, juror&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Justice&lt;/td&gt;
&lt;td&gt;839&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nimis or nimium&lt;/td&gt;
&lt;td&gt;too, too much, excessively&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Adverb&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;841&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pauper (gen: pauperis)&lt;/td&gt;
&lt;td&gt;of small means, poor&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;844&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pareo, parēre, parui (+dat)&lt;/td&gt;
&lt;td&gt;to be obedient to, obey&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;847&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;utilis, utile&lt;/td&gt;
&lt;td&gt;useful, advantageous&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;850&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pauci, paucae, pauca&lt;/td&gt;
&lt;td&gt;few, a few&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;858&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;difficilis, difficile&lt;/td&gt;
&lt;td&gt;difficult, hard, troublesome&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;861&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;initium, initii (n)&lt;/td&gt;
&lt;td&gt;beginning, commencement&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;865&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;consumo, consumere, consumpsi, consumptum&lt;/td&gt;
&lt;td&gt;to consume, use up&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;869&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rideo, ridēre, risi, risum&lt;/td&gt;
&lt;td&gt;to laugh, laugh at&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;874&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rus, ruris (n)&lt;/td&gt;
&lt;td&gt;the country, countryside&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;879&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vito, vitāre, vitavi, vitatum&lt;/td&gt;
&lt;td&gt;shun, avoid&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Social Life&lt;/td&gt;
&lt;td&gt;881&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;servio, servire, servivi, servitum (+dat)&lt;/td&gt;
&lt;td&gt;to be a slave to, serve&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;883&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vereor, verēri, veritus sum&lt;/td&gt;
&lt;td&gt;to show reverence for, respect; be afraid of&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;884&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hortor, hortāri, hortatus sum&lt;/td&gt;
&lt;td&gt;to encourage, urge&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;887&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;perpetuus, perpetua, perpetuum&lt;/td&gt;
&lt;td&gt;perpetual, lasting, uninterrupted, continuous&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Lengths of Time&lt;/td&gt;
&lt;td&gt;891&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;desidero, desiderāre, desideravi, desideratum&lt;/td&gt;
&lt;td&gt;to desire, long for, miss&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;892&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iacio, iacere, ieci, iactum&lt;/td&gt;
&lt;td&gt;to thow; hurl&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Athletics&lt;/td&gt;
&lt;td&gt;899&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;laboro, laborāre, laboravi, laboratum&lt;/td&gt;
&lt;td&gt;to labor; be in distress&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Business/Money&lt;/td&gt;
&lt;td&gt;900&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;liber, libera, liberum&lt;/td&gt;
&lt;td&gt;free&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;901&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;liber, libri (m)&lt;/td&gt;
&lt;td&gt;book&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;901&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;luna, lunae (f)&lt;/td&gt;
&lt;td&gt;moon&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;902&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;conor, conāri, conatus sum&lt;/td&gt;
&lt;td&gt;to try, attempt&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;905&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cupido, cupidinis (f)&lt;/td&gt;
&lt;td&gt;desire, passion&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;906&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;insula, insulae (f)&lt;/td&gt;
&lt;td&gt;island&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;908&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;filia, filiae (f)&lt;/td&gt;
&lt;td&gt;daughter (filiabus: dat. and abl. pl.)&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;909&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;narro, narrāre, narravi, narratum&lt;/td&gt;
&lt;td&gt;to tell, report, narrate&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Speech/Oratory&lt;/td&gt;
&lt;td&gt;910&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;egredior, egredi, egressus sum&lt;/td&gt;
&lt;td&gt;to go out&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;td&gt;912&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;poeta, poetae (m)&lt;/td&gt;
&lt;td&gt;poet&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;913&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fructus, fructus (m)&lt;/td&gt;
&lt;td&gt;fruit; profit, benefit, enjoyment&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Noun: 4th Declension&lt;/td&gt;
&lt;td&gt;Animals/Plants&lt;/td&gt;
&lt;td&gt;927&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;magister, magistri (m) or magistra,&lt;/td&gt;
&lt;td&gt;ae (f)&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;933&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stella, stellae (f)&lt;/td&gt;
&lt;td&gt;star&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Air and Fire&lt;/td&gt;
&lt;td&gt;934&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;educo, educāre, educavi, educatum&lt;/td&gt;
&lt;td&gt;to bring up, educate&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Verbs of Compelling/Directing&lt;/td&gt;
&lt;td&gt;935&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;suscipio, suscipere, suscepi, susceptum&lt;/td&gt;
&lt;td&gt;to undertake&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -iō&lt;/td&gt;
&lt;td&gt;Verbs of Transport&lt;/td&gt;
&lt;td&gt;937&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sacerdos, sacerdotis (m)&lt;/td&gt;
&lt;td&gt;priest&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;939&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vicinus, vicini (m)&lt;/td&gt;
&lt;td&gt;neighbor&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Geography&lt;/td&gt;
&lt;td&gt;940&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;familia, familiae (f)&lt;/td&gt;
&lt;td&gt;household, family&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;The Household&lt;/td&gt;
&lt;td&gt;943&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sanus, sana, sanum&lt;/td&gt;
&lt;td&gt;sound, healthy, sane&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;946&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;principium, principii (n)&lt;/td&gt;
&lt;td&gt;beginning&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Noun: 2nd Declension&lt;/td&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;948&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mortalis, mortale&lt;/td&gt;
&lt;td&gt;mortal&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;950&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dignitas, dignitatis (f)&lt;/td&gt;
&lt;td&gt;merit, prestige, dignity&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;956&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mulier, mulieris (f)&lt;/td&gt;
&lt;td&gt;woman&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Noun: 3rd Declension&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;961&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;arbitror, arbitrāri, arbitratus sum&lt;/td&gt;
&lt;td&gt;to judge, think&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Verb: Deponent&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;963&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fabula, fabulae (f)&lt;/td&gt;
&lt;td&gt;story, tale; play&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Writing/Poetry&lt;/td&gt;
&lt;td&gt;966&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scientia, scientiae (f)&lt;/td&gt;
&lt;td&gt;knowledge&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Noun: 1st Declension&lt;/td&gt;
&lt;td&gt;Education/Knowledge&lt;/td&gt;
&lt;td&gt;971&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;diligo, diligere, dilexi, dilectum&lt;/td&gt;
&lt;td&gt;to esteem, love&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Verb: 3rd Conjugation -ō&lt;/td&gt;
&lt;td&gt;Love&lt;/td&gt;
&lt;td&gt;973&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dormio, dormire, dormivi, dormitum&lt;/td&gt;
&lt;td&gt;to sleep&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Verb: 4th Conjugation&lt;/td&gt;
&lt;td&gt;Life and Being&lt;/td&gt;
&lt;td&gt;975&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;creo, creāre, creavi, creatum&lt;/td&gt;
&lt;td&gt;to create&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Verb: 1st Conjugation&lt;/td&gt;
&lt;td&gt;Making/Doing&lt;/td&gt;
&lt;td&gt;978&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fidelis, fidele&lt;/td&gt;
&lt;td&gt;faithful, loyal&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Adjective: 3rd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;979&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studeo, studēre, studui (+dat)&lt;/td&gt;
&lt;td&gt;to direct one’s zeal to, be eager for, study&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Verb: 2nd Conjugation&lt;/td&gt;
&lt;td&gt;Emotions&lt;/td&gt;
&lt;td&gt;989&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mundus, mundi (m)&lt;/td&gt;
&lt;td&gt;world, universe&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Adjective: 1st and 2nd Declension&lt;/td&gt;
&lt;td&gt;Personality Traits/Characteristics&lt;/td&gt;
&lt;td&gt;997&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;absens (gen: absentis)&lt;/td&gt;
&lt;td&gt;absent&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;acerbus, acerba, acerbum&lt;/td&gt;
&lt;td&gt;harsh, bitter, grievous&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adfero, adferre, attuli, allatum&lt;/td&gt;
&lt;td&gt;to bring to&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;admitto, admittere, admisi, admissum&lt;/td&gt;
&lt;td&gt;to admit, receive, let in&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adulescens, adulescentis (m/f)&lt;/td&gt;
&lt;td&gt;young man or woman&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adulescentia, adulescentiae (f)&lt;/td&gt;
&lt;td&gt;youth, young manhood; youthfulness&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aedificium, aedificii (n)&lt;/td&gt;
&lt;td&gt;building, structure&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aestas, aestatis (f)&lt;/td&gt;
&lt;td&gt;summer&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;agricola, agricolae (m)&lt;/td&gt;
&lt;td&gt;farmer&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ait, aiunt&lt;/td&gt;
&lt;td&gt;he says, they say&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ambulo, ambulāre, ambulavi, ambulatum&lt;/td&gt;
&lt;td&gt;to walk&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amica, amicae (f) and amicus, amici (m)&lt;/td&gt;
&lt;td&gt;friend&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ante (+acc)&lt;/td&gt;
&lt;td&gt;before, in front of&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;antepono, anteponere, anteposui, antepositum&lt;/td&gt;
&lt;td&gt;to put before, prefer&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;argumentum, argumenti (n)&lt;/td&gt;
&lt;td&gt;proof, evidence, argument&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;as, assis (m)&lt;/td&gt;
&lt;td&gt;an as&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Asia, Asiae (f)&lt;/td&gt;
&lt;td&gt;Asia&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;asper, aspera, asperum&lt;/td&gt;
&lt;td&gt;rough, harsh&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;at&lt;/td&gt;
&lt;td&gt;but; but, mind you; but, you say (more emotional than sed)&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Athenae, Athenarum (f)&lt;/td&gt;
&lt;td&gt;Athens&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;auditor, auditoris (m)&lt;/td&gt;
&lt;td&gt;hearer, listener; member of an audience&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aut&lt;/td&gt;
&lt;td&gt;or (aut . . . aut&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;autem&lt;/td&gt;
&lt;td&gt;(post positive) however; moreover&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;avarus, avara, avarum&lt;/td&gt;
&lt;td&gt;greedy, avaricious&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;basium, basii (n)&lt;/td&gt;
&lt;td&gt;kiss&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bellus, bella, bellum&lt;/td&gt;
&lt;td&gt;pretty, handsome, charming&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bene&lt;/td&gt;
&lt;td&gt;well, satisfactorily, quite&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bibo, bibere, bibi&lt;/td&gt;
&lt;td&gt;to drink&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caesar, Caesaris (m)&lt;/td&gt;
&lt;td&gt;(Gaius Julius) Caesar&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;candidatus, -a, -um&lt;/td&gt;
&lt;td&gt;shining, bright, white; beautiful&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;carpo, carpere, carpsi, carptum&lt;/td&gt;
&lt;td&gt;to harvest, pluck; seize&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Carthago, Carthaginis (f)&lt;/td&gt;
&lt;td&gt;Carthage&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;casa, casae (f)&lt;/td&gt;
&lt;td&gt;house, cottage, hut&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cena, cenae (f)&lt;/td&gt;
&lt;td&gt;dinner&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ceno, cenāre, cenavi, cenatum&lt;/td&gt;
&lt;td&gt;to dine&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;centum&lt;/td&gt;
&lt;td&gt;hundred&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ceteri, ceterae, cetera&lt;/td&gt;
&lt;td&gt;the remaining, the rest, the other, all the others&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cicero, Ciceronis (m)&lt;/td&gt;
&lt;td&gt;(Marcus Tullius) Cicero&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cito&lt;/td&gt;
&lt;td&gt;quickly&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clementia, clementiae (f)&lt;/td&gt;
&lt;td&gt;mercy, mildness, gentleness&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;comprehendo, comprehendere, comprehendi, comprehensum&lt;/td&gt;
&lt;td&gt;to grasp, seize, arrest; comprehend, understand&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coniurati, coniuratorum (m)&lt;/td&gt;
&lt;td&gt;conspirators&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;contendo, contendere, contendi, contentum&lt;/td&gt;
&lt;td&gt;to strive, struggle, contend; hasten&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;contra (+acc)&lt;/td&gt;
&lt;td&gt;against&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;contundo, contundere, contudi, contusum&lt;/td&gt;
&lt;td&gt;to beat, crush, bruise, destroy&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cotidie&lt;/td&gt;
&lt;td&gt;daily, every day&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cras&lt;/td&gt;
&lt;td&gt;tomorrow&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;culpo, culpāre, culpavi, culpatum&lt;/td&gt;
&lt;td&gt;to blame, censure&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cum (+abl)&lt;/td&gt;
&lt;td&gt;with&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cum (+subjunctive) when, since, although; (+indicative) when&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cupiditas, cupiditatis (f)&lt;/td&gt;
&lt;td&gt;desire, longing, passion; avarice, cupidity&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cupidus, cupida, cupidum&lt;/td&gt;
&lt;td&gt;desirous, eager, fond; (often +gen.)&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cur&lt;/td&gt;
&lt;td&gt;why&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;custodia, custodiae (f)&lt;/td&gt;
&lt;td&gt;protection, custody (pl: guards)&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;de (+ablative)&lt;/td&gt;
&lt;td&gt;down from, from; concerning, about&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dea, deae (f)&lt;/td&gt;
&lt;td&gt;goddess&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dedico, dedicāre, dedicavi, dedicatum&lt;/td&gt;
&lt;td&gt;to dedicate&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dehinc&lt;/td&gt;
&lt;td&gt;then, next&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deinde&lt;/td&gt;
&lt;td&gt;then, next, thereupon&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;delectatio, delectationis (f)&lt;/td&gt;
&lt;td&gt;delight, pleasure, enjoyment&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;delecto, delectāre, delectavi, delectatum&lt;/td&gt;
&lt;td&gt;to delight, charm, please&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deleo, delēre, delevi, deletum&lt;/td&gt;
&lt;td&gt;to destroy, wipe out, erase&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;demonstro, demonstrāre, demonstravi, demonstratum&lt;/td&gt;
&lt;td&gt;to point out, show&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;denique&lt;/td&gt;
&lt;td&gt;finally, at last, lastly&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;digitus, digiti (m)&lt;/td&gt;
&lt;td&gt;finger, toe&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;diligens&lt;/td&gt;
&lt;td&gt;diligent, careful&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;discipula, discipulae (f) and discipulus, discipuli (m)&lt;/td&gt;
&lt;td&gt;learner, pupil, student&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dissimilis, dissimile&lt;/td&gt;
&lt;td&gt;unlike, different&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;diu&lt;/td&gt;
&lt;td&gt;for a long time&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dives (gen: divitis or ditis)&lt;/td&gt;
&lt;td&gt;rich&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doctus, docta, doctum&lt;/td&gt;
&lt;td&gt;taught, learned, skilled&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dum&lt;/td&gt;
&lt;td&gt;while, as long as&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dummodo (+subjunctive)&lt;/td&gt;
&lt;td&gt;provided that, so long as&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;egeo, egēre, egui&lt;/td&gt;
&lt;td&gt;(+ abl. or gen.) to need, lack, want&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;elephantus, elephanti (m)&lt;/td&gt;
&lt;td&gt;elephant&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;enim&lt;/td&gt;
&lt;td&gt;(post positive) for; in fact, truly&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;erga (+acc)&lt;/td&gt;
&lt;td&gt;toward&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;est&lt;/td&gt;
&lt;td&gt;is&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;et&lt;/td&gt;
&lt;td&gt;and (et . . . et&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;etiam&lt;/td&gt;
&lt;td&gt;even, also&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;etsi&lt;/td&gt;
&lt;td&gt;even if&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ex (+abl)&lt;/td&gt;
&lt;td&gt;out of, from, from within; by reason of, on account of&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exitium, exitii (n)&lt;/td&gt;
&lt;td&gt;destruction, ruin&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;expello, expellere, expuli, expulsum&lt;/td&gt;
&lt;td&gt;to drive out, expel, banish&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;expleo, explēre, explevi, expletum&lt;/td&gt;
&lt;td&gt;to fill, fill up, complete&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;explico, explicāre, explicavi, explicatum&lt;/td&gt;
&lt;td&gt;to unfold; explain; spread out, deploy&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;expono, exponere, exposui, expositum&lt;/td&gt;
&lt;td&gt;to set forth, explain, expose&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fatigo, fatigāre, fatigavi, fatigatum&lt;/td&gt;
&lt;td&gt;to weary, tire out&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fenestra, fenestrae (f)&lt;/td&gt;
&lt;td&gt;window&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ferox&lt;/td&gt;
&lt;td&gt;fierce, savage&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;filius, filii (m)&lt;/td&gt;
&lt;td&gt;son&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;firmus, firma, firmum&lt;/td&gt;
&lt;td&gt;firm, strong; reliable&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;foris&lt;/td&gt;
&lt;td&gt;out of doors, outside&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fortasse&lt;/td&gt;
&lt;td&gt;perhaps&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fortunatus, fortunata, fortunatum&lt;/td&gt;
&lt;td&gt;forunate, lucky, happy&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;foveo, fovēre, fovi, fotum&lt;/td&gt;
&lt;td&gt;to comfort, nurture, cherish&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;furtim&lt;/td&gt;
&lt;td&gt;stealthily, secretly&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;geminus, -a, -um&lt;/td&gt;
&lt;td&gt;twin&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;genu, genus (n)&lt;/td&gt;
&lt;td&gt;knee&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gracilis, gracile&lt;/td&gt;
&lt;td&gt;slender, thin&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graecia, Graeciae (f)&lt;/td&gt;
&lt;td&gt;Greece&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graecus, Graeca, Graecum&lt;/td&gt;
&lt;td&gt;Greek&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hasta, hastae (f)&lt;/td&gt;
&lt;td&gt;spear&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;heri&lt;/td&gt;
&lt;td&gt;yesterday&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;heu&lt;/td&gt;
&lt;td&gt;ah! alas!&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hīc&lt;/td&gt;
&lt;td&gt;here&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hodie&lt;/td&gt;
&lt;td&gt;today&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;humilis, humile&lt;/td&gt;
&lt;td&gt;humble, lowly&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iam&lt;/td&gt;
&lt;td&gt;now, already, soon&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ianua, ianuae (f)&lt;/td&gt;
&lt;td&gt;door&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ibi&lt;/td&gt;
&lt;td&gt;there&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;idoneus, idonea, idoneum&lt;/td&gt;
&lt;td&gt;suitable, fit, appropriate&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;igitur&lt;/td&gt;
&lt;td&gt;(post positive) therefore, consequently&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ignosco, ignoscere, ignovi, ignotum (+dat)&lt;/td&gt;
&lt;td&gt;to grant pardon to, forgive&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;immortalis, immortale&lt;/td&gt;
&lt;td&gt;not subject to death, immortal&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;immotus, immota, immotum&lt;/td&gt;
&lt;td&gt;unmoved; unchanged; unrelenting&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;in (+ablative)&lt;/td&gt;
&lt;td&gt;in, on&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;in (+acc)&lt;/td&gt;
&lt;td&gt;into, on to, toward; against&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;incertus, incerta, incertum&lt;/td&gt;
&lt;td&gt;uncertain, unsure, doubtful&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;infirmus, infirma, infirmum&lt;/td&gt;
&lt;td&gt;not strong, weak, feeble&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;inquit&lt;/td&gt;
&lt;td&gt;he says, he said&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;insidiae, insidiarum (f)&lt;/td&gt;
&lt;td&gt;ambush, plot, treachery&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;inter (+acc)&lt;/td&gt;
&lt;td&gt;between, among&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;invideo, invidēre, invidi, invisum&lt;/td&gt;
&lt;td&gt;to be envious (+dat), to look at with envy, to envy, be jealous of&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;invito, invitāre, invitavi, invitatum&lt;/td&gt;
&lt;td&gt;to entertain, invite; summon&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iratus, irata, iratum&lt;/td&gt;
&lt;td&gt;angry&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ita&lt;/td&gt;
&lt;td&gt;so thus&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Italia, Italiae (f)&lt;/td&gt;
&lt;td&gt;Italy&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;itaque&lt;/td&gt;
&lt;td&gt;and so, therefore&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iterum&lt;/td&gt;
&lt;td&gt;again, a second time&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iucundus, iucunda, iucundum&lt;/td&gt;
&lt;td&gt;pleasant, delightful, agreeable, pleasing&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latinus, Latina, Latinum&lt;/td&gt;
&lt;td&gt;Latin&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lector, lectoris (m) &amp;amp; lectrix lectricis (f)&lt;/td&gt;
&lt;td&gt;reader&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libellus, libelli (m)&lt;/td&gt;
&lt;td&gt;little book&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libenter&lt;/td&gt;
&lt;td&gt;with pleasure, gladly&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;liberalis, liberale&lt;/td&gt;
&lt;td&gt;of, relating to a free person; worthy of a free man, decent, liberal; generous&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libero, liberāre, liberavi, liberatum&lt;/td&gt;
&lt;td&gt;to free, set free, liberate&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libo, libāre, libavi, libatum&lt;/td&gt;
&lt;td&gt;to pour a libation on; pour ritually; sip; touch gently&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ludus, ludi (m)&lt;/td&gt;
&lt;td&gt;game, sport; school&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;magnanimus, magnanima, magnanimum&lt;/td&gt;
&lt;td&gt;great-hearted, brave, magnanimous&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;maior, maius&lt;/td&gt;
&lt;td&gt;greater; older&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;me&lt;/td&gt;
&lt;td&gt;me, myself (accusative case)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;medicus, medici (m)&lt;/td&gt;
&lt;td&gt;doctor, physician&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mediocris, mediocre&lt;/td&gt;
&lt;td&gt;ordinary, moderate, mediocre&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;merus, -a, -um&lt;/td&gt;
&lt;td&gt;pure, undiluted&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;meta, metae (f)&lt;/td&gt;
&lt;td&gt;turning point, goal; limit, boundary&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mille&lt;/td&gt;
&lt;td&gt;thousand&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;minuo, minuere, minui, minutum&lt;/td&gt;
&lt;td&gt;to lessen, diminish&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mirabilis, mirabile&lt;/td&gt;
&lt;td&gt;amazing, wondrous&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;molior, moliri, molitus sum&lt;/td&gt;
&lt;td&gt;to work at, build, undertake, plan&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mollio, mollire, mollivi, mollitum&lt;/td&gt;
&lt;td&gt;to soften; make calm, make less hostile&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;monumentum, monumenti (n)&lt;/td&gt;
&lt;td&gt;monument&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mortuus, mortua, mortuum&lt;/td&gt;
&lt;td&gt;dead&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mox&lt;/td&gt;
&lt;td&gt;soon&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nam&lt;/td&gt;
&lt;td&gt;for&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nasus, nasi (m)&lt;/td&gt;
&lt;td&gt;nose&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nata, natae (f)&lt;/td&gt;
&lt;td&gt;daughter&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nauta, nautae (m)&lt;/td&gt;
&lt;td&gt;sailor&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;navigo, navigāre, navigavi, navigatum&lt;/td&gt;
&lt;td&gt;to sail, navigate&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ne&lt;/td&gt;
&lt;td&gt;(+subjunct) not, in order that . . . not, that . . . not, in order not to&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;necesse&lt;/td&gt;
&lt;td&gt;necessary, inevitable&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;neco, necāre, necavi, necatum&lt;/td&gt;
&lt;td&gt;to kill, murder&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;neglego, neglegere, neglexi, neglectum&lt;/td&gt;
&lt;td&gt;to neglect, disregard&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nepos, nepotis (m)&lt;/td&gt;
&lt;td&gt;grandson, descendant&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;neuter, neutra neutrum&lt;/td&gt;
&lt;td&gt;neither, not either&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nihil&lt;/td&gt;
&lt;td&gt;nothing&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nihil&lt;/td&gt;
&lt;td&gt;nothing&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nimium&lt;/td&gt;
&lt;td&gt;too, too much, excessively&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nisi&lt;/td&gt;
&lt;td&gt;if . . . not, unless&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;non&lt;/td&gt;
&lt;td&gt;not&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nonne&lt;/td&gt;
&lt;td&gt;introduces question anticipating a “yes”&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nubes, nubis (f)*&lt;/td&gt;
&lt;td&gt;cloud&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nubo, nubere, nupsi, nuptum&lt;/td&gt;
&lt;td&gt;to cover, veil; (+dat) to be married to, marry&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;num&lt;/td&gt;
&lt;td&gt;1. introduces question anticipating a “no”. 2. introduces indirect questions and means “whether.”&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;numquam&lt;/td&gt;
&lt;td&gt;never&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nunc&lt;/td&gt;
&lt;td&gt;now&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nuntio, nuntiāre, nuntiavi, nuntiatum&lt;/td&gt;
&lt;td&gt;to announce, report, relate&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nuper&lt;/td&gt;
&lt;td&gt;recently&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oblecto, oblectāre, oblectavi, oblectatum&lt;/td&gt;
&lt;td&gt;to please, amuse, delight; pass time pleasantly&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;occasio, occasionis (f)&lt;/td&gt;
&lt;td&gt;occasion, opportunity&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;olim&lt;/td&gt;
&lt;td&gt;at that time, once, formerly; in the future&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;omnino&lt;/td&gt;
&lt;td&gt;wholly, entirely, altogether&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opinor, opināri, opinatus sum&lt;/td&gt;
&lt;td&gt;to suppose&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opprimo, opprimere, oppressi, oppressum&lt;/td&gt;
&lt;td&gt;to suppress, overwhelm, overpower, check&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oppugno, oppugnāre, oppugnavi, oppugnatum&lt;/td&gt;
&lt;td&gt;to fight against, attack, assault, assail&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;orator, oratoris (m)&lt;/td&gt;
&lt;td&gt;orator; speaker&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;orno, ornāre, ornavi, ornatum&lt;/td&gt;
&lt;td&gt;to equip, furnish, adorn&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;osculum, osculi (n)&lt;/td&gt;
&lt;td&gt;kiss&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;patefacio, patefacere, patefeci, patefactum&lt;/td&gt;
&lt;td&gt;to make open, open; disclose, expose&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;patientia, patientiae (f)&lt;/td&gt;
&lt;td&gt;suffering; patience, endurance&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;paupertas, paupertatis (f)&lt;/td&gt;
&lt;td&gt;poverty&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;per (+acc)&lt;/td&gt;
&lt;td&gt;through&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;peregrinor, peregrinari, peregrinatus sum&lt;/td&gt;
&lt;td&gt;to travel abroad, wander&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;perfugium, perfugii (n)&lt;/td&gt;
&lt;td&gt;refuge, solace, shelter&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pernocto, pernoctāre, pernoctavi, pernoctatum&lt;/td&gt;
&lt;td&gt;to spend the night&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;persuadeo, persuadēre, persuasi, persuasum (+dat)&lt;/td&gt;
&lt;td&gt;to succeed in urging, persuade, convince&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;philosophia, philosophiae (f)&lt;/td&gt;
&lt;td&gt;philosophy&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;philosophus, philosophi (m)&lt;/td&gt;
&lt;td&gt;philosopher&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;post (+acc)&lt;/td&gt;
&lt;td&gt;after, behind&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;postea&lt;/td&gt;
&lt;td&gt;afterwards&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;postremum&lt;/td&gt;
&lt;td&gt;after all, finally; for the last time&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;prae (+abl)&lt;/td&gt;
&lt;td&gt;in front of, before&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;praeter (+acc)&lt;/td&gt;
&lt;td&gt;besides, except; beyond, past&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;primo&lt;/td&gt;
&lt;td&gt;at first, at the beginning&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pristinus, pristina, pristinum&lt;/td&gt;
&lt;td&gt;ancient; former, previous&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pro (+abl)&lt;/td&gt;
&lt;td&gt;in front of, before, on behalf of, for the sake of, in return for, instead of, for, as&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;probitas, probitatis (f)&lt;/td&gt;
&lt;td&gt;uprightness, honesty&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pronuntio, pronuntiāre, pronuntiavi, pronuntiatum&lt;/td&gt;
&lt;td&gt;to proclaim, announce, declaim; pronounce&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;propter (+accusative)&lt;/td&gt;
&lt;td&gt;on account of, because of&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;protinus&lt;/td&gt;
&lt;td&gt;immediately&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pudicus, pudica, pudicum&lt;/td&gt;
&lt;td&gt;modest, chaste&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quam&lt;/td&gt;
&lt;td&gt;how&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quam&lt;/td&gt;
&lt;td&gt;than&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quando&lt;/td&gt;
&lt;td&gt;when&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quare&lt;/td&gt;
&lt;td&gt;because of which thing, therefore, wherefore, why&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quasi&lt;/td&gt;
&lt;td&gt;as if, as it were&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;que&lt;/td&gt;
&lt;td&gt;and (suffix added to the end a word, joining it to the previous)&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;qui? quae? quod?&lt;/td&gt;
&lt;td&gt;(interrogative adj)&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quid&lt;/td&gt;
&lt;td&gt;what&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quidem&lt;/td&gt;
&lt;td&gt;indeed, certainly, at least, even&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quin&lt;/td&gt;
&lt;td&gt;indeed, in fact&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quis? quid?&lt;/td&gt;
&lt;td&gt;(interrogative pronoun) who? whose? whom? what? which?&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quod&lt;/td&gt;
&lt;td&gt;because&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quondam&lt;/td&gt;
&lt;td&gt;formerly, once&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quoniam&lt;/td&gt;
&lt;td&gt;since, inasmuch as&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quoque&lt;/td&gt;
&lt;td&gt;also, too&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quot&lt;/td&gt;
&lt;td&gt;how many, as many as&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;recito, recitāre, recitavi, recitatum&lt;/td&gt;
&lt;td&gt;to read aloud, recite&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;recreo, recreāre, recreavi, recreatum&lt;/td&gt;
&lt;td&gt;to restore, revive; refresh, cheer&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;recuso, recusāre, recusavi, recusatum&lt;/td&gt;
&lt;td&gt;to refuse&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;regina, reginae (f)&lt;/td&gt;
&lt;td&gt;queen&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;remaneo, remanēre, remansi, remansum (or maneo)&lt;/td&gt;
&lt;td&gt;to remain, stay; stay behind, abide, continue&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;remedium, remedii (n)&lt;/td&gt;
&lt;td&gt;cure, remedy&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;remissio, remissionis (f)&lt;/td&gt;
&lt;td&gt;letting go, release; relaxation&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;repente&lt;/td&gt;
&lt;td&gt;suddenly&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;requiesco, requiescere, requievi, requietum&lt;/td&gt;
&lt;td&gt;to rest&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;requiro, requirere, requisivi, requisitum&lt;/td&gt;
&lt;td&gt;to seek, ask for; miss, need, require&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;res publica, rei publicae (f) state, commonwealth, republic&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ridiculus, ridicula, ridiculum&lt;/td&gt;
&lt;td&gt;laughable, ridiculous&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roma, Romae (f)&lt;/td&gt;
&lt;td&gt;Rome&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Romanus, Romana, Romanum&lt;/td&gt;
&lt;td&gt;Roman&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rosa, rosae (f)&lt;/td&gt;
&lt;td&gt;rose&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rumor, rumoris (m)&lt;/td&gt;
&lt;td&gt;rumor, gossip&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rusticor, rusticāri, rusticatus sum&lt;/td&gt;
&lt;td&gt;to live in the country&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;saepe&lt;/td&gt;
&lt;td&gt;often&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sal, salis (m)&lt;/td&gt;
&lt;td&gt;salt; wit&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;salveo, salvēre&lt;/td&gt;
&lt;td&gt;to be well, be in good health&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;salvus, salva, salvum&lt;/td&gt;
&lt;td&gt;safe, sound&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sapio, sapere, sapivi&lt;/td&gt;
&lt;td&gt;to have good taste; have good sense, be wise&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;satio, satiāre, satiavi, satiatum&lt;/td&gt;
&lt;td&gt;to satisfy, sate&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;satis&lt;/td&gt;
&lt;td&gt;enough, sufficient&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sator, satoris (m)&lt;/td&gt;
&lt;td&gt;sower, planter; begetter, father; founder&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;satura, saturae (f)&lt;/td&gt;
&lt;td&gt;satire&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sauvis, suave&lt;/td&gt;
&lt;td&gt;sweet&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scriptor, scriptoris (m)&lt;/td&gt;
&lt;td&gt;writer, author&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sed&lt;/td&gt;
&lt;td&gt;but&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;semel&lt;/td&gt;
&lt;td&gt;a single time, once, once and for all, simultaneously&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;semper&lt;/td&gt;
&lt;td&gt;always&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;senectus, senectutis (f)&lt;/td&gt;
&lt;td&gt;old age&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sereno, serenāre, serenavi, serenatum&lt;/td&gt;
&lt;td&gt;to make clear, brighten; cheer up, soothe&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;servitus, servitutis (f)&lt;/td&gt;
&lt;td&gt;slavery, servitude&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;si&lt;/td&gt;
&lt;td&gt;if&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sic&lt;/td&gt;
&lt;td&gt;so thus&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sine (+ablative)&lt;/td&gt;
&lt;td&gt;without&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sinister, sinistra, sinistrum&lt;/td&gt;
&lt;td&gt;left, left&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;solacium, solacii (n)&lt;/td&gt;
&lt;td&gt;comfort, relief&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;speculum, speculi (n)&lt;/td&gt;
&lt;td&gt;mirror&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stultus, stulta, stultum&lt;/td&gt;
&lt;td&gt;foolish&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;subito&lt;/td&gt;
&lt;td&gt;suddenly&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sublimis, sublime&lt;/td&gt;
&lt;td&gt;elevated, lofty; heroic, noble&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;subrideo, subridēre, subrisi, subrisum&lt;/td&gt;
&lt;td&gt;to smile (down) upon&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sui&lt;/td&gt;
&lt;td&gt;(reflexive pronoun) him/her/itself, themselves&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Syracusae, Syracusarum (f)&lt;/td&gt;
&lt;td&gt;Syracuse&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tam&lt;/td&gt;
&lt;td&gt;so, to such a degree (tam . . quam&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tamen&lt;/td&gt;
&lt;td&gt;nevertheless, still&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tantum&lt;/td&gt;
&lt;td&gt;only&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;te&lt;/td&gt;
&lt;td&gt;you (accusative)&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tolero, tolerāre, toleravi, toleratum&lt;/td&gt;
&lt;td&gt;to bear, endure&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tot&lt;/td&gt;
&lt;td&gt;so many&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;trans (+acc)&lt;/td&gt;
&lt;td&gt;across&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transitus, transitus (m)&lt;/td&gt;
&lt;td&gt;passing over, transit; transition&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Troia, Troiae (f)&lt;/td&gt;
&lt;td&gt;Troy&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tum&lt;/td&gt;
&lt;td&gt;then, at that time; thereupon, in the next place&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tyrannus, tyranni (m)&lt;/td&gt;
&lt;td&gt;absolute ruler, tyrant&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ubi&lt;/td&gt;
&lt;td&gt;where, when&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ultra (+acc)&lt;/td&gt;
&lt;td&gt;beyond, on the other side of&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;umquam&lt;/td&gt;
&lt;td&gt;ever, at any time&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;unde&lt;/td&gt;
&lt;td&gt;whence, from what/which place, from which, from whom&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;urbanus, urbana, urbanum&lt;/td&gt;
&lt;td&gt;of the city, urban; urbane, elegant&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;usque&lt;/td&gt;
&lt;td&gt;all the way up (to), even (to), continuously, always&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ut&lt;/td&gt;
&lt;td&gt;(+indic) as, just as, when&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ut&lt;/td&gt;
&lt;td&gt;(+indic) as, when; (+subjunct) in order that, so that, that, in order to, so as to, to&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uter, utra, utrum&lt;/td&gt;
&lt;td&gt;either, which (of two)&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;utrum . . . an&lt;/td&gt;
&lt;td&gt;whether . . . or&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vae (often +dat)&lt;/td&gt;
&lt;td&gt;alas, woe to&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;veritas, veritatis (f)&lt;/td&gt;
&lt;td&gt;truth&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vero&lt;/td&gt;
&lt;td&gt;in truth, indeed, to be sure, however&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;versus, versus (m)&lt;/td&gt;
&lt;td&gt;line of verse, verse&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vesper, vesperis/vesperi (m)&lt;/td&gt;
&lt;td&gt;evening; evening star&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;videor, vidēri, visus sum&lt;/td&gt;
&lt;td&gt;to be seen; seem, appear&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vivus, viva, vivum&lt;/td&gt;
&lt;td&gt;living, alive&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/@artturijalli?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Artturi Jalli&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/python?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>Updating Composer</title>
    <link href="https://sjhuskey.info/posts/update-composer/" />
    <updated>2021-06-25T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/update-composer/</id>
    <content type="html">&lt;p&gt;I decided to upgrade my &lt;a href=&quot;https://getcomposer.org/&quot;&gt;Composer&lt;/a&gt; because I was tired of seeing the following notice every time I used it:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Since I was upgrading Composer for use with a Drupal site, I used the directions at &lt;a href=&quot;https://www.drupal.org/docs/develop/using-composer/preparing-your-site-for-composer-2&quot;&gt;https://www.drupal.org/docs/develop/using-composer/preparing-your-site-for-composer-2&lt;/a&gt; to guide me along the way. Here is what I encountered.&lt;/p&gt;
&lt;p&gt;The instructions warned me that I would receive errors if my current composer version was too old. However, the suggestions there did not resolve this error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[Composer&#92;Downloader&#92;FilesystemException] Filesystem exception: Composer update failed: &amp;quot;/usr/local/bin/composer&amp;quot; could not be written. rename(/home/sjhuskey/.cache/composer/composer-temp.phar,/usr/local/bin/composer): Permission denied&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I remembered encountering this before, however. Following the suggestion of &lt;a href=&quot;https://stackoverflow.com/a/48359743/2943704&quot;&gt;Boss COTIGA&lt;/a&gt; resolved the issue. Here&#39;s what I did:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; /usr/local/bin/composer&lt;br /&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; ~/.cache/composer&lt;br /&gt;&lt;span class=&quot;token function&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;755&lt;/span&gt; composer-temp.phar&lt;br /&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;mv&lt;/span&gt; composer-temp.phar /usr/local/bin/composer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also ran into this error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[UnexpectedValueException] Your github oauth token for github.com contains invalid characters:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I&#39;ve seen that before, too. My github oauth token is fine, but Composer has a bug that makes it think otherwise. Fortunately, &lt;a href=&quot;https://stackoverflow.com/a/67005141/2943704&quot;&gt;rafaelbitten&lt;/a&gt; has a solution. His first step, however, is a doozy: &amp;quot;Find the &lt;code&gt;composer/auth.json&lt;/code&gt; file.&amp;quot; For me, that&#39;s in &lt;code&gt;~/.config/composer&lt;/code&gt;, not in &lt;code&gt;~/.composer&lt;/code&gt;, as it might be for some. After I found my &lt;code&gt;auth.json&lt;/code&gt; file, I copied the oauth part (actually, it was the only thing in the file), pasted it somewhere for the moment, and replaced it with &lt;code&gt;{}&lt;/code&gt; so that Composer wouldn&#39;t throw another error: &lt;code&gt;Expected one of: &#39;STRING&#39;, &#39;NUMBER&#39;, &#39;NULL&#39;, &#39;TRUE&#39;, &#39;FALSE&#39;, &#39;{&#39;, &#39;[&#39;&lt;/code&gt;. Of course, after I did that, I ran into the &lt;code&gt;Filesystem exception&lt;/code&gt; error from above when I did &lt;code&gt;composer selfupdate&lt;/code&gt;, so I repeated the Boss COTIGA&#39;s process.&lt;/p&gt;
&lt;p&gt;After that, &lt;code&gt;composer selfupdate&lt;/code&gt; showed that I was using the most current stable version.&lt;/p&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/@marius?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Marius Masalar&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/music?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>Verify a Downloaded File</title>
    <link href="https://sjhuskey.info/posts/verify-downloaded-file/" />
    <updated>2021-06-22T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/verify-downloaded-file/</id>
    <content type="html">&lt;p&gt;Sometimes it&#39;s necessary to download a file to install, update, or upgrade something on your computer. Whenever you download anything from the internet, you should take steps to verify that it is what you expected—and nothing more.&lt;/p&gt;
&lt;p&gt;Many software providers give you a way to verify that the file you&#39;re downloading has not been altered. They do this by &amp;quot;signing&amp;quot; the file with a unique code. If the file has been altered in some way (e.g., with the addition of a virus or other malware), then its signature will change.&lt;/p&gt;
&lt;p&gt;You can verify the signature by comparing it to the signature posted by the provider. Some will include a separate file to download that contains the verification code. Others will simply post the code on the same page as the file you&#39;re downloading.&lt;/p&gt;
&lt;p&gt;But those signatures are really long, so comparing the file&#39;s signature to the one you copied from the site is an error-prone, time-consuming task. It&#39;s a perfect opportunity for automation!&lt;/p&gt;
&lt;p&gt;There are many ways to do this, but the easiest (for me, anyway) is to use the &lt;code&gt;shasum&lt;/code&gt; tool that is typically bundled with Linux distributions.&lt;/p&gt;
&lt;p&gt;Let&#39;s say that you want to &lt;a href=&quot;https://solr.apache.org/downloads.html&quot;&gt;download Solr&lt;/a&gt;. You&#39;ll find there something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;solr-8.11.1.tgz [PGP] [SHA512]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is, a link to the archive of the latest distribution of Solr and some links to the PHP and SHA512 hashes.&lt;/p&gt;
&lt;p&gt;If you download the archive and the SHA512 file (which you might have to right click to get) to the same directory, you can then do the following:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;shasum &lt;span class=&quot;token parameter variable&quot;&gt;-c&lt;/span&gt; solr-8.11.1.tgz.sha512&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sometimes you can&#39;t download the SHA file because the vendor just gives you the hash in an html file. In that case, you can copy the hash and paste it into &lt;code&gt;echo&lt;/code&gt;, then pipe the input to &lt;code&gt;shasum&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;file_hash_here  file_name&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; shashum &lt;span class=&quot;token parameter variable&quot;&gt;--check&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It&#39;s important to insert TWO spaces between the hash and the file name; otherwise, it won&#39;t work.&lt;/p&gt;
&lt;p&gt;You might have to wait a second or two, but then, if everything is as it should be, you&#39;ll get the message:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;solr-8.11.1.tgz: OK&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&#39;t get that message, &lt;em&gt;don&#39;t open the archive file&lt;/em&gt;. Something is wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/@mudmanuk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Paul Carroll&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/penguin?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash.&lt;/a&gt; Penguins, get it?&lt;/span&gt;
</content>
  </entry> 
  <entry>
    <title>The settings.php file for Drupal 9</title>
    <link href="https://sjhuskey.info/posts/settings-php-for-drupal-9/" />
    <updated>2021-06-08T00:00:00Z</updated>
    <id>https://sjhuskey.info/posts/settings-php-for-drupal-9/</id>
    <content type="html">&lt;!-- Excerpt Start --&gt;
&lt;p&gt;Here are some few useful tidbits I&#39;ve learned about the &lt;code&gt;settings.php&lt;/code&gt; file in my adventures with Drupal 8 and 9. All of this assumes that you are working on the command line and that your user is in the sudoers group.&lt;/p&gt;
&lt;!-- Excerpt End --&gt;
&lt;h2&gt;First Steps&lt;/h2&gt;
&lt;p&gt;It&#39;s best to do the following things first:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up the files directory and give it the correct permissions: &lt;code&gt;cd SITE/web/sites/default &amp;amp;&amp;amp; sudo mkdir files &amp;amp;&amp;amp; sudo chown USERNAME:apache files &amp;amp;&amp;amp; sudo chmod a+w files&lt;/code&gt; &lt;strong&gt;Note&lt;/strong&gt;: Change SITE and USERNAME to your site&#39;s name and your system username, respectively.&lt;/li&gt;
&lt;li&gt;Create the settings.php file: &lt;code&gt;cp default.settings.php settings.php &amp;amp;&amp;amp; sudo chown USERNAME:USERNAME settings.php &amp;amp;&amp;amp; sudo chmod ug=rwx,o=rw settings.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run install by going to the site at &lt;a href=&quot;http://142.93.182.93/SITE/web/core/install.php&quot;&gt;http://142.93.182.93/SITE/web/core/install.php&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Secure the permissions on settings.php: &lt;code&gt;sudo chmod u=rw,go=r settings.php &amp;amp;&amp;amp; sudo chmod a=rwx files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make a private files directory: &lt;code&gt;cd&lt;/code&gt; to the root of the installation and do &lt;code&gt;sudo mkdir private &amp;amp;&amp;amp; sudo chown USERNAME:USERNAME private &amp;amp;&amp;amp; sudo chmod a+w private&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Move the &lt;code&gt;config&lt;/code&gt; directory out of &lt;code&gt;web/sites/default/files&lt;/code&gt; and into the root of the site: &lt;code&gt;cd web/sites/default/files&lt;/code&gt; and copy the name of the configuration file. Save that name because you&#39;ll need it a couple more times. &lt;code&gt;sudo cp -r config_HASH ../../../../config_HASH&lt;/code&gt; (where HASH is the string appended to the config directory&#39;s name). After verifying that the config directory has been moved to the root of the site, do &lt;code&gt;sudo rm -rf config_HASH&lt;/code&gt; inside of &lt;code&gt;web/sites/default/files&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;The settings.php file&lt;/h2&gt;
&lt;p&gt;Change to the &lt;code&gt;web/sites/default&lt;/code&gt; directory and open &lt;code&gt;settings.php&lt;/code&gt; using your favorite text editor. I use Nano even though I know it some purists will insist that Vim is the only way to go. To them I say, &amp;quot;Whatever.&amp;quot;&lt;/p&gt;
&lt;h3&gt;Edit the &amp;quot;trusted_host_patterns&amp;quot;&lt;/h3&gt;
&lt;p&gt;Edit the &lt;code&gt;trusted_host_patterns&lt;/code&gt; to include the root or host of your site. Using the find feature of your text editor, search for &#39;trusted_host&#39;, then enter the following in the space after the end of the commented portion:&lt;/p&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;trusted_host_patterns&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;^YOUR_HOST_PATTERN_HERE$&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Observe that the value is a Regular Expression, so &amp;quot;^&amp;quot; and &amp;quot;$&amp;quot; are important for marking the beginning and ending point. You will also have to escape some characters. For example, &lt;code&gt;^myniftysite&#92;.org$&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Tell Drupal where to find the private files directory&lt;/h3&gt;
&lt;p&gt;Search for &amp;quot;file_private_path&amp;quot; and add this after the end of the commented portion:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$settings[&#39;file_private_path&#39;] = $app_root . &#39;/../private&#39;;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That will tell Drupal to look outside of the web root for the private files directory.&lt;/p&gt;
&lt;h3&gt;Tell Drupal where to find the config directory.&lt;/h3&gt;
&lt;p&gt;Search for &amp;quot;config_sync_directory&amp;quot; and add this after the end of the commented portion:&lt;/p&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$settings&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;config_sync_directory&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$app_root&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;/../config_HASH/sync&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that you must replace &amp;quot;HASH&amp;quot; here with the actual hash that is appended after &amp;quot;config_&amp;quot;. Don&#39;t for get to add &amp;quot;/sync&amp;quot;, either!&lt;/p&gt;
&lt;h3&gt;Generate a .htaccess file for the private files directory&lt;/h3&gt;
&lt;p&gt;Navigate in the browser to &lt;code&gt;admin/config/media/file-system&lt;/code&gt; and click &#39;Save configuation&#39; to generate the &lt;code&gt;.htaccess&lt;/code&gt; file.&lt;/p&gt;
&lt;h3&gt;If you are going to do a migration:&lt;/h3&gt;
&lt;p&gt;If you are going to do a migration, add the following at the end of your &lt;code&gt;settings.php&lt;/code&gt; file to connect to the migration database. &lt;strong&gt;NOTE&lt;/strong&gt;: It&#39;s important to name the key &#39;migrate&#39;.&lt;/p&gt;
&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$databases&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;migrate&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;default&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;array&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;database&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;DBNAME&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;username&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;DBUSER&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;password&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;DBPASSWORD&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;prefix&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;host&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;localhost&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;port&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;3306&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;namespace&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;Drupal&#92;&#92;Core&#92;&#92;Database&#92;&#92;Driver&#92;&#92;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;driver&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&#39;mysql&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, DBNAME, DBUSER, AND DBPASSWORD have to be replaced with real values.&lt;/p&gt;
&lt;hr /&gt;
&lt;span style=&quot;font-size:smaller&quot;&gt;Photo by &lt;a href=&quot;https://unsplash.com/es/@rubaitulazad?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Rubaitul Azad&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/s/photos/drupal?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/span&gt;
</content>
  </entry>
</feed>
