Use the_title_attribute()
to print the attribute. A post title might contain HTML, so you need the escaped content that this function returns.
Also suppress immediate print-out, because that will set the output in front of the echo
statement.
if ( is_singular( 'communications' ) ) {
$title = the_title_attribute( [ 'echo' => FALSE ] );
echo '<meta name="citation_title" content="' . $title . '" />' . PHP_EOL;
}
Another question is why your theme knows so much about the post type. Custom post types should always be registered in a plugin. So that code should go to the plugin too. This is how the result could look like:
add_action( 'wp_head', 'add_citation_title' );
function add_citation_title() {
if ( ! is_singular( 'communications' ) )
return;
$title = the_title_attribute( [ 'echo' => FALSE ] );
echo '<meta name="citation_title" content="' . $title . '" />' . PHP_EOL;
}