添加字典定义

添加字典定义

有人知道支持字典定义的软件包吗?我在想这样的事情:

在此处输入图片描述

来源:Luscombe 等人(2001),《医学信息学年鉴》。

A)最简单的方法可能是自己输入并粘贴到 parbox 中

B)更好的是能够从字典文件中链接它

C)更好的方法是将其链接起来,然后使用正确的格式调用它

答案1

我不知道包,但我确实写了几行代码,最后将作为可编译的示例给出。首先简要解释一下它的功能:

  1. 根据需要,您将拥有一个可以输入各种词典定义的数据库。格式为:\dictdef[prefix=<>, caption=<>]{Def'ed Term}{Dictionary}{Def' text},其中前缀键是条目前的设置信息,标题键允许您为定义提供替代名称。在定义文本本身中,您可以使用 来\dictemph{<some text>}突出显示定义的单词(如果需要)。
  2. 用 声明字典的简写\dictshorthand{<shorthand>}{<full name>}
  3. 您可以通过调用在文档主体中包含定义\dictcite{Dictionary}{Term}
  4. 您可以使用 来影响样式\dictsetup{defsep=<>, dictwidth=<>, dictskip=<>, prefixfont=<>, notefont=<>, dictemph=<>, alignment=<>, note=<>}。如果键不是自解释的,只需发表评论即可。(请注意,所有键都将采用符合 LaTeX 的长度声明或宏名称 - 保留转义字符,最后一个除外,它们可以取值中/右/左(用于“对齐”)或布尔值(真假'用于注释')。)

代码

    \documentclass{article}
    \usepackage{keyval}          %Required for the solution
    \usepackage{etoolbox}        %idem
    \usepackage{ulem}            %idem
    \usepackage{csquotes,lipsum}

    \makeatletter
    \newif\if@DICT@note
      \@DICT@notetrue
    \let\DICT@defsep=:
    \let\DICT@prefixfont=\itshape
    \let\DICT@termfont=\bfseries
    \let\DICT@notefont=\itshape
    \let\DICT@alignment\raggedright
    \let\dictemph=\uline
    \newlength{\dictskip}
    \newlength{\dictwidth}
    \newlength{\DICT@innerwidth}
      \setlength{\dictskip}{1em}
      \setlength{\dictwidth}{\textwidth}
      \AtBeginDocument{%
        \addtolength{\dictwidth}{-7pt}
        \setlength{\DICT@innerwidth}{\dictwidth}
        \addtolength{\DICT@innerwidth}{-.5em}
      }
    \define@key{dictsetup}{defsep}{\gdef\DICT@defsep{#1}}
    \define@key{dictsetup}{prefixfont}{\expandafter\let\csname DICT@prefixfont\expandafter\endcsname\csname #1\endcsname}
    \define@key{dictsetup}{notefont}{\expandafter\let\csname DICT@notefont\expandafter\endcsname\csname #1\endcsname}
    \define@key{dictsetup}{dictemph}{\expandafter\let\csname dictemph\expandafter\endcsname\csname #1\endcsname}
    \define@key{dictsetup}{alignment}{%
      \def\@tempa{#1}
      \ifdefstring{\@tempa}{center}
        {\let\DICT@alignment\centering}{%
        \ifdefstring{\@tempa}{left}
          {\let\DICT@alignment\raggedright}{%
          \ifdefstring{\@tempa}{right}
            {\let\DICT@alignment\raggedleft}{%
              \@latex@error{The option #1 does not exist for the alignment-key}\@ehc
            }
          }
        }
      }
    \define@key{dictsetup}{note}{%
      \def\@tempa{#1}
      \ifdefstring{\@tempa}{true}
        {\@DICT@notetrue}{%
        \ifdefstring{\@tempa}{false}
          {\@DICT@notefalse}{
            \@latex@warning{The note-key does only accept boolean values}\@ehc
          }    
        }
      }
    \define@key{dictsetup}{dictskip}{\setlength{\dictskip}{#1}}
    \define@key{dictsetup}{dictwidth}{\setlength{\dictwidth}{#1}}
      \newcommand{\dictsetup}[1]{\setkeys{dictsetup}{#1}}
    \define@key{dict}{caption}{\gdef\DICT@caption{#1}}
    \define@key{dict}{prefix}{\gdef\DICT@prefix{{(\DICT@prefixfont #1)}}}
    %\define@key{dict}{label}{\label{dict:#1}}
      \newcommand{\dictshorthand}[2]{\@namedef{DICT@#1@sh}{#2}}
    \newcommand{\dictdef}[4][]{%
      \setkeys{dict}{#1}
        \expandafter\let\csname #3#2caption\endcsname\DICT@caption
        \expandafter\let\csname #3#2prefix\endcsname\DICT@prefix
        \expandafter\gdef\csname #3@#2\endcsname{#2}
        \expandafter\gdef\csname #3#2body\endcsname{#4}
      \expandafter\gdef\csname DICT@#3#2\endcsname{%
        \ifcsname #3#2prefix\endcsname\protect\@nameuse{#3#2prefix}\space\fi
        \ifcsname #3#2caption\endcsname
          \protect\@nameuse{#3#2caption}
        \else
          {\DICT@termfont\protect\@nameuse{#3@#2}}
        \fi
        \unskip\DICT@defsep\space
        \protect\@nameuse{#3#2body}
      }
    }
    \newcommand*{\dictcite}[2]{%
      \par\vskip\dictskip
      \vbox{
      \DICT@alignment
      \par\noindent\fbox{\parbox{\dictwidth}{\centering\parbox{\DICT@innerwidth}{\@nameuse{DICT@#1#2}}}}\par
      \if@DICT@note{\DICT@notefont\smallskip \noindent(\submsntext\space\@nameuse{DICT@#1@sh})\par}\fi
      }
    }
    \newcommand{\submsntext}{As submitted to the}
    \newcommand{\dictlibrary}[1]{\input{#1.ddx}}
    \makeatother

    %%%%%%%%%%%%%%%%%%%%%
    %A small test
    %%%%%%%%%%%%%%%%%%%%%

    %Uncomment the next line to see the style changes caused by \dictsetup
    %\dictsetup{defsep={.}, dictwidth=10cm, dictskip=2em, prefixfont=scshape, notefont=sffamily, dictemph=textit, alignment=center}
    \dictshorthand{OED}{Oxford English Dictionary}
    \dictlibrary{mylib}

    \begin{document}
    \lipsum[1-2]%to visualize the skip before the dictionary definition
    \dictcite{OED}{Bioinformatics}
    \end{document}

最后但并非最不重要的是数据库mylib.ddx(我选择这个文件扩展名是为了添加一个脚本来更轻松地处理数据库。):

\dictdef[prefix=Molecular, caption=\textbf{Bio}-Informatics]{Bioinformatics}{OED}
{Bioinformatics is conceptualising biology in terms of molecules (in the sense of physical chemistry) and applying \enquote{\dictemph{informatics techniques}} (derived from disciplines such as applied maths, computer science and statistics) to \dictemph{understand} and \dictemph{organise} the \dictemph{information} associated with these molecules, on a \dictemph{large scale}. In short, bioinformatics is a management information system for molecular biology and has many \dictemph{partial applications}.}

输出

在此处输入图片描述

相关内容