Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
log 값 출력 함수
2015.06.18 14:40
TeX에서 로그값을 출력하려면 어떻게 해야 할까요?
\log{2} 하면 0.3010을 내놓고 \log{3} 하면 0.4771을, \log{10} 하면 1을 내놓기를 바랍니다.
자연수에 대해서만 출력할 수 있으면 되고, 소수점 아래 두 자리 정도만 출력해도 괜찮습니다.
밑이 10인 로그가 아니라, 자연로그로 출력해도 괜찮습니다.
좋은 방법 없을까요?
댓글 14
-
JangNa
2015.06.18 15:19
-
yihoze
2015.06.18 15:21
(분하게도 늦었네요.)
\documentclass{minimal}
\usepackage{calculator}
\begin{document}
\LOG{2}{\sol} $\log 0.5=\sol$
\LOG[10]{2}{\sol} $\log_{10} 0.5=\sol$
\end{document}
-
JangNa
2015.06.18 15:25
\LOG 가 훨씬 간편한데요!!!
-
nanim
2015.06.18 15:37
expl3:
\documentclass{minimal}
\usepackage{xparse,expl3}
\ExplSyntaxOn
\def \expconst { \fp_eval:n { exp ( 1 ) } }
\NewDocumentCommand \mylog { m }
{
\fp_eval:n { round ( ln ( #1 ) / ln ( 10 ) , 4 ) }
}
\ExplSyntaxOff
%%% document
\mylog{2}
\mylog{3}
\mylog{\expconst} -
puzzlist
2015.06.18 17:27
허허허 expl3로는 정말 별 걸 다 할 수 있군요.
그런데 컴파일 하니 "Invalid operation fp_to_decimal(-inf)"라는 에러가 납니다. ㅠㅠ -
nanim
2015.06.18 17:31
테스트하신 소스를 보여주세요~
-
puzzlist
2015.06.18 18:16
아, 이렇게 질문에 기본이 안 돼 있어서야... 죄송합니다.
보여주신 방식이 잘 작동하기는 합니다. 그런데 이걸 tikz에서 좌표로 쓰려니 Invalid operation 어쩌구 하는 에러가 나네요.
-
nanim
2015.06.18 18:25
\node의 인자로 쓰이는 순간에 확장되어야 합니다.
다른 글타래에서도 비슷한 경우가 언급되었습니다만, 기본적으로 \NewDocumentCommand가 만드는 매크로는 no_expandable이기 때문에 이런 일이 벌어졌습니다.
해결책은...
(1) \mylog를 \DeclareExpandableDocumentCommand \mylog { m } 로 정의하는 거.
(2) expl3 함수로 만들어서 쓰는 거. 이 방법의 예제를 아래 보이겠습니다.
\ExplSyntaxOn
\cs_new:Npn \mylog:n #1
{
\fp_eval:n { round ( ln ( #1 ) / ln ( 10 ) , 4 ) }
}
\cs_set_eq:NN \mylog \mylog:n
\ExplSyntaxOff직접 관련은 없지만 xparse의 \(New|Declare)DocumentCommand가 정의하는 명령은 <document> level의 명령입니다. 즉, 본문에 셖여들어가서 원하는 출력을 보일 수 있으면 되는 것이지요. 그러나 여기서처럼 다른 함수에 인자로 전달된다든가, 그 결괏값으로 연산을 행한다든가 하는 것은 <document> level이라고 볼 수 없으므로, 이럴 경우에는 expl3의 함수로 정의하는 것이 좋겠습니다.
-
DohyunKim
2015.06.18 17:37
왜들 이러십니까. 텍더러 계산을 시키시다니요. 계산은 sage에게, 조판은 텍에게.
\documentclass{article}
\usepackage{sagetex}
\begin{document}
$ \log 2 = \sage{n(log(2))} $
$ \log_{10} 2 = \sage{n(log(2, 10))} $
\end{document} -
ischo
2015.06.18 19:07
\documentclass{minimal}\usepackage{pst-tools}\begin{document}\psPrintValue{2 log}\par\psPrintValue{3 log}\par\psPrintValue{10 log}\end{document}아... 위 질문을 다시 읽으니... log{2}처럼 하려면..\documentclass{minimal}\usepackage{pst-tools}\def\pzlog#1{\psPrintValue{#1 log}}\begin{document}\pzlog{2}\par\pzlog{3}\par\pzlog{10}\end{document}단, pstricks 코드는 tex의 입장에서는 zero-dimensional box를 만드는 데 불과하다는 점을 기억해야...결과를 담는 자리를 마련해주어야...[추가: 사용예]소수 넷째자리까지로 조정했습니다.\documentclass{oblivoir}\usepackage{pst-tools}\newcommand\pzlog[2][2.7]{\makebox[#1em][l]{\psPrintValue{#2 log 10000 mul truncate 10000 div}}}\begin{document}$\log 2=\pzlog[2.2]{2}$이고 $\log 3=\pzlog3$이다.$\log 6$은 얼마인가? [답: $\log 6=\pzlog[2.2]2+\pzlog3=\pzlog6$이다.]\end{document} -
nanim
2015.06.19 13:17
pgfmath: (어차피 tikz와 함께 쓸 거라면...)
\usepackage{multido}
\usepackage{tikz}%%%
\pgfkeys{/pgf/number format/.cd,fixed,precision=4}
\newcommand*\pgflog[1]{%
\pgfmathparse{ln(#1)/ln(10)}%
\pgfmathroundtozerofill{\pgfmathresult}\pgfmathresult
}
\def\test{$\i=\pgflog{\i}$\par}
\multido{\i=1+1}{20}{\test} -
puzzlist
2015.06.19 14:40
참 다양하고 멋진 방법들이 있네요.
잘 골라 쓰겠습니다. ^^ -
Progress
2015.06.19 18:50
저도 작성해둔 게 아까워서 올립니다.
무려 LaTeX 2.09(?) 시절에도 사용했다는 fp 패키지입니다.
% !TEX TS-program = arara
% arara: xelatex
% natural_log_table.tex
\documentclass[a4paper,9pt]{oblivoir}
\usepackage{fapapersize}
\usefapapersize{*,*,1in,*,20mm,15mm}
\usepackage{fp}
\usepackage{ifthen}
\usepackage{multicol}
\usepackage[mono=false]{libertine}
\usepackage[libertine]{newtxmath}
\setlength\parindent{0pt}
% the counter for the loop
\newcounter{mycount}
\setcounter{mycount}{0}
% the command that stores logarithms
\newcommand\natlogoft{}
\title{fp 패키지}
\author{Michael Mehlich}
\begin{document}
\maketitle
\verb!> texdoc fp!
\begin{multicols}{3}
{\sffamily\makebox[4em][r]{$\ln(x)$} \quad자연로그값}\\[-.5ex]
\rule{\columnwidth}{.1pt}\\
\whiledo{\value{mycount}<1000}{%
\stepcounter{mycount}\makebox[4em][r]{$\ln\themycount$}\quad % steps the counter and typesets the value of t
\FPln{\natlogoft}{\themycount}\natlogoft\\} % calculates Ln(t) and typsets it
\end{multicols}
\end{document}
(출처: http://www.latex-community.org/forum/viewtopic.php?f=5&t=9069)
-
ndh
2015.09.03 18:12
tikzmath로 해봤습니다.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{math}
\tikzmath{
function mylog (\x) {
return ln (\x) / ln (10);
};
real \a;
}
\def\yscale{5}
\newcommand\myloglog[1]{%
\tikzmath{ \a=mylog(#1); }
\node [anchor=south west,overlay,xshift=-6pt,yshift=-6pt]
at (#1,\a*\yscale) {\tikz\filldraw circle[radius=2pt];~{\a}};
}
\begin{document}
\begin{tikzpicture}
\draw [help lines] (0,0) grid (10,\yscale);
\foreach \x in {1,2,...,10}
\myloglog{\x};
\end{tikzpicture}
\end{document}
calculus 라는 패키지가 있습니다.
> texdoc calculus
참고
- http://goo.gl/qbnDPh
- http://goo.gl/8l2RhX