在 LaTeX 中表示语言文本注释

在 LaTeX 中表示语言文本注释

我正在写一篇文档,描述英语中观点短语的语义,为此,我将注释特定文本范围,使其在观点中具有特定的语义功能。到目前为止,我的结果看起来像这样(下面是排版每个文本的 TeX 代码)。

示例 #31

\enumsentence{
    \target{The Lost World}
    was a 
    \comparator{\attitude{better}}
    \superordinate[1]{book}
    \comparatorthan{than}
    \superordinate[2]{movie}.
}

示例 #34

\enumsentence{
    \evaluator{I} thought
    \target[1]{they} were 
    \comparator{less} \attitude{controversial} \comparatorthan{than}
    \target[2]{the ones I mentioned above}.
}

示例 #42

\enumsentence{
    \target{A real rav muvhak ends up knowing you very well,
    very intimately one might say} 
    - in a way that I am not sure is actually 
    \attitude{very appropriate} 
    or easy to negotiate 
    \aspect{when the sexes differ}.
}

不同的注释命令\target\attitude\aspect\superordinate\comparatorthan都被定义为将格式设置为斜体或粗体斜体文本,将注释的文本括在括号中,并将注释名称放在括号外的下标中。

问题是我不太喜欢这种表示法。下标注释名称使得很难轻松识别句子中的单词,而较长的注释名称容易导致水平盒子过满。重叠的注释也不尽如人意。

所以我的请求是,你们能想出更有创意、更好的方式来呈现同样的信息吗?

注意:我最好只通过重新定义注释命令(而不是更改本文档中已有的 100 个左右示例中的命令)来实现这一点。此外,注释在某些情况下应该重叠,例如在示例 31 中,因此任何解决方案都需要考虑这一点。还请注意,在示例 42 中,其中一个注释必须换行。

答案1

我很喜欢这个问题,花了太多时间思考如何回答。我认为你需要一些好的符号来代替注释。然后你可以用它们来代替下标。另外,我认为下划线而不是括号会更好地衬托注释文本。

我发现一个\attitude有意义的句子下面有一个波浪下划线,其他句子下面都是普通下划线。绘制这些比较语句后,似乎态度才是语句的核心。此外,如果态度包含在比较器中,如更好的(这是我们说“更多好”的方式),这两种装饰和平共处。

对于\target,我想到了一个带点的圆圈(像目标符号)。在有多个目标的情况下,可选参数可以放在圆圈内,而不是点内。

因为\superordinate我认为一个盒子看起来很漂亮,就像\target一个可选参数的情况一样被修改了。

看起来\comparator\comparatorthan是相辅相成的,并且一起表示比较,所以我选择了<其中一个和>另一个。

因为\evaluator我选择用笑脸来表示一个人,但任何表示“代理人”的符号都可以。

因为\aspect我最初有,?因为这个方面似乎是这样的问题的答案什么时候?或者如何? 然后我将其改为*因为它在脚注中用来作出限定。

我不需要改变你已经使用的接口。这是我的实现:

\documentclass{article}
% TEX.SE \url{http://tex.stackexchange.com/q/17913/1402}
\usepackage{ulem}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{mathabx}
\usepackage{wasysym}

\newdimen\supsymwidth
\newdimen\supsymheight
\newdimen\tgtsymwidth
\setbox0=\hbox{$_\bigboxvoid$}
\supsymwidth=\wd0
\supsymheight=\ht0
\setbox0=\hbox{$_\bigovoid$}
\tgtsymwidth=\wd0

\newcommand{\supsym}[1]{%
  \mathrlap{\bigboxvoid}
  \raisebox{0.5pt}{\hbox to \supsymwidth{\hfill{\tiny#1}\hfill}}
}

\newcommand{\tgtsym}[1]{
  \mathrlap{\bigovoid}
  \raisebox{0.5pt}{\hbox to \supsymwidth{\hfill{\tiny#1}\hfill}}
}

\newcommand{\enumsentence}[1]{\begin{quotation}#1\end{quotation}}
\newcommand{\evaluator}[1]{\uline{#1}$_{\smiley}$}
\newcommand{\target}[2][\relax]{\uline{#2}$_{\ifx#1\relax\bigodot\else\tgtsym{#1}\fi}$}
\newcommand{\comparator}[1]{#1$_{<}$}
\newcommand{\comparatorthan}[1]{#1$_{>}$}
\newcommand{\superordinate}[2][\relax]{#2$_{\ifx#1\relax\bigovoid\else\supsym{#1}\fi}$}
\newcommand{\attitude}[1]{\uwave{#1}}
\newcommand{\aspect}[1]{\uline{#1}$_{\ast}$}

\begin{document}

\enumsentence{
    \target{The Lost World}
    was a 
    \comparator{\attitude{better}}
    \superordinate[1]{book}
    \comparatorthan{than}
    \superordinate[2]{movie}.
}

\enumsentence{
    \evaluator{I} thought
    \target[1]{they} were 
    \comparator{less} \attitude{controversial} \comparatorthan{than}
    \target[2]{the ones I mentioned above}.
}

\enumsentence{
    \target{A real rav muvhak ends up knowing you very well,
    very intimately one might say}---in a way that I am not sure is actually 
    \attitude{very appropriate} 
    or easy to negotiate 
    \aspect{when the sexes differ}.
}

\end{document}

示例代码输出

我也想过用图表tikz来表达这些观点,但这不是你想要的。也许下次再给出其他答案。:-)

答案2

人们可以认为您所描述的是间隔,并且间隔有自己的数学符号可供您借鉴。

例如,在上个世纪和本世纪初期,间隔的排版如下:

在此处输入图片描述

在更现代的书籍中,它们的排版如下:

在此处输入图片描述

我认为您可以尝试这个想法并利用某种形式的旧式间隔符号来获得如下结果:

在此处输入图片描述

您可以使用不同类型的括号或注释来区分不同的情况:

一些示例代码:

\documentclass{article}
\usepackage{amsmath}
%%%%%%%% Special notation for intervals
\newlength{\intwidth}
\newcommand{\interval}[2]{\settowidth{\intwidth}{$#1\ #2$}\overset{|\!\rule[0.25ex]{\intwidth}{0.5pt}\!|}{#1\ #2}}
\newcommand{\linterval}[2]{\settowidth{\intwidth}{$#1\ #2$}\overset{|\!\rule[0.5ex]{\intwidth}{0.5pt}}{#1\ #2}}
\newcommand{\rinterval}[2]{\settowidth{\intwidth}{$#1\ #2$}\overset{\rule[0.5ex]{\intwidth}{0.5pt}\!|}{#1\ #2}}
%% For more modern notation 
\newcommand{\iinterval}[2]{[#1,#2]}
\newcommand{\llinterval}[2]{[#1,#2)}
\newcommand{\rrinterval}[2]{(#1,#2]}
\begin{document}


$\interval{a}{b}$

$\linterval{a}{b}$

$\rinterval{a}{b}$


$\iinterval{a}{b}$

$\llinterval{a}{b}$

$\rrinterval{a}{b}$


$\interval{\text{arbitrary}}{\text{text}}$ and some more $\interval{\text{other}}{\text{text}}$

\end{document}

我个人认为使用不同的颜色作为替代会非常令人困惑。

答案3

可能存在不止一种解决方案。如果我是你,我会使用背景颜色来标记注释,例如黄色表示目标,绿色表示比较器等等。如果注释重叠,则可以使用黄色背景和绿色字母。你可以在每页的页边空白处打印你的定义。

如果您不喜欢颜色,为什么不使用负片印刷,即黑色圆圈上的白色“t”作为“目标”的缩写?或者,想想 Linux Libertine,使用轮廓字体来标记您的文本(参见 libertineOutline.pdf)?

问候,亚历山大

答案4

感谢 Matthew Leingang 向我介绍该ulem软件包,使我能够找到一个适合自己的解决方案。

% Ordinarily, the \underline command doesn't wrap.
% Using ulem and the \useunder command lets the underlined text wrap the 
% way normal text does.
\usepackage[normalem]{ulem}
\useunder{\uline}{\annotationUnderlineFont}{\annotationUnderlineCommand}

% set up a length to keep track of how deep to subscript the
% annotation name. (Nested annotations need to have their names
% at different depths to keep the underline from one annotation
% from crossing out the name of another annotation.)
\newlength{\annotationdepth}       
\setlength{\annotationdepth}{-1ex} %starting depth
\newlength{\annotationdelta}       %use another length for the delta
\setlength{\annotationdelta}{2pt}  %so that it's configurable
\addtolength{\annotationdepth}{\annotationdelta}

\newcommand{\attitude}[1]{%
\addtolength{\annotationdepth}{-\annotationdelta}%
\raisebox{\annotationdepth}{\tiny attitude}%
\annotationUnderlineCommand{#1}%
\addtolength{\annotationdepth}{\annotationdelta}%
}%end of \attitude command

%other annotation commands are defined the same way as the \attitude 
%command

我最初的解决方案(问题中发布的解决方案)令人困惑的一件事是,我没有制作下标\tiny。即使我没有用下划线替换括号,改变这一点也有很大帮助。

之后,我把括号改成了下划线,这也使得句子更容易阅读,并且使得每个注释的确切范围更容易看到。

最后,将下标移动到注释的开头,可以让我更轻松地通过在注释的文本中添加连字符来控制换行。


请注意,我在此处发布的代码经过简化,重点关注格式,并避免由实际代码中的几件事引起的无关噪音:

  1. 更改下标名称格式的命令,以便强调在文档不同位置引入的某些注释(名称以粗体表示的注释)。

  2. \newannotation命令实际上基于同一模板为我定义所有不同的注释命令。

  3. 根据注释的可选参数的内容更改注释名称的文本的条件。

结果如下所示(在纸上看起来不太模糊)。

实施例31 实施例34 实施例42

相关内容