diff --git a/src/Statement.cc b/src/Statement.cc
index 42c9b1e4df607eea44f4bbae556e420d084c82fb..60513a8ac03f36a031fdc7acc763b6af68be745d 100644
--- a/src/Statement.cc
+++ b/src/Statement.cc
@@ -185,12 +185,22 @@ void
 OptionsList::writeOutputCommon(ostream& output, const string& option_group) const
 {
   // NOLINTBEGIN(clang-analyzer-core.CallAndMessage)
-  for (const auto& [name, val] : options)
-    std::visit(
-        [&]<class T>(const T& v) {
-          if constexpr (is_same_v<T, SymbolListVal>)
-            v.writeOutput(option_group + "." + name, output);
-          else
+  for (const auto &[name, val] : options)
+    auto name1 = name;
+    std::visit([&]<class T>(const T &v)
+    {
+      if constexpr(is_same_v<T, SymbolListVal>)
+        v.writeOutput(option_group + "." + name1, output);
+      else
+        {
+          output << option_group << "." << name1 << " = ";
+          if constexpr(is_same_v<T, NumVal> || is_same_v<T, DateVal>)
+            output << v;
+          else if constexpr(is_same_v<T, pair<string, string>>)
+            output << '[' << v.first << "; " << v.second << ']';
+          else if constexpr(is_same_v<T, StringVal>)
+            output << "'" << v << "'";
+          else if constexpr(is_same_v<T, vector<int>>)
             {
               output << option_group << "." << name << " = ";
               if constexpr (is_same_v<T, NumVal> || is_same_v<T, DateVal>)