![添加字典定义](https://linux22.com/image/272539/%E6%B7%BB%E5%8A%A0%E5%AD%97%E5%85%B8%E5%AE%9A%E4%B9%89.png)
有人知道支持字典定义的软件包吗?我在想这样的事情:
来源:Luscombe 等人(2001),《医学信息学年鉴》。
A)最简单的方法可能是自己输入并粘贴到 parbox 中
B)更好的是能够从字典文件中链接它
C)更好的方法是将其链接起来,然后使用正确的格式调用它
答案1
我不知道包,但我确实写了几行代码,最后将作为可编译的示例给出。首先简要解释一下它的功能:
- 根据需要,您将拥有一个可以输入各种词典定义的数据库。格式为:
\dictdef[prefix=<>, caption=<>]{Def'ed Term}{Dictionary}{Def' text}
,其中前缀键是条目前的设置信息,标题键允许您为定义提供替代名称。在定义文本本身中,您可以使用 来\dictemph{<some text>}
突出显示定义的单词(如果需要)。 - 用 声明字典的简写
\dictshorthand{<shorthand>}{<full name>}
。 - 您可以通过调用在文档主体中包含定义
\dictcite{Dictionary}{Term}
。 - 您可以使用 来影响样式
\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}.}