如何用 LaTeX 排版莫尔斯电码

如何用 LaTeX 排版莫尔斯电码

我正在写一篇有关摩尔斯电码历史的文章,但在打印点和虚线时遇到了困难(打印文档时它们会合并在一起)。

是否也可以编写一个宏,将摩尔斯电码映射到单词和字母?例如字母 a 是“.-”等。

答案1

这是一个与其他发布的解决方案略有不同的解决方案。

首先我们定义两个列表来保存莫尔斯电码。一个用于保存字母,另一个用于保存数字

\def\morselist{.-,-...,-.-.,-..,.,..-.,%
    --.,....,..,.---,-.-,.-..,%
    --,-.,---,.--.,--.-,.-.,%
    ...,-,..-,...-,.--,-..-,-.--,--..}

然后使用此列表为每个字母和数字创建宏。一旦完成,就可以解析任何单词并打印相应的摩尔斯符号。

\documentclass{article}
\usepackage{soul}
\newcounter{ct}
\begin{document}
\makeatletter

% the alphabet list
\def\morselist{.-,-...,-.-.,-..,.,..-.,%
--.,....,..,.---,-.-,.-..,%
--,-.,---,.--.,--.-,.-.,%
...,-,..-,...-,.--,-..-,-.--,--..}

% get the numbers 48-57
\def\morsenumbers{.----,..---,...--,....-,
.....,-....,--...,---..,----.,-----}

% letters
\setcounter{ct}{97}
\@for \i:=\morselist\do{%
  \texttt{\char\thect =\i}\par
  \def\MM{\i}%
  \expandafter\xdef\csname\thect @\endcsname{\MM}%
  \stepcounter{ct}%
}
% numbers
\setcounter{ct}{48}
\@for \i:=\morsenumbers \do{%
  \texttt{\char\thect =\i}\par
  \def\MM{\i}%
  \expandafter\xdef\csname\thect @\endcsname{\MM}%
  \stepcounter{ct}%
}

\def\printMorse#1{%
  \texttt{\@nameuse{\number`#1@}}
}

\def\getMorseWord@#1#2\relax{%
  \ifx\relax#2\relax
     #1=\printMorse{#1}
   \else
      #1=\printMorse{#1}%\par
      \getMorseWord@#2\relax
  \fi
 }

\def\getMorseWord#1{%
  \getMorseWord@ #1\relax
}

% type in the word you want printed in
% morse code here.
\getMorseWord{saltypen sos}
\makeatother
\end{document}

答案2

然后回答


更重要的是,如果您有 ttf 或 otf 格式的摩尔斯电码字体,您可以使用fontspec该字体:

% compile with lualatex or xelatex
\documentclass{article}
\usepackage{fontspec}

\newfontface\morse{Morse Code} % replace with the actual name of the font

\begin{document}
{\morse Some Text}
\end{document}

答案3

这是莫尔斯包;它有点旧,但似乎工作正常,尽管我不能确定,因为我对摩尔斯电码一无所知(除了它存在);一个小例子:

\documentclass[12pt]{article}
\usepackage{morse}

\newcommand\LatMor[1]{%
 the letter #1 is {\morse #1}}

\begin{document}

\LatMor{a}\LatMor{b}\LatMor{x}\LatMor{y}\LatMor{z}

{\morse M o r s e T e x t}

{\Large\morse  M o r s e T e x t}

\end{document}

可能您必须手动安装该软件包,但这似乎很容易;我只是做了测试,复制了我的工作目录中的所有文件,一切正常。

编辑:我用命令的定义更新了答案\LatMor

答案4

ConTeXt 有一个基于 lua 的模块用于莫尔斯电码。将其翻译成 LaTeX 应该很简单。

以下是一个示例用法:

\usemodule[morse]

\starttext
\Morse{This is some text in English that will be translated to Morse code}

\blank[big]

\MorseCode{—·—· ——— —· — · —··— —+—— —·— ·· ···—}
\stoptext

这使

在此处输入图片描述

相关内容